<?xml version="1.0" encoding="UTF-8"?>
<!-- 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. -->
<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" xmlns:ext="http://felix.apache.org/xmlns/scr/extensions/v1.0.0">
	<scr:component
		name='org.apache.felix.scr.integration.components.annoconfig'
		pid='org.apache.felix.scr.integration.components.annoconfig'
		modified='modified'
		>
		<implementation
			class='org.apache.felix.scr.integration.components.annoconfig.AnnoComponent' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.annoconfig.AnnoComponent' />
		</service>
	</scr:component>

	<scr:component ext:configureWithInterfaces="true"
		name='org.apache.felix.scr.integration.components.nestedannoconfig'
		pid='org.apache.felix.scr.integration.components.nestedannoconfig'
		modified='modified'
		>
		<implementation
			class='org.apache.felix.scr.integration.components.annoconfig.NestedAnnoComponent' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.annoconfig.NestedAnnoComponent' />
		</service>
	</scr:component>


</components>
