<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed 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.
 -->
<linked-list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="emotes.xsd">
  <linked-list>
    <string>emoticon_evilgrin.png</string>
    <string>&gt;:(</string>
    <string>(\_/)</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_grin.png</string>
    <string>:D</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_happy.png</string>
    <string>8D</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_smile.png</string>
    <string>:)</string>
    <string>(^_^)</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_surprised.png</string>
    <string>o_O</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_tongue.png</string>
    <string>:P</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_unhappy.png</string>
    <string>:(</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
  <linked-list>
    <string>emoticon_wink.png</string>
    <string>;)</string>
	<string>    </string>
	<string>y</string>
  </linked-list>
</linked-list>
