view pkg/soap/erdms/service.go @ 3252:fccb28813159

client: wterlevel diagram: improved performance By not rendering points that are outside of the visible area of the chart, performance was significantly improved. But still the chart is not really very responsive and smooth when viewing large data sets.
author Markus Kottlaender <markus@intevation.de>
date Tue, 14 May 2019 12:24:14 +0200
parents f09f142239a5
children
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

package erdms

import (
	"encoding/xml"
	"time"

	"gemma.intevation.de/gemma/pkg/soap"
)

// adn (dgs goods) internal adn code (unnr + seqnr: to make each adn good unique)
type AdnCodeType string

// adn class and classifications codes
type AdnClassType string

// adn (dgs) labels applicable for a dgs good
type AdnLabelType string

// Older CBS (number) code (3 digits) use by statistics organisations (backw comp) but replaced by newer iso 3166 (2 letters).
type CbscountryCodeType string

// iso 6346 container type (code)
type ContIdType string

// containertype textual description
type ContNameType string

// indication (flag) wheater shiptype code is a single ship or a transport combination
type CombinationFlagType bool

// Country iso 3166 code (2 alpha)
type CountryCodeType string

// Country iso 3166 code (3 alpha)
type CountryCode3Type string

// Countryname type (name of the country)
type CountryNameType string

// Country iso 3166 numcode (3 digits)
type CountryIsoNumType string

// techn directive craft type code (eu hull db)
type CraftTypeType string

// inland cones 0,1,2,3,V (as used for DGS goods and cones calculations)
type ConesType string

const (
	ConesType0 ConesType = "0"

	ConesType1 ConesType = "1"

	ConesType2 ConesType = "2"

	ConesType3 ConesType = "3"

	ConesTypeV ConesType = "V"
)

// dimension type (length, width, draught etc) in [cm] (no decimals)
type DimType int64

// older 2 digit dvk shiptype code (replaced by unrec
type DvkTypeType string

// record erased (not actual anymore) flag type
type ErasedType bool

// eri location code type as used for eri_locations
type ErilocCodeType string

// eri location name type as used in eri_locations
type ErilocNameType string

// flags 0,B,V (dang goods indication seagoing vessels)
type FlagsType string

const (
	FlagsType0 FlagsType = "0"

	FlagsTypeB FlagsType = "B"

	FlagsTypeV FlagsType = "V"
)

// fairway code (text)
type FwCodeType string

// ADN dangerous goodnames, description
type GoodDgsNameType string

// non-dangerous goodnames, description
type GoodNameType string

// ADN dangerous good synonym name,description
type GoodSynType string

// HS code as used by customs
type HsCodeType string

// hectometre code (hectomere in [hm] (no decimals) on the fairway)
type KmCodeType string

// lastupdate, last modification date time of this record
type LastupdateType time.Time

const LastupdateTypeFormat = "2006-01-02T15:04:05.999Z07:00"

func (lut *LastupdateType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
	var value string
	if err := d.DecodeElement(&value, &start); err != nil {
		return err
	}
	t, err := time.Parse(LastupdateTypeFormat, value)
	if err != nil {
		return err
	}
	*lut = LastupdateType(t)
	return nil
}

// one of the supported languages (basic and additional set), based on ISO 639-1
type LangType string

const (
	LangTypeXX LangType = "%%"

	LangTypeLc LangType = "lc"

	LangTypeNl LangType = "nl"

	LangTypeDe LangType = "de"

	LangTypeFr LangType = "fr"

	LangTypeEn LangType = "en"

	LangTypeBg LangType = "bg"

	LangTypeCs LangType = "cs"

	LangTypeDa LangType = "da"

	LangTypeEl LangType = "el"

	LangTypeEs LangType = "es"

	LangTypeEt LangType = "et"

	LangTypeFi LangType = "fi"

	LangTypeHu LangType = "hu"

	LangTypeIt LangType = "it"

	LangTypeLt LangType = "lt"

	LangTypeLv LangType = "lv"

	LangTypePl LangType = "pl"

	LangTypePt LangType = "pt"

	LangTypeRo LangType = "ro"

	LangTypeSk LangType = "sk"

	LangTypeSl LangType = "sl"

	LangTypeSv LangType = "sv"

	LangTypeHr LangType = "hr"

	LangTypeRu LangType = "ru"

	LangTypeSr LangType = "sr"
)

// lat long (WGS decimal [.] coordinates) coordinate type
type LatlonType float64

// un locode (2 country + 3 location code)
type LoCodeType string

// Number of possible (departure) exist (routes) for a location
type LocExitsType int32

// VTS/IVS (code)name active in certain area and acting as a reporting point (when departing from that location)
type LocVtsCodeType string

// location type, terminal type (a number indicating type of location,terminal)
type LocTypeType int32

// lloyds flag code for a certain country (seagoing)
type LloydsflagType string

// NST code (corresponing nst2007 EU statistics codes for goods).
type NstCodeType string

// NtS (Notices to Skippers) code/Value datatype
type NtsCodeType string

// NtS name/description (belonging to a ntsCode) datatype
type NtsNameType string

// NtS subtype (sub data type, there are several nts tables)
type NtstypeType string

// ADN dangerous good packing group I, II, III
type PackGrpType string

// UN rec 21 inner package code
type PackIdType string

// Un rec 21 inner package name/description
type PackNameType string

// Password type (belonging to a user, used to identify a user and its role and home country).
type PasswordType string

// quay type (terminals), indicating quay nrs/id's
type QuayType string

// record counter (nr of records available or in a set)
type RecCountType int64

// reftype Type (reftool data reftype, such as: risidx, eri_location, eri_hscode, nts_data)
type ReftypeType string

const (
	ReftypeTypeRis_idx ReftypeType = "ris_idx"

	ReftypeTypeEri_location ReftypeType = "eri_location"

	ReftypeTypeEri_hscode ReftypeType = "eri_hscode"

	ReftypeTypeEri_adncode ReftypeType = "eri_adncode"

	ReftypeTypeEri_conttype ReftypeType = "eri_conttype"

	ReftypeTypeEri_packtype ReftypeType = "eri_packtype"

	ReftypeTypeEri_shiptype ReftypeType = "eri_shiptype"

	ReftypeTypeEri_country ReftypeType = "eri_country"

	ReftypeTypeNts_barrage ReftypeType = "nts_barrage"

	ReftypeTypeNts_communication ReftypeType = "nts_communication"

	ReftypeTypeNts_country ReftypeType = "nts_country"

	ReftypeTypeNts_direction ReftypeType = "nts_direction"

	ReftypeTypeNts_direction_max ReftypeType = "nts_direction_max"

	ReftypeTypeNts_direction_min ReftypeType = "nts_direction_min"

	ReftypeTypeNts_gui_labels ReftypeType = "nts_gui_labels"

	ReftypeTypeNts_ice_accessibility ReftypeType = "nts_ice_accessibility"

	ReftypeTypeNts_ice_condition ReftypeType = "nts_ice_condition"

	ReftypeTypeNts_ice_classification ReftypeType = "nts_ice_classification"

	ReftypeTypeNts_ice_situation ReftypeType = "nts_ice_situation"

	ReftypeTypeNts_indication ReftypeType = "nts_indication"

	ReftypeTypeNts_interval ReftypeType = "nts_interval"

	ReftypeTypeNts_language ReftypeType = "nts_language"

	ReftypeTypeNts_limitation ReftypeType = "nts_limitation"

	ReftypeTypeNts_measure ReftypeType = "nts_measure"

	ReftypeTypeNts_position ReftypeType = "nts_position"

	ReftypeTypeNts_reason ReftypeType = "nts_reason"

	ReftypeTypeNts_reference ReftypeType = "nts_reference"

	ReftypeTypeNts_regime ReftypeType = "nts_regime"

	ReftypeTypeNts_reporting ReftypeType = "nts_reporting"

	ReftypeTypeNts_subject ReftypeType = "nts_subject"

	ReftypeTypeNts_tag ReftypeType = "nts_tag"

	ReftypeTypeNts_target_group ReftypeType = "nts_target_group"

	ReftypeTypeNts_type ReftypeType = "nts_type"

	ReftypeTypeNts_weather_category ReftypeType = "nts_weather_category"

	ReftypeTypeNts_weather_class ReftypeType = "nts_weather_class"

	ReftypeTypeNts_weather_direction ReftypeType = "nts_weather_direction"

	ReftypeTypeNts_weather_item ReftypeType = "nts_weather_item"
)

