<?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.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<node>
    <name>hello</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>org.apache.sling.scripting.examplebundle.precompiled.hello</value>
        <type>String</type>
    </property>
</node>
<node>
    <name>hello-v1</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>org.apache.sling.scripting.examplebundle.precompiled.hello/1.0.0</value>
        <type>String</type>
    </property>
</node>
<node>
    <name>hello-v2</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>org.apache.sling.scripting.examplebundle.precompiled.hello/2.0.0</value>
        <type>String</type>
    </property>
</node>
<node>
    <name>path-based-servlet</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>org.apache.sling.scripting.examplebundle.precompiled.pathcaller</value>
        <type>String</type>
    </property>
</node>
