if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn keyword slpconfTodo         contained TODO FIXME XXX NOTE
syn region  slpconfComment      display oneline start='^[#;]' end='$'
\ contains=slpconfTodo,@Spell
syn match   slpconfBegin        display '^'
\ nextgroup=slpconfTag,
\ slpconfComment skipwhite
syn keyword slpconfTag          contained net
\ nextgroup=slpconfNetTagDot
syn match   slpconfNetTagDot    contained display '.'
\ nextgroup=slpconfNetTag
syn keyword slpconfNetTag       contained slp
\ nextgroup=slpconfNetSlpTagdot
syn match   slpconfNetSlpTagDot contained display '.'
\ nextgroup=slpconfNetSlpTag
syn keyword slpconfNetSlpTag    contained isDA traceDATraffic traceMsg
\ traceDrop traceReg isBroadcastOnly
\ passiveDADetection securityEnabled
\ nextgroup=slpconfBooleanEq,slpconfBooleanHome
\ skipwhite
syn match   slpconfBooleanHome  contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfBooleanEq skipwhite
syn match   slpconfBooleanEq    contained display '='
\ nextgroup=slpconfBoolean skipwhite
syn keyword slpconfBoolean      contained true false TRUE FALSE
syn keyword slpconfNetSlpTag    contained DAHeartBeat multicastTTL
\ DAActiveDiscoveryInterval
\ multicastMaximumWait multicastTimeouts
\ randomWaitBound MTU maxResults
\ nextgroup=slpconfIntegerEq,slpconfIntegerHome
\ skipwhite
syn match   slpconfIntegerHome  contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfIntegerEq skipwhite
syn match   slpconfIntegerEq    contained display '='
\ nextgroup=slpconfInteger skipwhite
syn match   slpconfInteger      contained display '\<\d\+\>'
syn keyword slpconfNetSlpTag    contained DAAttributes SAAttributes
\ nextgroup=slpconfAttrEq,slpconfAttrHome
\ skipwhite
syn match   slpconfAttrHome     contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfAttrEq skipwhite
syn match   slpconfAttrEq       contained display '='
\ nextgroup=slpconfAttrBegin skipwhite
syn match   slpconfAttrBegin    contained display '('
\ nextgroup=slpconfAttrTag skipwhite
syn match   slpconfAttrTag      contained display
\ '[^* \t_(),\\!<=>~[:cntrl:]]\+'
\ nextgroup=slpconfAttrTagEq skipwhite
syn match   slpconfAttrTagEq    contained display '='
\ nextgroup=@slpconfAttrValue skipwhite
syn cluster slpconfAttrValueCon contains=slpconfAttrValueSep,slpconfAttrEnd
syn cluster slpconfAttrValue    contains=slpconfAttrIValue,slpconfAttrSValue,
\ slpconfAttrBValue,slpconfAttrSSValue
syn match   slpconfAttrSValue   contained display '[^ (),\\!<=>~[:cntrl:]]\+'
\ nextgroup=@slpconfAttrValueCon skipwhite
syn match   slpconfAttrSSValue  contained display '\\FF\%(\\\x\x\)\+'
\ nextgroup=@slpconfAttrValueCon skipwhite
syn match   slpconfAttrIValue   contained display '[-]\=\d\+\>'
\ nextgroup=@slpconfAttrValueCon skipwhite
syn keyword slpconfAttrBValue   contained true false
\ nextgroup=@slpconfAttrValueCon skipwhite
syn match   slpconfAttrValueSep contained display ','
\ nextgroup=@slpconfAttrValue skipwhite
syn match   slpconfAttrEnd      contained display ')'
\ nextgroup=slpconfAttrSep skipwhite
syn match   slpconfAttrSep      contained display ','
\ nextgroup=slpconfAttrBegin skipwhite
syn keyword slpconfNetSlpTag    contained useScopes typeHint
\ nextgroup=slpconfStringsEq,slpconfStringsHome
\ skipwhite
syn match   slpconfStringsHome  contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfStringsEq skipwhite
syn match   slpconfStringsEq    contained display '='
\ nextgroup=slpconfStrings skipwhite
syn match   slpconfStrings      contained display
\ '\%([[:digit:][:alpha:]]\|[!-+./:-@[-`{-~-]\|\\\x\x\)\+'
\ nextgroup=slpconfStringsSep skipwhite
syn match   slpconfStringsSep   contained display ','
\ nextgroup=slpconfStrings skipwhite
syn keyword slpconfNetSlpTag    contained DAAddresses
\ nextgroup=slpconfAddressesEq,slpconfAddrsHome
\ skipwhite
syn match   slpconfAddrsHome    contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfAddressesEq skipwhite
syn match   slpconfAddressesEq  contained display '='
\ nextgroup=@slpconfAddresses skipwhite
syn cluster slpconfAddresses    contains=slpconfFQDNs,slpconfHostnumbers
syn match   slpconfFQDNs        contained display
\ '\a[[:alnum:]-]*[[:alnum:]]\|\a'
\ nextgroup=slpconfAddressesSep skipwhite
syn match   slpconfHostnumbers  contained display
\ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfAddressesSep skipwhite
syn match   slpconfAddressesSep contained display ','
\ nextgroup=@slpconfAddresses skipwhite
syn keyword slpconfNetSlpTag    contained serializedRegURL
\ nextgroup=slpconfStringEq,slpconfStringHome
\ skipwhite
syn match   slpconfStringHome   contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfStringEq skipwhite
syn match   slpconfStringEq     contained display '='
\ nextgroup=slpconfString skipwhite
syn match   slpconfString       contained display
\ '\%([!-+./:-@[-`{-~-]\|\\\x\x\)\+\|[[:digit:][:alpha:]]'
syn keyword slpconfNetSlpTag    contained multicastTimeouts DADiscoveryTimeouts
\ datagramTimeouts
\ nextgroup=slpconfIntegersEq,
\ slpconfIntegersHome skipwhite
syn match   slpconfIntegersHome contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfIntegersEq skipwhite
syn match   slpconfIntegersEq   contained display '='
\ nextgroup=slpconfIntegers skipwhite
syn match   slpconfIntegers     contained display '\<\d\+\>'
\ nextgroup=slpconfIntegersSep skipwhite
syn match   slpconfIntegersSep  contained display ','
\ nextgroup=slpconfIntegers skipwhite
syn keyword slpconfNetSlpTag    contained interfaces
\ nextgroup=slpconfHostnumsEq,
\ slpconfHostnumsHome skipwhite
syn match   slpconfHostnumsHome contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfHostnumsEq skipwhite
syn match   slpconfHostnumsEq   contained display '='
\ nextgroup=slpconfOHostnumbers skipwhite
syn match   slpconfOHostnumbers contained display
\ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfHostnumsSep skipwhite
syn match   slpconfHostnumsSep  contained display ','
\ nextgroup=slpconfOHostnumbers skipwhite
syn keyword slpconfNetSlpTag    contained locale
\ nextgroup=slpconfLocaleEq,slpconfLocaleHome
\ skipwhite
syn match   slpconfLocaleHome   contained display
\ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
\ nextgroup=slpconfLocaleEq skipwhite
syn match   slpconfLocaleEq     contained display '='
\ nextgroup=slpconfLocale skipwhite
syn match   slpconfLocale       contained display '\a\{1,8}\%(-\a\{1,8}\)\='
hi def link slpconfTodo         Todo
hi def link slpconfComment      Comment
hi def link slpconfTag          Identifier
hi def link slpconfDelimiter    Delimiter
hi def link slpconfNetTagDot    slpconfDelimiter
hi def link slpconfNetTag       slpconfTag
hi def link slpconfNetSlpTagDot slpconfNetTagDot
hi def link slpconfNetSlpTag    slpconfTag
hi def link slpconfHome         Special
hi def link slpconfBooleanHome  slpconfHome
hi def link slpconfEq           Operator
hi def link slpconfBooleanEq    slpconfEq
hi def link slpconfBoolean      Boolean
hi def link slpconfIntegerHome  slpconfHome
hi def link slpconfIntegerEq    slpconfEq
hi def link slpconfInteger      Number
hi def link slpconfAttrHome     slpconfHome
hi def link slpconfAttrEq       slpconfEq
hi def link slpconfAttrBegin    slpconfDelimiter
hi def link slpconfAttrTag      slpconfTag
hi def link slpconfAttrTagEq    slpconfEq
hi def link slpconfAttrIValue   slpconfInteger
hi def link slpconfAttrSValue   slpconfString
hi def link slpconfAttrBValue   slpconfBoolean
hi def link slpconfAttrSSValue  slpconfString
hi def link slpconfSeparator    slpconfDelimiter
hi def link slpconfAttrValueSep slpconfSeparator
hi def link slpconfAttrEnd      slpconfAttrBegin
hi def link slpconfAttrSep      slpconfSeparator
hi def link slpconfStringsHome  slpconfHome
hi def link slpconfStringsEq    slpconfEq
hi def link slpconfStrings      slpconfString
hi def link slpconfStringsSep   slpconfSeparator
hi def link slpconfAddrsHome    slpconfHome
hi def link slpconfAddressesEq  slpconfEq
hi def link slpconfFQDNs        String
hi def link slpconfHostnumbers  Number
hi def link slpconfAddressesSep slpconfSeparator
hi def link slpconfStringHome   slpconfHome
hi def link slpconfStringEq     slpconfEq
hi def link slpconfString       String
hi def link slpconfIntegersHome slpconfHome
hi def link slpconfIntegersEq   slpconfEq
hi def link slpconfIntegers     slpconfInteger
hi def link slpconfIntegersSep  slpconfSeparator
hi def link slpconfHostnumsHome slpconfHome
hi def link slpconfHostnumsEq   slpconfEq
hi def link slpconfOHostnumbers slpconfHostnumbers
hi def link slpconfHostnumsSep  slpconfSeparator
hi def link slpconfLocaleHome   slpconfHome
hi def link slpconfLocaleEq     slpconfEq
hi def link slpconfLocale       slpconfString
let b:current_syntax = "slpconf"
let &cpo = s:cpo_save
unlet s:cpo_save