// RefData record version numbering (automaically, starts with 1 and increments on updates, requesting version 0=dont care)
type RefrecVersionType int64

// remarks string (remarks about the maintance of a record or any other remarks)
type RemarksType string

// ris index (ISRS) code type (full ris index code)
type RisCodeType string

// locationames as used in the ris index
type RislocNameType string

// ris idx related ENC's type as used in ris idx (list of ENC id's)
type RisrelencType string

// ris idx object code type (single code for a junction, termcode etc padded), subpart of the ris idx.
type RisobjCodeType string

// ris idx communication information TXTDSC
type RiscomminfoType string

// ris idx object function code type (junction, berths etc)
type RisobjfuncType string

// ris idx section node id
type RissectnodeType string

// ris idx national Gauge Code type (can be utilised to store any national coding/id/link for gauges)
type RisgaugeidType string

// ris idx applicability from /  to km (in hectometres (no decimals))
type RisapplikmType int64

// ris idx reference level code (indicating the ref level)
type RisreflevelcodeType string

// ris idx reference level value [cm]
type RisreflevelvalueType int64

// ris idx geod reference
type RisgeodrefType string

// ris idx zero point [cm]
type RiszeropointType int64

// ris idx category of time schedule (cattab)
type RiscatoftimeschedType string

// ris idx for ship type
type RisforshiptypeType string

// ris idx use of ship useshp
type RisuseofshipType string

// ris idx link to external XML file
type RislinkextxmlType string

// UNrec 28 shiptype (4 digits)
type ShipTypeType string

// shiptype name (textual) description
type ShiptypeNameType string

// source string, to specify the source of this record/data or the update.
type SourceType string

// ADN signal code (to group dgs for cones/flags calculations)
type SignalCodeType string

// terminal code type (remark: termcode is the only part of eri locs with variable length, historical reasons).
type TermCodeType string

// unlocode countrycode part (first 2 of unlocode) as used in ris idx
type UnlocCCType string

// unlocode location code part (last 3 of unlocode) as used in ris idx
type UnlocLCType string

// UN nr (4 digits) adn nr for identifying ADN dangerous goods (according CCNR)
type UnnrType string

// reftool username(reftool accountname) type, to idetify a user and its role.
type UserNameType string

// cargo weight type, integer nr (units [tons], [kg]) depending on element)
type WeightType int64

// adn warning (dgs) card id
type WarnIdType string

// adn warning card
type WarnCardType string

type MatchByCode struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCode"`

	*MatchByCodeType
}

type MatchByCodeResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeResponse"`

	*MatchByCodeResponseType
}

type MatchByName struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByName"`

	*MatchByNameType
}

type MatchByNameResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameResponse"`

	*MatchByNameResponseType
}

type GetDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXML"`

	*GetDataXMLType
}

type GetDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLResponse"`

	*GetDataXMLResponseType
}

type GetMutations struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutations"`

	*GetMutationsType
}

type GetMutationsResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsResponse"`

	*GetMutationsResponseType
}

type GetRisDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXML"`

	*GetRisDataXMLType
}

type GetRisDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLResponse"`

	*GetRisDataXMLResponseType
}

type MutateDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXML"`

	*MutateDataXMLType
}

type MutateDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLResponse"`

	*MutateDataXMLResponseType
}

type RequestMutationXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXML"`

	*RequestMutationXMLType
}

type RequestMutationXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLResponse"`

	*RequestMutationXMLResponseType
}

type MatchByCodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Code string `xml:"code,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type MatchByCodeResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeResponseType"`

	// Indicates how many records are available/were found
	// (due limitations less records can be returned/available in the resulting xml structure).
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type MatchByNameType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Lang *LangType `xml:"lang,omitempty"`

	Name string `xml:"name,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type MatchByNameResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameResponseType"`

	// Indicates how many records are available/were found
	// (due limitations less records can be returned/available in the resulting xml structure).
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type GetMutationsType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	// from, to in datetime format in UTC time
	FromDate time.Time `xml:"fromDate,omitempty"`

	ToDate time.Time `xml:"toDate,omitempty"`
}

type GetMutationsResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsResponseType"`

	// Indicate how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type GetDataXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Subcode string `xml:"subcode,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type GetDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLResponseType"`

	// Indicates how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

// NoNS is a helper type to allow string tags without a namespace.
type NoNS struct {
	NS   string `xml:"xmlns,attr"`
	Text string `xml:",chardata"`
}

type GetRisDataXMLType struct {
	// XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLType"`

	//Subcode string `xml:"subcode,omitempty"`
	Subcode NoNS `xml:"subcode,omitempty"`

	Funcode NoNS `xml:"funcode,omitempty"`

	Version *RefrecVersionType `xml:"http://rwsreftool/ version,omitempty"`
}

type GetRisDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLResponseType"`

	// Indicates how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RisdataReturn []*Ris_idxType `xml:"risdataReturn,omitempty"`
}

type MutateDataXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLType"`

	Username *UserNameType `xml:"username,omitempty"`

	Password *PasswordType `xml:"password,omitempty"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	RefData *RefdataReturnType `xml:"refData,omitempty"`
}

type MutateDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLResponseType"`

	*StatReturnType
}

type RequestMutationXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLType"`

	Username *UserNameType `xml:"username,omitempty"`

	Password *PasswordType `xml:"password,omitempty"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	InUserList bool `xml:"inUserList,omitempty"`

	RefDataReqMut *RefdataReqMutType `xml:"refDataReqMut,omitempty"`
}

type RequestMutationXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLResponseType"`

	*StatReturnType
}

type ExceptionType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ exception"`

	// exception code
	Exception int32 `xml:"exception,omitempty"`

	// exception message in English
	Message string `xml:"message,omitempty"`
}

type RefdataReturnType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ refdataReturnType"`

	Reftype struct {
		Value *ReftypeType
	} `xml:"reftype,omitempty"`

	Ris_idx *Ris_idxType `xml:"ris_idx,omitempty"`

	Eri_location *Eri_locationType `xml:"eri_location,omitempty"`

	Eri_hscode *Eri_hscodeType `xml:"eri_hscode,omitempty"`

	Eri_adncode struct {
		*Eri_adncodeType
	} `xml:"eri_adncode,omitempty"`

	Eri_conttype *Eri_conttypeType `xml:"eri_conttype,omitempty"`

	Eri_packtype *Eri_packtypeType `xml:"eri_packtype,omitempty"`

	Eri_shiptype *Eri_shiptypeType `xml:"eri_shiptype,omitempty"`

	Eri_country *Eri_countryType `xml:"eri_country,omitempty"`

	// NtS element is only available in the return refdata structure.
	// It is not available in the Req Mutation datastructure because we can not mutate nts data (not allowed)!
	Nts_data *Nts_dataType `xml:"nts_data,omitempty"`
}

type RefdataReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ refdataReqMutType"`

	// BE SURE to edit the basic (simple)types, DONT edit any of the subelements from here!
	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Ris_idx *Ris_idxReqMutType `xml:"ris_idx,omitempty"`

	Eri_location *Eri_locationReqMutType `xml:"eri_location,omitempty"`

	Eri_hscode *Eri_hscodeReqMutType `xml:"eri_hscode,omitempty"`

	Eri_adncode *Eri_adncodeReqMutType `xml:"eri_adncode,omitempty"`

	Eri_conttype *Eri_conttypeReqMutType `xml:"eri_conttype,omitempty"`

	Eri_packtype *Eri_packtypeReqMutType `xml:"eri_packtype,omitempty"`

	Eri_shiptype *Eri_shiptypeReqMutType `xml:"eri_shiptype,omitempty"`

	Eri_country *Eri_countryReqMutType `xml:"eri_country,omitempty"`
}

