<?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.
-->
<jnlp spec='1.0+' codebase='$codebase'>
	<information> 
		<title>Screen Sharing Application</title>
		<vendor>$APP_NAME</vendor> 
		<homepage>http://openmeetings.apache.org/</homepage>
		<icon href="icon.jpg" />
		<icon kind="splash" href="splashicon.jpg" />
		<description>ScreenViewer Client Application</description>
		<description kind="short">A File to grab a screen and send it to a Server</description>
		<offline-allowed/>
	</information>
	<security>
		<all-permissions/>
	</security>
	<resources>
		<j2se version='1.7+'/>
		$dependencies
	</resources>
	<application-desc main-class='org.apache.openmeetings.screen.webstart.CoreScreenShare'>
		<argument>$protocol</argument>
		<argument>$host</argument>
		<argument>$port</argument>
		<argument>$app</argument>
		<argument>$userId</argument>
		<argument>$publicSid</argument>
		<argument>$labels</argument>
		<argument>$defaultQuality</argument>
		<argument>$defaultFps</argument>
		<argument>$showFps</argument>
		<argument>$allowRemote</argument>
		<argument>$allowRecording</argument>
		<argument>$allowPublishing</argument>
		<argument>$keystore</argument>
		<argument>$password</argument>
	</application-desc>
</jnlp>
