#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

http\://camel.apache.org/schema/spring-security/camel-spring-security.xsd=schema/camel-spring-security.xsd

http\://camel.apache.org/schema/spring-security/camel-spring-security-2.3.0.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-2.4.0.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-2.5.0.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-2.6.0.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-2.7.0.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-2.7.1.xsd=schema/camel-spring-security.xsd
http\://camel.apache.org/schema/spring-security/camel-spring-security-${pom.version}.xsd=schema/camel-spring-security.xsd