type StatReturnType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ statReturnType"`

	// 0=ok, 1=warning, 2=error
	Err int32 `xml:"err,omitempty"`

	Message struct {
	} `xml:"message,omitempty"`
}

type Ris_idxType struct {
	//XMLName xml.Name `xml:"http://rwsreftool/ ris_idxType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	RisidxCode *RisCodeType `xml:"risidxCode,omitempty"`

	CodeOld *RisCodeType `xml:"codeOld,omitempty"`

	UnlocCC *UnlocCCType `xml:"unlocCC,omitempty"`

	UnlocLC *UnlocLCType `xml:"unlocLC,omitempty"`

	WwsectCode *FwCodeType `xml:"wwsectCode,omitempty"`

	Objcode *RisobjCodeType `xml:"objcode,omitempty"`

	Hectomt *KmCodeType `xml:"hectomt,omitempty"`

	Objfunc *RisobjfuncType `xml:"objfunc,omitempty"`

	Objname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"objname,omitempty"`

	Locname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"locname,omitempty"`

	Wwname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"wwname,omitempty"`

	Routename struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"routename,omitempty"`

	Relrisindex *RisCodeType `xml:"relrisindex,omitempty"`

	Sectionnode *RissectnodeType `xml:"sectionnode,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	Relenc *RisrelencType `xml:"relenc,omitempty"`

	Comminfo *RiscomminfoType `xml:"comminfo,omitempty"`

	Gaugeid *RisgaugeidType `xml:"gaugeid,omitempty"`

	Vesselconvlength *DimType `xml:"vesselconvlength,omitempty"`

	Vesselconvbreadth *DimType `xml:"vesselconvbreadth,omitempty"`

	Vesselconvdraught *DimType `xml:"vesselconvdraught,omitempty"`

	Vesselconvairdraught *DimType `xml:"vesselconvairdraught,omitempty"`

	Availablelength *DimType `xml:"availablelength,omitempty"`

	Clearancewidth *DimType `xml:"clearancewidth,omitempty"`

	Availabledepth *DimType `xml:"availabledepth,omitempty"`

	Clearanceheight *DimType `xml:"clearanceheight,omitempty"`

	Applicabilityfromkm *RisapplikmType `xml:"applicabilityfromkm,omitempty"`

	Applicabilitytokm *RisapplikmType `xml:"applicabilitytokm,omitempty"`

	Reflevel1code *RisreflevelcodeType `xml:"reflevel1code,omitempty"`

	Reflevel1value *RisreflevelvalueType `xml:"reflevel1value,omitempty"`

	Reflevel2code *RisreflevelcodeType `xml:"reflevel2code,omitempty"`

	Reflevel2value *RisreflevelvalueType `xml:"reflevel2value,omitempty"`

	Reflevel3code *RisreflevelcodeType `xml:"reflevel3code,omitempty"`

	Reflevel3value *RisreflevelvalueType `xml:"reflevel3value,omitempty"`

	Zeropoint *RiszeropointType `xml:"zeropoint,omitempty"`

	Geodref *RisgeodrefType `xml:"geodref,omitempty"`

	Catoftimesched *RiscatoftimeschedType `xml:"catoftimesched,omitempty"`

	Forshiptype *RisforshiptypeType `xml:"forshiptype,omitempty"`

	Foruseofship *RisuseofshipType `xml:"foruseofship,omitempty"`

	LnktoextXMfiletimesched *RislinkextxmlType `xml:"lnktoextXMfiletimesched,omitempty"`

	LnktoextXMfilepastime *RislinkextxmlType `xml:"lnktoextXMfilepastime,omitempty"`

	Vesselconvlength2 *DimType `xml:"vesselconvlength2,omitempty"`

	Vesselconvbreadth2 *DimType `xml:"vesselconvbreadth2,omitempty"`

	Vesselconvdraught2 *DimType `xml:"vesselconvdraught2,omitempty"`

	Vesselconvairdraught2 *DimType `xml:"vesselconvairdraught2,omitempty"`

	Availablelength2 *DimType `xml:"availablelength2,omitempty"`

	Clearancewidth2 *DimType `xml:"clearancewidth2,omitempty"`

	Availabledepth2 *DimType `xml:"availabledepth2,omitempty"`

	Clearanceheight2 *DimType `xml:"clearanceheight2,omitempty"`

	Vesselconvlength3 *DimType `xml:"vesselconvlength3,omitempty"`

	Vesselconvbreadth3 *DimType `xml:"vesselconvbreadth3,omitempty"`

	Vesselconvdraught3 *DimType `xml:"vesselconvdraught3,omitempty"`

	Vesselconvairdraught3 *DimType `xml:"vesselconvairdraught3,omitempty"`

	Availablelength3 *DimType `xml:"availablelength3,omitempty"`

	Clearancewidth3 *DimType `xml:"clearancewidth3,omitempty"`

	Availabledepth3 *DimType `xml:"availabledepth3,omitempty"`

	Clearanceheight3 *DimType `xml:"clearanceheight3,omitempty"`

	Catoftimesched2 *RiscatoftimeschedType `xml:"catoftimesched2,omitempty"`

	Forshiptype2 *RisforshiptypeType `xml:"forshiptype2,omitempty"`

	Foruseofship2 *RisuseofshipType `xml:"foruseofship2,omitempty"`

	LnktoextXMfiletimesched2 *RislinkextxmlType `xml:"lnktoextXMfiletimesched2,omitempty"`

	LnktoextXMfilepastime2 *RislinkextxmlType `xml:"lnktoextXMfilepastime2,omitempty"`

	Catoftimesched3 *RiscatoftimeschedType `xml:"catoftimesched3,omitempty"`

	Forshiptype3 *RisforshiptypeType `xml:"forshiptype3,omitempty"`

	Foruseofship3 *RisuseofshipType `xml:"foruseofship3,omitempty"`

	LnktoextXMfiletimesched3 *RislinkextxmlType `xml:"lnktoextXMfiletimesched3,omitempty"`

	LnktoextXMfilepastime3 *RislinkextxmlType `xml:"lnktoextXMfilepastime3,omitempty"`

	Startdate *LastupdateType `xml:"startdate,omitempty"`

	Enddate *LastupdateType `xml:"enddate,omitempty"`

	Infodate *LastupdateType `xml:"infodate,omitempty"`

	// specific Ris idx remarks, reasons for change (descriptions as received with the ris idx)
	RisidxRemarks *RemarksType `xml:"risidxRemarks,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	// remarks regarding the maintance of the ris idx
	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_locationType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_locationType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ErilocCode *ErilocCodeType `xml:"erilocCode,omitempty"`

	CodeOld *ErilocCodeType `xml:"codeOld,omitempty"`

	RisCode *RisCodeType `xml:"risCode,omitempty"`

	LoCode *LoCodeType `xml:"loCode,omitempty"`

	FwCode *FwCodeType `xml:"fwCode,omitempty"`

	TermCode *TermCodeType `xml:"termCode,omitempty"`

	KmCode *KmCodeType `xml:"kmCode,omitempty"`

	Name struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"name,omitempty"`

	LocType *LocTypeType `xml:"locType,omitempty"`

	Termname struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"termname,omitempty"`

	QuayFrom *QuayType `xml:"quayFrom,omitempty"`

	QuayTo *QuayType `xml:"quayTo,omitempty"`

	TermType *LocTypeType `xml:"termType,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	// VTS/IVS (code) acting as the default reporting (receiving) point (when departing from this llocation)
	IvsVTSCode *LocVtsCodeType `xml:"ivsVTSCode,omitempty"`

	// Nr of possible exits (routes) when departing from this location >1 means a reporting or routepoint has to be specified.
	Exits *LocExitsType `xml:"exits,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_hscodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_hscodeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	CodeOld *HsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *GoodNameType `xml:"Loc,omitempty"`

		NL *GoodNameType `xml:"NL,omitempty"`

		DE *GoodNameType `xml:"DE,omitempty"`

		FR *GoodNameType `xml:"FR,omitempty"`

		EN *GoodNameType `xml:"EN,omitempty"`

		BG *GoodNameType `xml:"BG,omitempty"`

		CS *GoodNameType `xml:"CS,omitempty"`

		DA *GoodNameType `xml:"DA,omitempty"`

		EL *GoodNameType `xml:"EL,omitempty"`

		ES *GoodNameType `xml:"ES,omitempty"`

		ET *GoodNameType `xml:"ET,omitempty"`

		FI *GoodNameType `xml:"FI,omitempty"`

		HU *GoodNameType `xml:"HU,omitempty"`

		IT *GoodNameType `xml:"IT,omitempty"`

		LT *GoodNameType `xml:"LT,omitempty"`

		LV *GoodNameType `xml:"LV,omitempty"`

		PL *GoodNameType `xml:"PL,omitempty"`

		PT *GoodNameType `xml:"PT,omitempty"`

		RO *GoodNameType `xml:"RO,omitempty"`

		SK *GoodNameType `xml:"SK,omitempty"`

		SL *GoodNameType `xml:"SL,omitempty"`

		SV *GoodNameType `xml:"SV,omitempty"`

		HR *GoodNameType `xml:"HR,omitempty"`

		RU *GoodNameType `xml:"RU,omitempty"`

		SR *GoodNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// English (NST2007) description.
	NstName *GoodNameType `xml:"nstName,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_adncodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_adncodeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	AdnCode *AdnCodeType `xml:"adnCode,omitempty"`

	CodeOld *AdnCodeType `xml:"codeOld,omitempty"`

	Unnr *UnnrType `xml:"unnr,omitempty"`

	AdnClass *AdnClassType `xml:"adnClass,omitempty"`

	AdnClassif *AdnClassType `xml:"adnClassif,omitempty"`

	ImoClass *AdnClassType `xml:"imoClass,omitempty"`

	PackGrp *PackGrpType `xml:"packGrp,omitempty"`

	Name struct {
		Loc *GoodDgsNameType `xml:"Loc,omitempty"`

		NL *GoodDgsNameType `xml:"NL,omitempty"`

		DE *GoodDgsNameType `xml:"DE,omitempty"`

		FR *GoodDgsNameType `xml:"FR,omitempty"`

		EN *GoodDgsNameType `xml:"EN,omitempty"`

		BG *GoodDgsNameType `xml:"BG,omitempty"`

		CS *GoodDgsNameType `xml:"CS,omitempty"`

		DA *GoodDgsNameType `xml:"DA,omitempty"`

		EL *GoodDgsNameType `xml:"EL,omitempty"`

		ES *GoodDgsNameType `xml:"ES,omitempty"`

		ET *GoodDgsNameType `xml:"ET,omitempty"`

		FI *GoodDgsNameType `xml:"FI,omitempty"`

		HU *GoodDgsNameType `xml:"HU,omitempty"`

		IT *GoodDgsNameType `xml:"IT,omitempty"`

		LT *GoodDgsNameType `xml:"LT,omitempty"`

		LV *GoodDgsNameType `xml:"LV,omitempty"`

		PL *GoodDgsNameType `xml:"PL,omitempty"`

		PT *GoodDgsNameType `xml:"PT,omitempty"`

		RO *GoodDgsNameType `xml:"RO,omitempty"`

		SK *GoodDgsNameType `xml:"SK,omitempty"`

		SL *GoodDgsNameType `xml:"SL,omitempty"`

		SV *GoodDgsNameType `xml:"SV,omitempty"`

		HR *GoodDgsNameType `xml:"HR,omitempty"`

		RU *GoodDgsNameType `xml:"RU,omitempty"`

		SR *GoodDgsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Syn struct {
		Loc *GoodSynType `xml:"Loc,omitempty"`

		NL *GoodSynType `xml:"NL,omitempty"`

		DE *GoodSynType `xml:"DE,omitempty"`

		FR *GoodSynType `xml:"FR,omitempty"`

		EN *GoodSynType `xml:"EN,omitempty"`

		BG *GoodSynType `xml:"BG,omitempty"`

		CS *GoodSynType `xml:"CS,omitempty"`

		DA *GoodSynType `xml:"DA,omitempty"`

		EL *GoodSynType `xml:"EL,omitempty"`

		ES *GoodSynType `xml:"ES,omitempty"`

		ET *GoodSynType `xml:"ET,omitempty"`

		FI *GoodSynType `xml:"FI,omitempty"`

		HU *GoodSynType `xml:"HU,omitempty"`

		IT *GoodSynType `xml:"IT,omitempty"`

		LT *GoodSynType `xml:"LT,omitempty"`

		LV *GoodSynType `xml:"LV,omitempty"`

		PL *GoodSynType `xml:"PL,omitempty"`

		PT *GoodSynType `xml:"PT,omitempty"`

		RO *GoodSynType `xml:"RO,omitempty"`

		SK *GoodSynType `xml:"SK,omitempty"`

		SL *GoodSynType `xml:"SL,omitempty"`

		SV *GoodSynType `xml:"SV,omitempty"`

		HR *GoodSynType `xml:"HR,omitempty"`

		RU *GoodSynType `xml:"RU,omitempty"`

		SR *GoodSynType `xml:"SR,omitempty"`
	} `xml:"syn,omitempty"`

	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// 0, 1, 2, 3, V
	ConesBulk *ConesType `xml:"conesBulk,omitempty"`

	ConesTank *ConesType `xml:"conesTank,omitempty"`

	ConesCont *ConesType `xml:"conesCont,omitempty"`

	// 0, B, V
	FlagsBulk *FlagsType `xml:"flagsBulk,omitempty"`

	FlagsTank *FlagsType `xml:"flagsTank,omitempty"`

	WarnCard *WarnCardType `xml:"warnCard,omitempty"`

	WarnId *WarnIdType `xml:"warnId,omitempty"`

	Label1 *AdnLabelType `xml:"label1,omitempty"`

	Label2 *AdnLabelType `xml:"label2,omitempty"`

	Label3 *AdnLabelType `xml:"label3,omitempty"`

	MaxWeightCodeInlandBulkCont *SignalCodeType `xml:"maxWeightCodeInlandBulkCont,omitempty"`

	// max weight in kg
	MaxWeightInlandBulkCont *WeightType `xml:"maxWeightInlandBulkCont,omitempty"`

	SignalCodeInlandCont *SignalCodeType `xml:"signalCodeInlandCont,omitempty"`

	// min weight in kg
	MinWeightInlandCont *WeightType `xml:"minWeightInlandCont,omitempty"`

	SignalCodeInlandExcemp *SignalCodeType `xml:"signalCodeInlandExcemp,omitempty"`

	// min weight in kg
	MinWeightInlandExcemp *WeightType `xml:"minWeightInlandExcemp,omitempty"`

	SignalCodeSeaBulk *SignalCodeType `xml:"signalCodeSeaBulk,omitempty"`

	// min weight in kg
	MinWeightSeaBulk *WeightType `xml:"minWeightSeaBulk,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_conttypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_conttypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ContId *ContIdType `xml:"contId,omitempty"`

	CodeOld *ContIdType `xml:"codeOld,omitempty"`

	// dimensions in cm
	Length *DimType `xml:"length,omitempty"`

	Width *DimType `xml:"width,omitempty"`

	Height *DimType `xml:"height,omitempty"`

	// empty weight in kg
	Weight *WeightType `xml:"weight,omitempty"`

	Name struct {
		Loc *ContNameType `xml:"Loc,omitempty"`

		NL *ContNameType `xml:"NL,omitempty"`

		DE *ContNameType `xml:"DE,omitempty"`

		FR *ContNameType `xml:"FR,omitempty"`

		EN *ContNameType `xml:"EN,omitempty"`

		BG *ContNameType `xml:"BG,omitempty"`

		CS *ContNameType `xml:"CS,omitempty"`

		DA *ContNameType `xml:"DA,omitempty"`

		EL *ContNameType `xml:"EL,omitempty"`

		ES *ContNameType `xml:"ES,omitempty"`

		ET *ContNameType `xml:"ET,omitempty"`

		FI *ContNameType `xml:"FI,omitempty"`

		HU *ContNameType `xml:"HU,omitempty"`

		IT *ContNameType `xml:"IT,omitempty"`

		LT *ContNameType `xml:"LT,omitempty"`

		LV *ContNameType `xml:"LV,omitempty"`

		PL *ContNameType `xml:"PL,omitempty"`

		PT *ContNameType `xml:"PT,omitempty"`

		RO *ContNameType `xml:"RO,omitempty"`

		SK *ContNameType `xml:"SK,omitempty"`

		SL *ContNameType `xml:"SL,omitempty"`

		SV *ContNameType `xml:"SV,omitempty"`

		HR *ContNameType `xml:"HR,omitempty"`

		RU *ContNameType `xml:"RU,omitempty"`

		SR *ContNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_packtypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_packtypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	PackId *PackIdType `xml:"packId,omitempty"`

	CodeOld *PackIdType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *PackNameType `xml:"Loc,omitempty"`

		NL *PackNameType `xml:"NL,omitempty"`

		DE *PackNameType `xml:"DE,omitempty"`

		FR *PackNameType `xml:"FR,omitempty"`

		EN *PackNameType `xml:"EN,omitempty"`

		BG *PackNameType `xml:"BG,omitempty"`

		CS *PackNameType `xml:"CS,omitempty"`

		DA *PackNameType `xml:"DA,omitempty"`

		EL *PackNameType `xml:"EL,omitempty"`

		ES *PackNameType `xml:"ES,omitempty"`

		ET *PackNameType `xml:"ET,omitempty"`

		FI *PackNameType `xml:"FI,omitempty"`

		HU *PackNameType `xml:"HU,omitempty"`

		IT *PackNameType `xml:"IT,omitempty"`

		LT *PackNameType `xml:"LT,omitempty"`

		LV *PackNameType `xml:"LV,omitempty"`

		PL *PackNameType `xml:"PL,omitempty"`

		PT *PackNameType `xml:"PT,omitempty"`

		RO *PackNameType `xml:"RO,omitempty"`

		SK *PackNameType `xml:"SK,omitempty"`

		SL *PackNameType `xml:"SL,omitempty"`

		SV *PackNameType `xml:"SV,omitempty"`

		HR *PackNameType `xml:"HR,omitempty"`

		RU *PackNameType `xml:"RU,omitempty"`

		SR *PackNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_shiptypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_shiptypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ShipType *ShipTypeType `xml:"shipType,omitempty"`

	CodeOld *ShipTypeType `xml:"codeOld,omitempty"`

	DvkType *DvkTypeType `xml:"dvkType,omitempty"`

	CraftType *CraftTypeType `xml:"craftType,omitempty"`

	// True = transport cominination type, false=single ship
	Combination *CombinationFlagType `xml:"combination,omitempty"`

	Name struct {
		Loc *ShiptypeNameType `xml:"Loc,omitempty"`

		NL *ShiptypeNameType `xml:"NL,omitempty"`

		DE *ShiptypeNameType `xml:"DE,omitempty"`

		FR *ShiptypeNameType `xml:"FR,omitempty"`

		EN *ShiptypeNameType `xml:"EN,omitempty"`

		BG *ShiptypeNameType `xml:"BG,omitempty"`

		CS *ShiptypeNameType `xml:"CS,omitempty"`

		DA *ShiptypeNameType `xml:"DA,omitempty"`

		EL *ShiptypeNameType `xml:"EL,omitempty"`

		ES *ShiptypeNameType `xml:"ES,omitempty"`

		ET *ShiptypeNameType `xml:"ET,omitempty"`

		FI *ShiptypeNameType `xml:"FI,omitempty"`

		HU *ShiptypeNameType `xml:"HU,omitempty"`

		IT *ShiptypeNameType `xml:"IT,omitempty"`

		LT *ShiptypeNameType `xml:"LT,omitempty"`

		LV *ShiptypeNameType `xml:"LV,omitempty"`

		PL *ShiptypeNameType `xml:"PL,omitempty"`

		PT *ShiptypeNameType `xml:"PT,omitempty"`

		RO *ShiptypeNameType `xml:"RO,omitempty"`

		SK *ShiptypeNameType `xml:"SK,omitempty"`

		SL *ShiptypeNameType `xml:"SL,omitempty"`

		SV *ShiptypeNameType `xml:"SV,omitempty"`

		HR *ShiptypeNameType `xml:"HR,omitempty"`

		RU *ShiptypeNameType `xml:"RU,omitempty"`

		SR *ShiptypeNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_countryType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_countryType"`

	// UN country ISO code 2 chars. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	CountryCode *CountryCodeType `xml:"countryCode,omitempty"`

	CodeOld *CountryCodeType `xml:"codeOld,omitempty"`

	CbsCode *CbscountryCodeType `xml:"cbsCode,omitempty"`

	CountryIsoCode3 *CountryCode3Type `xml:"countryIsoCode3,omitempty"`

	CountryIsoNum *CountryIsoNumType `xml:"countryIsoNum,omitempty"`

	LloydsFlag *LloydsflagType `xml:"lloydsFlag,omitempty"`

	Name struct {
		Loc *CountryNameType `xml:"Loc,omitempty"`

		NL *CountryNameType `xml:"NL,omitempty"`

		DE *CountryNameType `xml:"DE,omitempty"`

		FR *CountryNameType `xml:"FR,omitempty"`

		EN *CountryNameType `xml:"EN,omitempty"`

		BG *CountryNameType `xml:"BG,omitempty"`

		CS *CountryNameType `xml:"CS,omitempty"`

		DA *CountryNameType `xml:"DA,omitempty"`

		EL *CountryNameType `xml:"EL,omitempty"`

		ES *CountryNameType `xml:"ES,omitempty"`

		ET *CountryNameType `xml:"ET,omitempty"`

		FI *CountryNameType `xml:"FI,omitempty"`

		HU *CountryNameType `xml:"HU,omitempty"`

		IT *CountryNameType `xml:"IT,omitempty"`

		LT *CountryNameType `xml:"LT,omitempty"`

		LV *CountryNameType `xml:"LV,omitempty"`

		PL *CountryNameType `xml:"PL,omitempty"`

		PT *CountryNameType `xml:"PT,omitempty"`

		RO *CountryNameType `xml:"RO,omitempty"`

		SK *CountryNameType `xml:"SK,omitempty"`

		SL *CountryNameType `xml:"SL,omitempty"`

		SV *CountryNameType `xml:"SV,omitempty"`

		HR *CountryNameType `xml:"HR,omitempty"`

		RU *CountryNameType `xml:"RU,omitempty"`

		SR *CountryNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Nts_dataType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ nts_dataType"`

	// Just a string (no enum) to return nts data type of the nts_data returned!
	// reftype already contains datatype.
	Ntstype *NtstypeType `xml:"ntstype,omitempty"`

	Ntscode *NtsCodeType `xml:"ntscode,omitempty"`

	CodeOld *NtsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *NtsNameType `xml:"Loc,omitempty"`

		NL *NtsNameType `xml:"NL,omitempty"`

		DE *NtsNameType `xml:"DE,omitempty"`

		EN *NtsNameType `xml:"EN,omitempty"`

		FR *NtsNameType `xml:"FR,omitempty"`

		BG *NtsNameType `xml:"BG,omitempty"`

		CS *NtsNameType `xml:"CS,omitempty"`

		DA *NtsNameType `xml:"DA,omitempty"`

		EL *NtsNameType `xml:"EL,omitempty"`

		ES *NtsNameType `xml:"ES,omitempty"`

		ET *NtsNameType `xml:"ET,omitempty"`

		FI *NtsNameType `xml:"FI,omitempty"`

		HU *NtsNameType `xml:"HU,omitempty"`

		IT *NtsNameType `xml:"IT,omitempty"`

		LT *NtsNameType `xml:"LT,omitempty"`

		LV *NtsNameType `xml:"LV,omitempty"`

		PL *NtsNameType `xml:"PL,omitempty"`

		PT *NtsNameType `xml:"PT,omitempty"`

		RO *NtsNameType `xml:"RO,omitempty"`

		SK *NtsNameType `xml:"SK,omitempty"`

		SL *NtsNameType `xml:"SL,omitempty"`

		SV *NtsNameType `xml:"SV,omitempty"`

		HR *NtsNameType `xml:"HR,omitempty"`

		RU *NtsNameType `xml:"RU,omitempty"`

		SR *NtsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Ris_idxReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ ris_idxReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	RisidxCode *RisCodeType `xml:"risidxCode,omitempty"`

	CodeOld *RisCodeType `xml:"codeOld,omitempty"`

	UnlocCC *UnlocCCType `xml:"unlocCC,omitempty"`

	UnlocLC *UnlocLCType `xml:"unlocLC,omitempty"`

	WwsectCode *FwCodeType `xml:"wwsectCode,omitempty"`

	Objcode *RisobjCodeType `xml:"objcode,omitempty"`

	Hectomt *KmCodeType `xml:"hectomt,omitempty"`

	Objfunc *RisobjfuncType `xml:"objfunc,omitempty"`

	Objname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"objname,omitempty"`

	Locname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"locname,omitempty"`

	Wwname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"wwname,omitempty"`

	Routename struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"routename,omitempty"`

	Relrisindex *RisCodeType `xml:"relrisindex,omitempty"`

	Sectionnode *RissectnodeType `xml:"sectionnode,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	Relenc *RisrelencType `xml:"relenc,omitempty"`

	Comminfo *RiscomminfoType `xml:"comminfo,omitempty"`

	Gaugeid *RisgaugeidType `xml:"gaugeid,omitempty"`

	Vesselconvlength *DimType `xml:"vesselconvlength,omitempty"`

	Vesselconvbreadth *DimType `xml:"vesselconvbreadth,omitempty"`

	Vesselconvdraught *DimType `xml:"vesselconvdraught,omitempty"`

	Vesselconvairdraught *DimType `xml:"vesselconvairdraught,omitempty"`

	Availablelength *DimType `xml:"availablelength,omitempty"`

	Clearancewidth *DimType `xml:"clearancewidth,omitempty"`

	Availabledepth *DimType `xml:"availabledepth,omitempty"`

	Clearanceheight *DimType `xml:"clearanceheight,omitempty"`

	Applicabilityfromkm *RisapplikmType `xml:"applicabilityfromkm,omitempty"`

	Applicabilitytokm *RisapplikmType `xml:"applicabilitytokm,omitempty"`

	Reflevel1code *RisreflevelcodeType `xml:"reflevel1code,omitempty"`

	Reflevel1value *RisreflevelvalueType `xml:"reflevel1value,omitempty"`

	Reflevel2code *RisreflevelcodeType `xml:"reflevel2code,omitempty"`

	Reflevel2value *RisreflevelvalueType `xml:"reflevel2value,omitempty"`

	Reflevel3code *RisreflevelcodeType `xml:"reflevel3code,omitempty"`

	Reflevel3value *RisreflevelvalueType `xml:"reflevel3value,omitempty"`

	Zeropoint *RiszeropointType `xml:"zeropoint,omitempty"`

	Geodref *RisgeodrefType `xml:"geodref,omitempty"`

	Catoftimesched *RiscatoftimeschedType `xml:"catoftimesched,omitempty"`

	Forshiptype *RisforshiptypeType `xml:"forshiptype,omitempty"`

	Foruseofship *RisuseofshipType `xml:"foruseofship,omitempty"`

	LnktoextXMfiletimesched *RislinkextxmlType `xml:"lnktoextXMfiletimesched,omitempty"`

	LnktoextXMfilepastime *RislinkextxmlType `xml:"lnktoextXMfilepastime,omitempty"`

	Vesselconvlength2 *DimType `xml:"vesselconvlength2,omitempty"`

	Vesselconvbreadth2 *DimType `xml:"vesselconvbreadth2,omitempty"`

	Vesselconvdraught2 *DimType `xml:"vesselconvdraught2,omitempty"`

	Vesselconvairdraught2 *DimType `xml:"vesselconvairdraught2,omitempty"`

	Availablelength2 *DimType `xml:"availablelength2,omitempty"`

	Clearancewidth2 *DimType `xml:"clearancewidth2,omitempty"`

	Availabledepth2 *DimType `xml:"availabledepth2,omitempty"`

	Clearanceheight2 *DimType `xml:"clearanceheight2,omitempty"`

	Vesselconvlength3 *DimType `xml:"vesselconvlength3,omitempty"`

	Vesselconvbreadth3 *DimType `xml:"vesselconvbreadth3,omitempty"`

	Vesselconvdraught3 *DimType `xml:"vesselconvdraught3,omitempty"`

	Vesselconvairdraught3 *DimType `xml:"vesselconvairdraught3,omitempty"`

	Availablelength3 *DimType `xml:"availablelength3,omitempty"`

	Clearancewidth3 *DimType `xml:"clearancewidth3,omitempty"`

	Availabledepth3 *DimType `xml:"availabledepth3,omitempty"`

	Clearanceheight3 *DimType `xml:"clearanceheight3,omitempty"`

	Catoftimesched2 *RiscatoftimeschedType `xml:"catoftimesched2,omitempty"`

	Forshiptype2 *RisforshiptypeType `xml:"forshiptype2,omitempty"`

	Foruseofship2 *RisuseofshipType `xml:"foruseofship2,omitempty"`

	LnktoextXMfiletimesched2 *RislinkextxmlType `xml:"lnktoextXMfiletimesched2,omitempty"`

	LnktoextXMfilepastime2 *RislinkextxmlType `xml:"lnktoextXMfilepastime2,omitempty"`

	Catoftimesched3 *RiscatoftimeschedType `xml:"catoftimesched3,omitempty"`

	Forshiptype3 *RisforshiptypeType `xml:"forshiptype3,omitempty"`

	Foruseofship3 *RisuseofshipType `xml:"foruseofship3,omitempty"`

	LnktoextXMfiletimesched3 *RislinkextxmlType `xml:"lnktoextXMfiletimesched3,omitempty"`

	LnktoextXMfilepastime3 *RislinkextxmlType `xml:"lnktoextXMfilepastime3,omitempty"`

	Startdate *LastupdateType `xml:"startdate,omitempty"`

	Enddate *LastupdateType `xml:"enddate,omitempty"`

	Infodate *LastupdateType `xml:"infodate,omitempty"`

	// specific Ris idx remarks/reasons for change, as received with the ris idx
	RisidxRemarks *RemarksType `xml:"risidxRemarks,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	// remarks regarding the maintance of the ris idx
	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_locationReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_locationReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ErilocCode *ErilocCodeType `xml:"erilocCode,omitempty"`

	CodeOld *ErilocCodeType `xml:"codeOld,omitempty"`

	RisCode *RisCodeType `xml:"risCode,omitempty"`

	LoCode *LoCodeType `xml:"loCode,omitempty"`

	FwCode *FwCodeType `xml:"fwCode,omitempty"`

	TermCode *TermCodeType `xml:"termCode,omitempty"`

	KmCode *KmCodeType `xml:"kmCode,omitempty"`

	Name struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"name,omitempty"`

	LocType *LocTypeType `xml:"locType,omitempty"`

	Termname struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"termname,omitempty"`

	QuayFrom *QuayType `xml:"quayFrom,omitempty"`

	QuayTo *QuayType `xml:"quayTo,omitempty"`

	TermType *LocTypeType `xml:"termType,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	IvsVTSCode *LocVtsCodeType `xml:"ivsVTSCode,omitempty"`

	Exits *LocExitsType `xml:"exits,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_hscodeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_hscodeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	CodeOld *HsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *GoodNameType `xml:"Loc,omitempty"`

		NL *GoodNameType `xml:"NL,omitempty"`

		DE *GoodNameType `xml:"DE,omitempty"`

		FR *GoodNameType `xml:"FR,omitempty"`

		EN *GoodNameType `xml:"EN,omitempty"`

		BG *GoodNameType `xml:"BG,omitempty"`

		CS *GoodNameType `xml:"CS,omitempty"`

		DA *GoodNameType `xml:"DA,omitempty"`

		EL *GoodNameType `xml:"EL,omitempty"`

		ES *GoodNameType `xml:"ES,omitempty"`

		ET *GoodNameType `xml:"ET,omitempty"`

		FI *GoodNameType `xml:"FI,omitempty"`

		HU *GoodNameType `xml:"HU,omitempty"`

		IT *GoodNameType `xml:"IT,omitempty"`

		LT *GoodNameType `xml:"LT,omitempty"`

		LV *GoodNameType `xml:"LV,omitempty"`

		PL *GoodNameType `xml:"PL,omitempty"`

		PT *GoodNameType `xml:"PT,omitempty"`

		RO *GoodNameType `xml:"RO,omitempty"`

		SK *GoodNameType `xml:"SK,omitempty"`

		SL *GoodNameType `xml:"SL,omitempty"`

		SV *GoodNameType `xml:"SV,omitempty"`

		HR *GoodNameType `xml:"HR,omitempty"`

		RU *GoodNameType `xml:"RU,omitempty"`

		SR *GoodNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	NstName *GoodNameType `xml:"nstName,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_adncodeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_adncodeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	AdnCode *AdnCodeType `xml:"adnCode,omitempty"`

	CodeOld *AdnCodeType `xml:"codeOld,omitempty"`

	Unnr *UnnrType `xml:"unnr,omitempty"`

	AdnClass *AdnClassType `xml:"adnClass,omitempty"`

	AdnClassif *AdnClassType `xml:"adnClassif,omitempty"`

	ImoClass *AdnClassType `xml:"imoClass,omitempty"`

	PackGrp *PackGrpType `xml:"packGrp,omitempty"`

	Name struct {
		Loc *GoodDgsNameType `xml:"Loc,omitempty"`

		NL *GoodDgsNameType `xml:"NL,omitempty"`

		DE *GoodDgsNameType `xml:"DE,omitempty"`

		FR *GoodDgsNameType `xml:"FR,omitempty"`

		EN *GoodDgsNameType `xml:"EN,omitempty"`

		BG *GoodDgsNameType `xml:"BG,omitempty"`

		CS *GoodDgsNameType `xml:"CS,omitempty"`

		DA *GoodDgsNameType `xml:"DA,omitempty"`

		EL *GoodDgsNameType `xml:"EL,omitempty"`

		ES *GoodDgsNameType `xml:"ES,omitempty"`

		ET *GoodDgsNameType `xml:"ET,omitempty"`

		FI *GoodDgsNameType `xml:"FI,omitempty"`

		HU *GoodDgsNameType `xml:"HU,omitempty"`

		IT *GoodDgsNameType `xml:"IT,omitempty"`

		LT *GoodDgsNameType `xml:"LT,omitempty"`

		LV *GoodDgsNameType `xml:"LV,omitempty"`

		PL *GoodDgsNameType `xml:"PL,omitempty"`

		PT *GoodDgsNameType `xml:"PT,omitempty"`

		RO *GoodDgsNameType `xml:"RO,omitempty"`

		SK *GoodDgsNameType `xml:"SK,omitempty"`

		SL *GoodDgsNameType `xml:"SL,omitempty"`

		SV *GoodDgsNameType `xml:"SV,omitempty"`

		HR *GoodDgsNameType `xml:"HR,omitempty"`

		RU *GoodDgsNameType `xml:"RU,omitempty"`

		SR *GoodDgsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Syn struct {
		Loc *GoodSynType `xml:"Loc,omitempty"`

		NL *GoodSynType `xml:"NL,omitempty"`

		DE *GoodSynType `xml:"DE,omitempty"`

		FR *GoodSynType `xml:"FR,omitempty"`

		EN *GoodSynType `xml:"EN,omitempty"`

		BG *GoodSynType `xml:"BG,omitempty"`

		CS *GoodSynType `xml:"CS,omitempty"`

		DA *GoodSynType `xml:"DA,omitempty"`

		EL *GoodSynType `xml:"EL,omitempty"`

		ES *GoodSynType `xml:"ES,omitempty"`

		ET *GoodSynType `xml:"ET,omitempty"`

		FI *GoodSynType `xml:"FI,omitempty"`

		HU *GoodSynType `xml:"HU,omitempty"`

		IT *GoodSynType `xml:"IT,omitempty"`

		LT *GoodSynType `xml:"LT,omitempty"`

		LV *GoodSynType `xml:"LV,omitempty"`

		PL *GoodSynType `xml:"PL,omitempty"`

		PT *GoodSynType `xml:"PT,omitempty"`

		RO *GoodSynType `xml:"RO,omitempty"`

		SK *GoodSynType `xml:"SK,omitempty"`

		SL *GoodSynType `xml:"SL,omitempty"`

		SV *GoodSynType `xml:"SV,omitempty"`

		HR *GoodSynType `xml:"HR,omitempty"`

		RU *GoodSynType `xml:"RU,omitempty"`

		SR *GoodSynType `xml:"SR,omitempty"`
	} `xml:"syn,omitempty"`

	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// 0, 1, 2, 3, V (Inland)
	ConesBulk *ConesType `xml:"conesBulk,omitempty"`

	ConesTank *ConesType `xml:"conesTank,omitempty"`

	ConesCont *ConesType `xml:"conesCont,omitempty"`

	// 0, B, V (Seagoing)
	FlagsBulk *FlagsType `xml:"flagsBulk,omitempty"`

	FlagsTank *FlagsType `xml:"flagsTank,omitempty"`

	WarnCard *WarnCardType `xml:"warnCard,omitempty"`

	WarnId *WarnIdType `xml:"warnId,omitempty"`

	Label1 *AdnLabelType `xml:"label1,omitempty"`

	Label2 *AdnLabelType `xml:"label2,omitempty"`

	Label3 *AdnLabelType `xml:"label3,omitempty"`

	MaxWeightCodeInlandBulkCont *SignalCodeType `xml:"maxWeightCodeInlandBulkCont,omitempty"`

	// max weight in kg
	MaxWeightInlandBulkCont *WeightType `xml:"maxWeightInlandBulkCont,omitempty"`

	SignalCodeInlandCont *SignalCodeType `xml:"signalCodeInlandCont,omitempty"`

	// min weight in kg
	MinWeightInlandCont *WeightType `xml:"minWeightInlandCont,omitempty"`

	SignalCodeInlandExcemp *SignalCodeType `xml:"signalCodeInlandExcemp,omitempty"`

	// min weight in kg
	MinWeightInlandExcemp *WeightType `xml:"minWeightInlandExcemp,omitempty"`

	SignalCodeSeaBulk *SignalCodeType `xml:"signalCodeSeaBulk,omitempty"`

	// min weight in kg
	MinWeightSeaBulk *WeightType `xml:"minWeightSeaBulk,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_conttypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_conttypeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ContId *ContIdType `xml:"contId,omitempty"`

	CodeOld *ContIdType `xml:"codeOld,omitempty"`

	// dimensions in cm
	Length *DimType `xml:"length,omitempty"`

	Width *DimType `xml:"width,omitempty"`

	Height *DimType `xml:"height,omitempty"`

	// empty weight in kg
	Weight *DimType `xml:"weight,omitempty"`

	Name struct {
		Loc *ContNameType `xml:"Loc,omitempty"`

		NL *ContNameType `xml:"NL,omitempty"`

		DE *ContNameType `xml:"DE,omitempty"`

		FR *ContNameType `xml:"FR,omitempty"`

		EN *ContNameType `xml:"EN,omitempty"`

		BG *ContNameType `xml:"BG,omitempty"`

		CS *ContNameType `xml:"CS,omitempty"`

		DA *ContNameType `xml:"DA,omitempty"`

		EL *ContNameType `xml:"EL,omitempty"`

		ES *ContNameType `xml:"ES,omitempty"`

		ET *ContNameType `xml:"ET,omitempty"`

		FI *ContNameType `xml:"FI,omitempty"`

		HU *ContNameType `xml:"HU,omitempty"`

		IT *ContNameType `xml:"IT,omitempty"`

		LT *ContNameType `xml:"LT,omitempty"`

		LV *ContNameType `xml:"LV,omitempty"`

		PL *ContNameType `xml:"PL,omitempty"`

		PT *ContNameType `xml:"PT,omitempty"`

		RO *ContNameType `xml:"RO,omitempty"`

		SK *ContNameType `xml:"SK,omitempty"`

		SL *ContNameType `xml:"SL,omitempty"`

		SV *ContNameType `xml:"SV,omitempty"`

		HR *ContNameType `xml:"HR,omitempty"`

		RU *ContNameType `xml:"RU,omitempty"`

		SR *ContNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_packtypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_packtypeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	PackId *PackIdType `xml:"packId,omitempty"`

	CodeOld *PackIdType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *PackNameType `xml:"Loc,omitempty"`

		NL *PackNameType `xml:"NL,omitempty"`

		DE *PackNameType `xml:"DE,omitempty"`

		FR *PackNameType `xml:"FR,omitempty"`

		EN *PackNameType `xml:"EN,omitempty"`

		BG *PackNameType `xml:"BG,omitempty"`

		CS *PackNameType `xml:"CS,omitempty"`

		DA *PackNameType `xml:"DA,omitempty"`

		EL *PackNameType `xml:"EL,omitempty"`

		ES *PackNameType `xml:"ES,omitempty"`

		ET *PackNameType `xml:"ET,omitempty"`

		FI *PackNameType `xml:"FI,omitempty"`

		HU *PackNameType `xml:"HU,omitempty"`

		IT *PackNameType `xml:"IT,omitempty"`

		LT *PackNameType `xml:"LT,omitempty"`

		LV *PackNameType `xml:"LV,omitempty"`

		PL *PackNameType `xml:"PL,omitempty"`

		PT *PackNameType `xml:"PT,omitempty"`

		RO *PackNameType `xml:"RO,omitempty"`

		SK *PackNameType `xml:"SK,omitempty"`

		SL *PackNameType `xml:"SL,omitempty"`

		SV *PackNameType `xml:"SV,omitempty"`

		HR *PackNameType `xml:"HR,omitempty"`

		RU *PackNameType `xml:"RU,omitempty"`

		SR *PackNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_shiptypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_shiptypeReqMutType"`

	// UN rec 28. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ShipType *ShipTypeType `xml:"shipType,omitempty"`

	CodeOld *ShipTypeType `xml:"codeOld,omitempty"`

	DvkType *DvkTypeType `xml:"dvkType,omitempty"`

	CraftType *CraftTypeType `xml:"craftType,omitempty"`

	// True = transport cominination type, false=single ship
	Combination *CombinationFlagType `xml:"combination,omitempty"`

	Name struct {
		Loc *ShiptypeNameType `xml:"Loc,omitempty"`

		NL *ShiptypeNameType `xml:"NL,omitempty"`

		DE *ShiptypeNameType `xml:"DE,omitempty"`

		FR *ShiptypeNameType `xml:"FR,omitempty"`

		EN *ShiptypeNameType `xml:"EN,omitempty"`

		BG *ShiptypeNameType `xml:"BG,omitempty"`

		CS *ShiptypeNameType `xml:"CS,omitempty"`

		DA *ShiptypeNameType `xml:"DA,omitempty"`

		EL *ShiptypeNameType `xml:"EL,omitempty"`

		ES *ShiptypeNameType `xml:"ES,omitempty"`

		ET *ShiptypeNameType `xml:"ET,omitempty"`

		FI *ShiptypeNameType `xml:"FI,omitempty"`

		HU *ShiptypeNameType `xml:"HU,omitempty"`

		IT *ShiptypeNameType `xml:"IT,omitempty"`

		LT *ShiptypeNameType `xml:"LT,omitempty"`

		LV *ShiptypeNameType `xml:"LV,omitempty"`

		PL *ShiptypeNameType `xml:"PL,omitempty"`

		PT *ShiptypeNameType `xml:"PT,omitempty"`

		RO *ShiptypeNameType `xml:"RO,omitempty"`

		SK *ShiptypeNameType `xml:"SK,omitempty"`

		SL *ShiptypeNameType `xml:"SL,omitempty"`

		SV *ShiptypeNameType `xml:"SV,omitempty"`

		HR *ShiptypeNameType `xml:"HR,omitempty"`

		RU *ShiptypeNameType `xml:"RU,omitempty"`

		SR *ShiptypeNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_countryReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_countryReqMutType"`

	// UN country ISO code 2 chars. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	CountryCode *CountryCodeType `xml:"countryCode,omitempty"`

	CodeOld *CountryCodeType `xml:"codeOld,omitempty"`

	CbsCode *CbscountryCodeType `xml:"cbsCode,omitempty"`

	CountryIsoCode3 *CountryCode3Type `xml:"countryIsoCode3,omitempty"`

	CountryIsoNum *CountryIsoNumType `xml:"countryIsoNum,omitempty"`

	LloydsFlag *LloydsflagType `xml:"lloydsFlag,omitempty"`

	Name struct {
		Loc *CountryNameType `xml:"Loc,omitempty"`

		NL *CountryNameType `xml:"NL,omitempty"`

		DE *CountryNameType `xml:"DE,omitempty"`

		FR *CountryNameType `xml:"FR,omitempty"`

		EN *CountryNameType `xml:"EN,omitempty"`

		BG *CountryNameType `xml:"BG,omitempty"`

		CS *CountryNameType `xml:"CS,omitempty"`

		DA *CountryNameType `xml:"DA,omitempty"`

		EL *CountryNameType `xml:"EL,omitempty"`

		ES *CountryNameType `xml:"ES,omitempty"`

		ET *CountryNameType `xml:"ET,omitempty"`

		FI *CountryNameType `xml:"FI,omitempty"`

		HU *CountryNameType `xml:"HU,omitempty"`

		IT *CountryNameType `xml:"IT,omitempty"`

		LT *CountryNameType `xml:"LT,omitempty"`

		LV *CountryNameType `xml:"LV,omitempty"`

		PL *CountryNameType `xml:"PL,omitempty"`

		PT *CountryNameType `xml:"PT,omitempty"`

		RO *CountryNameType `xml:"RO,omitempty"`

		SK *CountryNameType `xml:"SK,omitempty"`

		SL *CountryNameType `xml:"SL,omitempty"`

		SV *CountryNameType `xml:"SV,omitempty"`

		HR *CountryNameType `xml:"HR,omitempty"`

		RU *CountryNameType `xml:"RU,omitempty"`

		SR *CountryNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type RefWeb interface {

	// Error can be either of the following types:
	//
	//   - exception

	MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	MatchByName(request *MatchByName) (*MatchByNameResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetMutations(request *GetMutations) (*GetMutationsResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	RequestMutationXML(request *RequestMutationXML) (*RequestMutationXMLResponse, error)
}

type refWeb struct {
	client *soap.SOAPClient
}

func NewRefService(url string, tls bool, auth *soap.BasicAuth) RefWeb {
	return NewRefWeb(soap.NewSOAPClient(url, tls, auth))
}

func NewRefWeb(client *soap.SOAPClient) RefWeb {
	return &refWeb{
		client: client,
	}
}

func (service *refWeb) MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error) {
	response := new(MatchByCodeResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) MatchByName(request *MatchByName) (*MatchByNameResponse, error) {
	response := new(MatchByNameResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetMutations(request *GetMutations) (*GetMutationsResponse, error) {
	response := new(GetMutationsResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error) {
	response := new(GetDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error) {
	response := new(GetRisDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error) {
	response := new(MutateDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) RequestMutationXML(request *RequestMutationXML) (*RequestMutationXMLResponse, error) {
	response := new(RequestMutationXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}