<!--
  Copyright 2009 Google Inc.
  Licensed under the Apache License, Version 2.0 (the "License"); you
  may not use this file except in compliance with the License. You may
  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. License for the specific language governing permissions and
  limitations under the License.
-->

<!-- 
  Sample custom entity definitions, demonstrating that such
  things work with UiBinder. 
-->

  <!ENTITY point-right  "&#x261e;"> <!-- right pointing hand -->
  <!ENTITY point-left  "&#x261c;"> <!-- left pointing hand -->
  