From e05325ceb8b812fc40b7c3475c59602dde9efdae Mon Sep 17 00:00:00 2001
From: Roman Bazalevsky <rvb@rvb.name>
Date: Wed, 28 Sep 2016 19:50:21 +0300
Subject: [PATCH] =?utf8?q?=D0=92=D0=B5=D0=B1-=D0=B8=D0=BD=D1=82=D0=B5?=
 =?utf8?q?=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D0=BA=20MPD.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Серверная часть - PHP + libmpc.

Клиентская часть - AJAX без библиотек.
---
 ajax/command.php                   |   8 +
 ajax/editplaylist.php              |  72 +++
 ajax/mpd.js                        | 198 ++++++
 ajax/mpd.php                       |  14 +
 ajax/playerstate.php               |   7 +
 ajax/playlist-command.php          |   9 +
 ajax/playlist.php                  |  50 ++
 ajax/repeatstate.php               |   7 +
 ajax/trackinfo.php                 |  17 +
 ajax/volume.php                    |   7 +
 config/config.php                  |   7 +
 css/general.css                    | 192 ++++++
 images/addall.png                  | Bin 0 -> 1267 bytes
 images/addselected.png             | Bin 0 -> 1699 bytes
 images/bg.png                      | Bin 0 -> 22211 bytes
 images/control_bg.png              | Bin 0 -> 414 bytes
 images/down.png                    | Bin 0 -> 1344 bytes
 images/highlight.png               | Bin 0 -> 430 bytes
 images/left.png                    | Bin 0 -> 1306 bytes
 images/minus.png                   | Bin 0 -> 981 bytes
 images/next.png                    | Bin 0 -> 1267 bytes
 images/pause.png                   | Bin 0 -> 1058 bytes
 images/play.png                    | Bin 0 -> 1281 bytes
 images/playing_bg.png              | Bin 0 -> 19970 bytes
 images/playlist.png                | Bin 0 -> 1445 bytes
 images/plus.png                    | Bin 0 -> 1055 bytes
 images/prev.png                    | Bin 0 -> 1390 bytes
 images/previous.png                | Bin 0 -> 1268 bytes
 images/remall.png                  | Bin 0 -> 1459 bytes
 images/remove.png                  | Bin 0 -> 1256 bytes
 images/removeall.png               | Bin 0 -> 1280 bytes
 images/removeselected.png          | Bin 0 -> 1664 bytes
 images/remselected.png             | Bin 0 -> 1613 bytes
 images/repeatoff.png               | Bin 0 -> 1671 bytes
 images/repeaton.png                | Bin 0 -> 1709 bytes
 images/right.png                   | Bin 0 -> 1352 bytes
 images/songs.png                   | Bin 0 -> 1353 bytes
 images/stop.png                    | Bin 0 -> 938 bytes
 images/up.png                      | Bin 0 -> 1317 bytes
 images/update.png                  | Bin 0 -> 1732 bytes
 index.php                          |  17 +
 model/player.php                   |  44 ++
 model/tracklist.php                | 100 +++
 system/helper.php                  |  35 ++
 system/mpd_class.php               | 976 +++++++++++++++++++++++++++++
 view/default/tmpl/default.php      |  29 +
 view/default/tmpl/playlistmenu.php |   9 +
 view/default/view.php              |   4 +
 view/player/tmpl/default.php       |  38 ++
 view/player/view.php               |   6 +
 50 files changed, 1846 insertions(+)
 create mode 100644 ajax/command.php
 create mode 100644 ajax/editplaylist.php
 create mode 100644 ajax/mpd.js
 create mode 100644 ajax/mpd.php
 create mode 100644 ajax/playerstate.php
 create mode 100644 ajax/playlist-command.php
 create mode 100644 ajax/playlist.php
 create mode 100644 ajax/repeatstate.php
 create mode 100644 ajax/trackinfo.php
 create mode 100644 ajax/volume.php
 create mode 100644 config/config.php
 create mode 100644 css/general.css
 create mode 100755 images/addall.png
 create mode 100755 images/addselected.png
 create mode 100755 images/bg.png
 create mode 100755 images/control_bg.png
 create mode 100755 images/down.png
 create mode 100755 images/highlight.png
 create mode 100755 images/left.png
 create mode 100755 images/minus.png
 create mode 100755 images/next.png
 create mode 100755 images/pause.png
 create mode 100755 images/play.png
 create mode 100755 images/playing_bg.png
 create mode 100755 images/playlist.png
 create mode 100755 images/plus.png
 create mode 100755 images/prev.png
 create mode 100755 images/previous.png
 create mode 100755 images/remall.png
 create mode 100755 images/remove.png
 create mode 100755 images/removeall.png
 create mode 100755 images/removeselected.png
 create mode 100755 images/remselected.png
 create mode 100755 images/repeatoff.png
 create mode 100755 images/repeaton.png
 create mode 100755 images/right.png
 create mode 100755 images/songs.png
 create mode 100755 images/stop.png
 create mode 100755 images/up.png
 create mode 100755 images/update.png
 create mode 100644 index.php
 create mode 100644 model/player.php
 create mode 100644 model/tracklist.php
 create mode 100644 system/helper.php
 create mode 100644 system/mpd_class.php
 create mode 100644 view/default/tmpl/default.php
 create mode 100644 view/default/tmpl/playlistmenu.php
 create mode 100644 view/default/view.php
 create mode 100644 view/player/tmpl/default.php
 create mode 100644 view/player/view.php

diff --git a/ajax/command.php b/ajax/command.php
new file mode 100644
index 0000000..25567a4
--- /dev/null
+++ b/ajax/command.php
@@ -0,0 +1,8 @@
+<?php
+
+$task=$_REQUEST['task'];
+
+include('mpd.php');
+include('../model/player.php')
+
+?>
diff --git a/ajax/editplaylist.php b/ajax/editplaylist.php
new file mode 100644
index 0000000..b7e8bf4
--- /dev/null
+++ b/ajax/editplaylist.php
@@ -0,0 +1,72 @@
+<?php
+
+function escapePhpString($target) {
+    $replacements = array(
+            "'" => '\\\'',
+            "\\" => '\\\\',
+            "\r\n" => "\\r\\n",
+            "\n" => "\\n"
+    );
+    return strtr($target, $replacements);
+}
+
+include('mpd.php');
+$dir = $_REQUEST['dir'];
+
+?>
+  <div id="playlist_menu">
+	<table>
+		<tr>
+			<td><span class="button" onclick="RefreshPlaylist()"><img width="20" src="images/playlist.png"></span><td>
+			<td><span class="button" onclick="PlaylistEditCommand('addall','<?php echo escapePhpString($dir);?>')" ><img width="20" src="images/addall.png"></span><td>
+			<td><span class="button" onclick="PlaylistEditItemsCommand('addselected','<?php echo escapePhpString($dir);?>')"><img width="20" src="images/addselected.png"></span><td>
+		</tr>
+	</table>
+  </div>
+  <div id="items">
+    <table>
+    <tr id="items_heading">
+	<td></td><td>Title</td><th colspan="2">Control</th>
+    </tr>
+    <?php
+      $dirs=$mpd->GetDir($dir);
+    ?>
+      <tr id="home"><td></td><td><span class="button" onclick="EditPlayList('<?php echo escapePhpString(cut_upperDir($dir));?>')"><img width="20" src="images/left.png"></span></td><td></td><td></td>
+
+     <?php for($i=0;$i<count($dirs);$i++) {?>
+      <tr id="item<?php if($i%2==0) { echo "Even";}else{echo "Odd";}?>">
+	  <td id="track_number"> <a name="<?php echo $i;?>"></a></td>
+  	  <?php if($dirs[$i]['type']=="directory") {?>
+		<td id="file"><span class="button" onclick="EditPlayList('<?php echo escapePhpString($dirs[$i]['name']);?>')"><?php
+			if ($dirs[$i]['name']==$dirs[$i]['title']) {
+				echo htmlentities(cut_lastDir($dirs[$i]['name']));
+			} else {
+				echo htmlentities($dirs[$i]['title']);
+			}
+		?></span></td><td><span class="button" onclick="PlaylistEditCommand('adddir','<?php echo escapePhpString($dirs[$i]['name']);?>')"><img width="15" src="images/plus.png"></span></td>
+	  <?php } else {?>
+		<td id="file"><?php
+			if ($dirs[$i]['name']==$dirs[$i]['title']) { 
+				echo htmlentities(cut_file($dirs[$i]['name']));
+			} else {
+				echo htmlentities($dirs[$i]['title']);
+			}
+		?></td><td><span class="button" onclick="PlaylistEditCommand('addfile','<?php echo escapePhpString($dirs[$i]['name']);?>')"><img width="15" src="images/plus.png"></span></td>
+	  <?php } ?>
+	  <td id="checkbox"><input type="checkbox" name="itemlist[]" value="<?php echo $i;?>"></td>
+      </tr>
+    <?php
+      }
+    ?>
+    </table>
+  </div>
+
+   <div id="playlist_menu">
+        <table>
+                <tr>
+			<td><span class="button" onclick="RefreshPlaylist()"><img width="20" src="images/playlist.png"></span><td>
+			<td><span class="button" onclick="PlaylistEditCommand('addall','<?php echo escapePhpString($dir);?>')" ><img width="20" src="images/addall.png"></span><td>
+			<td><span class="button" onclick="PlaylistEditItemsCommand('addselected','<?php echo escapePhpString($dir);?>')"><img width="20" src="images/addselected.png"></span><td>
+		</tr>
+        </table>
+  </div>
diff --git a/ajax/mpd.js b/ajax/mpd.js
new file mode 100644
index 0000000..5d64a92
--- /dev/null
+++ b/ajax/mpd.js
@@ -0,0 +1,198 @@
+
+function RefreshNowPlaying() {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  document.getElementById('nowplaying_content').innerHTML=this.responseText;
+  document.title='MPD Player: '+this.responseText;
+};
+
+req.open("GET", "ajax/trackinfo.php", true);
+req.send();
+
+}
+
+function RefreshPlayerState() {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  if (this.responseText=="play") {
+    document.getElementById('playpausebutton').innerHTML="<span onclick=\"Command('pause')\"><img class=\"button\" src=\"images/pause.png\"></span>";
+  } else {
+    document.getElementById('playpausebutton').innerHTML="<span onclick=\"Command('play')\"><img class=\"button\" src=\"images/play.png\"></span>";
+  }
+};
+
+req.open("GET", "ajax/playerstate.php", true);
+req.send();
+
+}
+
+function RefreshRepeatState() {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  if (this.responseText=="1") {
+    document.getElementById('repeatstate').innerHTML="<img src=\"images/repeaton.png\"></a>";
+  } else {
+    document.getElementById('repeatstate').innerHTML="<img src=\"images/repeatoff.png\"></a>";
+  }
+};
+
+req.open("GET", "ajax/repeatstate.php", true);
+req.send();
+
+}
+
+function RefreshVolume() {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  document.getElementById('volume_total').innerHTML="<div id=\"volume_actual\" style=\"width:"+this.responseText+"%\">";
+};
+
+req.open("GET", "ajax/volume.php", true);
+req.send();
+
+}
+
+function RefreshPageStatus() {
+
+  RefreshNowPlaying();
+  RefreshPlayerState();
+  RefreshRepeatState();
+  RefreshVolume();
+
+}
+
+function RefreshPlaylist() {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  document.getElementById('playlist').innerHTML=this.responseText;
+};
+
+req.open("GET", "ajax/playlist.php", true);
+req.send();
+
+}
+
+function EditPlayList(dir) {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  document.getElementById('playlist').innerHTML=this.responseText;
+};
+
+if (!dir) { dir = ''; };
+
+req.open("GET", "ajax/editplaylist.php?dir="+dir, true);
+req.send();
+
+}
+
+function RefreshPageContent() {
+
+  RefreshPageStatus();
+  RefreshPlaylist();
+
+}
+
+function Command(cmd) {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  RefreshPageStatus();
+};
+
+req.open("GET", "ajax/command.php?task="+cmd, true);
+req.send();
+
+}
+
+function PlaylistCommand(cmd,item) {
+
+var req = new XMLHttpRequest();
+
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  RefreshPageContent();
+};
+
+req.open("GET", "ajax/playlist-command.php?item="+item+"&task="+cmd, true);
+req.send();
+
+}
+
+function PlaylistEditCommand(cmd,item) {
+
+var req = new XMLHttpRequest();
+
+req.open("GET", "ajax/playlist-command.php?item="+item+"&task="+cmd, true);
+req.send();
+
+}
+
+
+function PlaylistItemsCommand(cmd) {
+
+var req = new XMLHttpRequest();
+
+var selected = [].filter.call(document.getElementsByName('itemlist[]'), function(c) {
+  return c.checked;
+}).map(function(c) {
+  return c.value;
+});
+  
+req.onreadystatechange = function () {
+  if (this.readyState != 4 || this.status != 200) return;
+  RefreshPageContent();
+};
+
+params=selected.map(function(el) {
+        //Map each field into a name=value string, make sure to properly escape!
+        return 'itemlist[]=' + encodeURIComponent(el);
+    }).join('&');
+
+req.open("POST", "ajax/playlist-command.php?task="+cmd, true);
+req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+req.send(params);
+
+}
+
+function PlaylistEditItemsCommand(cmd,dir) {
+
+var req = new XMLHttpRequest();
+
+var selected = [].filter.call(document.getElementsByName('itemlist[]'), function(c) {
+  return c.checked;
+}).map(function(c) {
+  return c.value;
+});
+  
+params=selected.map(function(el) {
+        //Map each field into a name=value string, make sure to properly escape!
+        return 'itemlist[]=' + encodeURIComponent(el);
+    }).join('&');
+
+req.open("POST", "ajax/playlist-command.php?dir="+dir+"&task="+cmd, true);
+req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+req.send(params);
+
+}
+
+// setInterval(RefreshPageStatus, 5000);
diff --git a/ajax/mpd.php b/ajax/mpd.php
new file mode 100644
index 0000000..9f435e2
--- /dev/null
+++ b/ajax/mpd.php
@@ -0,0 +1,14 @@
+<?php
+
+include('../config/config.php');
+include('../system/mpd_class.php');
+include('../system/helper.php');
+
+$mpd = new mpd($mpd_host,$mpd_port,$mpd_password);
+
+if($mpd->connected != 1){
+        echo "Not Connected to Server";
+        exit(1);
+}
+
+?>
diff --git a/ajax/playerstate.php b/ajax/playerstate.php
new file mode 100644
index 0000000..c4735a3
--- /dev/null
+++ b/ajax/playerstate.php
@@ -0,0 +1,7 @@
+<?php
+
+include('mpd.php');
+
+echo $mpd->state;
+
+?>
diff --git a/ajax/playlist-command.php b/ajax/playlist-command.php
new file mode 100644
index 0000000..19344da
--- /dev/null
+++ b/ajax/playlist-command.php
@@ -0,0 +1,9 @@
+<?php
+
+$task=$_REQUEST['task'];
+$item=$_REQUEST['item'];
+
+include('mpd.php');
+include('../model/tracklist.php')
+
+?>
diff --git a/ajax/playlist.php b/ajax/playlist.php
new file mode 100644
index 0000000..78fe8ad
--- /dev/null
+++ b/ajax/playlist.php
@@ -0,0 +1,50 @@
+<?php
+
+include('mpd.php');
+
+$cur_track= $mpd->current_track_id;
+$playlist= $mpd->playlist;
+?>
+<div id="playlist">
+<?php include("../view/default/tmpl/playlistmenu.php"); ?>
+<div id="items">
+    <table>
+    <tr id="items_heading">
+	<td></td><td>Title</td><th colspan="4">Controls</th>
+    </tr>
+    <?php
+      for($i=0;$i<count($playlist);$i++) {
+    ?>
+      <tr id="item<?php if($cur_track == $i){echo "Active";} elseif($i%2==0) { echo "Even";}else{echo "Odd";}?>">
+	  <td id="track_number">
+		<a name="<?php echo $i;?>"></a></td>
+          </td>
+  	  <td id="file">
+		  <span class="button" onclick="PlaylistCommand('playitem',<?php echo $i;?>)"><?php
+			if ($playlist[$i]['name']==$playlist[$i]['title']) { 
+				echo htmlentities(cut_file($playlist[$i]['name']));
+			} else {
+				echo htmlentities($playlist[$i]['title']);
+			}
+		?></span>
+	  </td>
+	  <td id="move">
+          	 <span class="button" onclick="PlaylistCommand('moveup',<?php echo $i;?>)"><img width="15" src="images/up.png"></span>
+          </td>
+	  <td id="move">
+          	 <span class="button" onclick="PlaylistCommand('movedown',<?php echo $i;?>)"><img width="15" src="images/down.png"></span>
+          </td>
+	  <td id="remove">
+          	 <span class="button" onclick="PlaylistCommand('remove',<?php echo $i;?>)"><img width="15" src="images/remove.png"></span>
+	  </td>
+	  <td id="check">
+		  <input type="checkbox" name="itemlist[]" value="<?php echo $i;?>">
+	  </td>
+      </tr>
+    <?php
+      }
+    ?>
+    </table>
+</div>
+<?php include("../view/default/tmpl/playlistmenu.php"); ?>
+</div>
diff --git a/ajax/repeatstate.php b/ajax/repeatstate.php
new file mode 100644
index 0000000..c983152
--- /dev/null
+++ b/ajax/repeatstate.php
@@ -0,0 +1,7 @@
+<?php
+
+include('mpd.php');
+
+echo $mpd->repeat;
+
+?>
diff --git a/ajax/trackinfo.php b/ajax/trackinfo.php
new file mode 100644
index 0000000..e5cc464
--- /dev/null
+++ b/ajax/trackinfo.php
@@ -0,0 +1,17 @@
+<?php
+
+include('mpd.php');
+
+$cur_track= $mpd->current_track_id;
+$playlist= $mpd->playlist;
+if($cur_track !=-1)
+
+    if ($playlist[$cur_track]['name']==$playlist[$cur_track]['title']) {
+        echo htmlentities(cut_file($playlist[$cur_track]['name']));
+    } else {
+        echo htmlentities($playlist[$cur_track]['title']);
+    }
+else 
+    echo "No Track selected";
+
+?>
diff --git a/ajax/volume.php b/ajax/volume.php
new file mode 100644
index 0000000..bd3caf0
--- /dev/null
+++ b/ajax/volume.php
@@ -0,0 +1,7 @@
+<?php
+
+include('mpd.php');
+
+echo $mpd->volume;
+
+?>
diff --git a/config/config.php b/config/config.php
new file mode 100644
index 0000000..fecc1f6
--- /dev/null
+++ b/config/config.php
@@ -0,0 +1,7 @@
+<?php
+
+$mpd_host ="localhost";
+$mpd_port = "6600";
+$mpd_password = "mypassword"
+
+?>
diff --git a/css/general.css b/css/general.css
new file mode 100644
index 0000000..19078d4
--- /dev/null
+++ b/css/general.css
@@ -0,0 +1,192 @@
+/*
+#525356
+*/
+
+
+
+* {
+	margin:0;
+}
+
+body {
+	text-align: center;
+	font-family:arial,sans-serif;
+	margin-top: 15px;
+	margin-bottom: 15px;
+	color:#AEAEAE;
+}
+
+a {
+	text-decoration:none;
+	color: #AEAEAE;
+}
+
+table
+{
+    border-style:none;
+    padding:0px;
+    border-collapse: collapse;
+    border-spacing: 0;
+
+}
+
+img{
+	border:0px;
+	margin: 2px 2px 2px 2px;
+}
+
+button
+{
+background  : none;
+cursor  : pointer;
+border: 0px;
+margin      : 0px;
+padding     : 0px;
+}
+
+.button
+{
+cursor  : pointer;
+}
+
+#heading_tbl {
+	width: 400px
+}
+
+#frame {
+	text-align: left;
+	border: 1px solid #000;
+	width: 400px;
+	background:url(../images/bg.png) no-repeat #251616;
+	margin: 0 auto;
+}
+
+
+#nowplaying_heading {
+	font-size: 1.3em;
+	font-wieght: bold;
+	height: 30px;	
+	background: url(../images/control_bg.png) repeat-x;
+	border-bottom: 1px solid #525356;
+}
+
+#nowplaying_content {
+	margin: 10px 5px 10px 5px;
+	text-align: center;
+	border: 1px solid #525356;
+	width: 380px;
+	padding: 30px 0px 30px 0px;
+	background:url(../images/playing_bg.png);
+	font-weight: bold;
+	color: #fff;	
+}
+
+#control_buttons {
+	text-align:center;
+	width: 390px;
+	margin: 10px 5px 10px 5px;
+}
+
+#control_buttons table {
+	margin-left:auto; 
+    	margin-right:auto;
+}
+
+
+#control_volume {
+	text-align:center;
+	width: 390px;
+	margin: 10px 5px 10px 5px;
+}
+
+#control_volume table {
+	margin-left:auto; 
+    	margin-right:auto;
+}
+
+#playlist_menu {
+        font-wieght: bold;
+        height: 24px;
+        background: url(../images/control_bg.png) repeat-x;
+        border-top: 2px solid #525356;
+	margin-top:5px;
+	margin-bottom:5px;
+}
+
+#items_heading {
+	text-align: center;
+	font-size: 1.0em;
+	font-weight:bold;
+	border-bottom: 1px solid #525356;
+	border-top: 1px solid #525356;
+	background-color:  #333;
+}
+
+#home {
+	text-align: left;
+        font-size: 1.0em;
+        font-weight:bold;
+	border-bottom: 3px solid #525356;
+        background-color: #251616;
+}
+
+#items {
+	font-size: 0.9em;
+	text-align: center;
+	min-height: 400px;
+	background:url(../images/playing_bg.png);
+}
+
+#items table {
+	width: 390px;
+	margin: 0px 5px 0px 5px;
+	border: 1px solid  #525356;
+}
+
+#file {
+	text-align: left;
+	width: 100%;
+
+}
+
+
+#itemEven{
+	background-color: #251616;
+
+}
+
+#itemOdd{
+        background-color: #333;
+}
+
+#itemActive {
+	background: url(../images/playing_bg.png);
+	color: #fff;
+}
+
+#itemActive a {
+	color: #fff;
+}
+
+
+#move img {
+	margin: 1px 1px 1px 1px;
+}
+
+#remove img {
+        margin: 1px 1px 1px 1px;
+}
+
+
+#volume_total {
+	width: 100px;
+	border: 1px solid #525356;
+	height: 5px;
+}
+
+
+#volume_actual {
+	background-color: #d9600c;
+	height:5px;
+}
+
diff --git a/images/addall.png b/images/addall.png
new file mode 100755
index 0000000000000000000000000000000000000000..fa3983ed6d71921d29f1cf179123d0770f41edd0
GIT binary patch
literal 1267
zcmV<P1PuF$P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6B`Pv+W!jx0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000C^
zNkl<ZNXMO*Ux-yz6vlshx^o>Q8`2n^#xcqu2*PTL3L&B*--3E5dx+>C;v`noQxEo*
zgo*SIdoSuG!XzRzA_yr(p+GczFq^EHBqE)unRE79tB1Y!Is2S@$C=zOcOUlN>-*NX
zzP--5jwO!b;8w!~OhJWu?i=&&L!Y{(#B+-SPMWC?flX>qRY0(cM7|~rJ^H1)B;dIN
zlh)44@@!Qw6I@zX!ARtMAZEhy$G>$;2LAVpEtUeevoTd1iX}3dz@@2x#x;b?pZwk}
z3OxJyvsPymBz75z8Yrxp`9P*p#N$lEe)T~G5r((?=oSQ?`RpmH1J-h4f{S%E^_XdV
zmaGK6lHRl?na-LDS8n^+^#EVk|AbkUQEr+5=2U<X)J#Bvv{ax`?gWa0)TT@Zz3Rnj
z2hd5t>WgsLJStgjvka1(LkR?@K^e=PuD&8jF1JRKdB%Tz{D@grw@RjT7{x@I?#`sv
zRQJ3*jkS0K;@apdbFKrRQbwQ_aDzl$`^#3WWz}Q*EB5C;*o6Ff3QSn@!W00%zcIq-
z%YTIV&K1q_0G)FmJ!tBS8mMJ1taU|9>5kmgxCw)+H&9F;kLtwIl|?o8z6jZ(fHCzd
zHlV&heSu1eO86Bi(6V6U=|hY>^Icpkk+^4Y_00gx|8^_@uemjN#MfXVWi>ZnqAI8w
zW}pTG;$u)Bz{D4*FA*&p>?INuU(mgJ0)X>J_5#oyyB+Z*J_A!fUz5NHP65#X+)*il
zaR@F|6~-rzHKZKdegc50-Pb^On8B6TA#;B-b8;UmH|=6@<$CB2qqEal#<lFCy-j04
z$|!SL;LCZ`7o2(XM$YWHq1yD*u63M#eJ#E$=#JhJWd8LiQqD7X_HfMlHYAf;tp+g-
zH%+3<G2^o8tF?o*avy;BvbrYAqRh+J-^cYkE>wGl#_!_%@lSfPBt~)u7?=YCI#uHk
zU)@iWP?b}!jW({9iDzj14gh|6|6yiM?Bj|Jn;F~uAw%mnl3_LGrUA?xxH#`fSv0zn
zX=wVidbOE?>#!_J{m<E>s2Q_UM?%J96WG8|4V)pX1u$ndA$M};wT205f|CTKX!cIE
ztQ$E(@hoe7mVT}Oi`HfP)98pVKqFAri&N9LM99@gU943P16l~y2RY6izz;iCS<1>Z
zv^FEWhcOKx)?%KgN}rTk_s6V$oY+n1)!r8Ytnt-hP3C=ASI^d8Q?phn`f)n^QpdvQ
zi}m2;r*r1ClCHp9uNbL3ckZF}J{I3Nm`<2$X4cO@jha(m8QcPXXoooTJeC7Dd=nqc
zWtsG;agVeS9AM*HxCKA<zS$nZ`*_7JW+<0ksdi+8yWhqw`g!~HwuW+j4ZGMq&Bs0O
z;FkPB|J8H-Tz2u%Z`-}^;{Mk^i8KyQHnY#&OWXCy0|xi+<<kDbw8w$1A+#-Ew&aTk
d-dkGC{{VMEAH(uAqJRJZ002ovPDHLkV1l;&RpbBw

literal 0
HcmV?d00001

diff --git a/images/addselected.png b/images/addselected.png
new file mode 100755
index 0000000000000000000000000000000000000000..52fbb786f130d3feb9974abe62ac336451672f01
GIT binary patch
literal 1699
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

literal 0
HcmV?d00001

diff --git a/images/bg.png b/images/bg.png
new file mode 100755
index 0000000000000000000000000000000000000000..5bd1ec8bf09e38943abdee6072852a2485fa4011
GIT binary patch
literal 22211
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
WE!2iqN4B~E0000<MNUMnLSTY6XTu->

literal 0
HcmV?d00001

diff --git a/images/control_bg.png b/images/control_bg.png
new file mode 100755
index 0000000000000000000000000000000000000000..685abbb544e988011461ec299e0b13dd1271501d
GIT binary patch
literal 414
zcmeAS@N?(olHy`uVBq!ia0vp^AhsL_6Of!GE|CtT7>k44ofy`glX(f`a29w(7Bet#
z3xhBt!>l<HKtc8rPhVH|+uV`@de$DtbPRw(vY8<fCC>S|xv6<2KrRD=b5UwyNotBh
zd1gt5g1e`0K#E=}JJ4`;PZ!4!jq|mW9gA2DIhdoP{}_hueDc3uB7iU9{Ejl=`5Sb(
z8++>Z?cX3MfBp5HE=H~v&Tz&Z{Cf+INhp2a%5$i0lWQ7Ra%HTygn`gQpYv;Zgtktd
zb>fUKkIBwJ`~EXhhm>D3EHc`7F(vQdWI3hJvo?H8Sg6^%Vs%yeJ02skh>26v{YsQY
zr|x{hr5GICayK{g%f_fRvQtz4q)pv8;qj^N#LJN)?{>AWIw^2>pQ@VHYftmAtY2a?
zD>a-rcApLli8fNbue4QmcFyObK#78oWwzEcg}h~7)a~_&ICds|)f(N>iPh2)H|xId
zJaR3)AtJ)Q?$Z3^59g=M`2M4`-T!2EOkB;peU^V%P4ymjZF{y_1{7AFu6{1-oD!M<
DZE2k~

literal 0
HcmV?d00001

diff --git a/images/down.png b/images/down.png
new file mode 100755
index 0000000000000000000000000000000000000000..e8f3d6efecabce05623878a5cdad9f9e060370d1
GIT binary patch
literal 1344
zcmV-G1;6@<P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5;p+^`zIOz0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000D+
zNkl<ZNXMO*ON>-S6o$W=ZieRJjL3u$;%i0J#D%hO5)wlUA<>1=4Q@0>qah%X7(-yA
z#u(Wc<2$-==faH}<z)t)7>GgQ2H!fM2E+jd!h0UKZ=G{oRMma-^uUBlI$hnj>iqvX
z=Rc?FI_5aq`!*UTU<xXfb6=bHKK6y1i#>O3z)fcAgJF{rR22}cAW?lLv>yN3T^I25
z@Fwf@%BtR~U?#ZqTm>VM^MRNN3!gmb<_tXb)dow3JH0Vg9Ev3}n!u$V0gcZP7C(L1
zT@!d>&vRCK6hiDOBub$0%*+QeMMON#G^|%2q98*5hCke_z*lxXW2M0|oS5KZUQIn_
z8h=YA1-=NqX-P8eH5Ha@KIUcsU;gqbv%;gQXabm10hGqzeYk}KQCtcbmQRt79m1}h
zD#@TAr6`j?2VOkw0GbI{eLFBWk4h!C6%R0B!OBOOcgs*MJvwy`8QD&L;opz~Dtl76
zH3~J39)R<ouQ!n#^%?4OOmkFn)aQYa#(5sebr~uil{P9l;@fEa__$Ae8_hFL?r2%z
zu}U5oYBe-cpBK5eF0h7*M|?Z#qAaT<Ml%5k$_Hqk`Rox3UR7(h6jxOwo#85Ajl$Dn
zO(DFfn^fl*$6v*oI)kN@>@2Ce^t^khgU6P164#k|kmxan0nP=YP4PL-1Wl}xpiD5S
z)G>*a&6;B`IZgzvmLFCx+Q_@9(#B%!ooXcDBjZ3uQ%RxSJvPI{qj_F*w9Zs?HjSp_
z?IO1+&ndso6j6cLokB@jmq3GR6c;x0Vfu0<cvB@W`f90QrLlMbnL3ZjRQxXqWwvrs
zL<367V`Je>n0hq3gtLHdE|6#zjYE7PFcZOF9Hal9^)wbOW#Z@v+4!$$HjQhxW}Y<7
z7L6NkM_ms+y?wN98=|%1UMBwB&Gf0Ca2CMKfzvQ|qi?P>YW=kuR#-B$fu*ar;2OP5
zpZb~B;N3J9EU8CRh3xDonq6W3vOAePc97G1w=sS4aFJW9e1{zS94snPN>yt-Q_mcD
z2Wd~TY|VBS-Lbm+q2AM=wd^jmJ;}sB`x)E4mF)B{wUek*8O>1i5h#^_`AR(sXZF8~
z<{5))UuND7gWYr7p5*e;5ytjxBOCv%CafBAoI8LYUs-CVWtTxhmvKquF0}Q5`=4d`
zy4RT3cXJI?+7nzp@(us(+)8$KwCka3m2zJ77On~4eLH~FZXH%H38##I{|PF>iicjO
zw{Lj>%_g`sI?RckTglG-Rf}l?vo7H-I30SaY2o@}b-WIB7(EQEdV*UY-a%tQKNo)A
z%ZXjv$<F;<g1O4xv^AE}(A#vJ$Kq=n(+;arH84}gfA|z>Ptm_}EhqN9L4N*tOh@!a
zD-9#rpzd<*>hs-}(25gqRS!i6D!PxOXMP`&U92sh5!wh2u=+jRte3q5FGTQeXHeBD
zGn3{jeYs}9;DPsX*Sy|-ySWxQYz}V)S6j2@1KgZ1^drxAQ`yx=w`C80h`X*=n0=e-
z-giCfT!#h>)_%nGy~1>k;f=wx%_6p>i*+B*&F23mj9~ZM!P=<+0000<MNUMnLSTX)
CTV*By

literal 0
HcmV?d00001

diff --git a/images/highlight.png b/images/highlight.png
new file mode 100755
index 0000000000000000000000000000000000000000..3710d7192232fd072f0ae1c5d36ee2503b56bf9b
GIT binary patch
literal 430
zcmeAS@N?(olHy`uVBq!ia0vp^AhsL_6Of!GE|CtT7>k44ofy`glX(f`a29w(7Bet#
z3xhBt!>l<HKtc8rPhVH|+uV`@rk4Ew+S-6ZvY8<fCC>S|xv6<2KrRD=b5UwyNotBh
zd1gt5g1e`0K#E=}JJ4`(PZ!4!jq{<CH;Uah;9=%B{J+in`oG;zUpoZ)ZHn+WJE+|8
z<o<nog$99!N{*ii@$C!;>k{SdSOn&Ft>km4jd*kD=g+$EuWQ7<F?s|DF)Zzp{>5k0
zzBc0Mqnr1iDVWEsIK5kXeqa8^l|`}(SPb7fO}ZQH(=<z_UvAQsr?+aq74%uUtlqPG
zuHv}^Z!%vcH7edd9)D)ty>hw#Zi~C359sTg&0cu)Yi#rVqq=!%NB5l;^N3y7z$|Cd
zdHa#p`;CPkq*TprU249(c>m_>Pi=M9a<+V#vNyo+NuiLs8{_e5AD3J%5DGo|Nj=Fu
zq00Oc=V?FhIoH=d-|+P4nxwsq^>2>Uu-^QALm{5+Lg1U)*}{@@F4$W8-2dM{|8Tu!
W{FR<vzHG*zu=8~Fb6Mw<&;$VFw6C)O

literal 0
HcmV?d00001

diff --git a/images/left.png b/images/left.png
new file mode 100755
index 0000000000000000000000000000000000000000..00714b7648ea1f73f65024fb2ca2c615a3acd825
GIT binary patch
literal 1306
zcmV+#1?BpQP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5;iPYKT0kD0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000DW
zNkl<ZNXMm@U5Hgx6vu!2&h0w)&ghhB<b(8}kyb=s4-<ielq8Y#g*{0Wm1*{cL=;4i
z^-u^_6hXc8&`S_mnP^2+B0_{OMu|m6TBD;zj@Rosd#%;O-uryqnQ4aUz~St3_Fn71
zKK^U%eH^pAvOSv&6EFo8%CWDFTX%o#W~0x|47k}$eNb#tf~o?76-HF&gu(m2aB~9g
z?cQwtURl*!70d*e=2b9~aXuJkLTAH1H*4T?yEa-<-0zL4;!rFZqX}H<5zsh?F#O;F
zHzV-bosU@QQ3$cC7*PU+IWr%ODI(%=reVGM5CsuNHvZ(M1)liyAuAP@;lu<N^J?lb
z)A%lx6!;?arlpZd)>OD?%MmvT_{@$6%nFaHqzPb71qezFaIFPccdXz*k^cmWf|R68
z1YPvZm;-1gVD(uLHjhdrw-pb<?Px8(o%6r!#Q7Yn8mTb_RAf@PH4?Sz@#zoOn^p2w
zgeeK5m;}MWtJcFni*rA`Q_O41do?|^xmW>lZpjNh*91_>BTyf3-?+W<KHAr8;P0JJ
zpgt?oFuBaivPxt$6Oh1s0C(bpb(W}4jji<(YF~K|!#6w%11*lfw+hS87HeGetSmdN
z5HIp3)j0+RP4!uyl~P(48QWQT7em)SOryP!^T)nNdS`;=vE)oD?2VunOAU!0V}X<o
z%%CYgFDx$WHF#_ybXKfm_{PT==qv)@f`ylJ@xAY3dAG103^M}^X9>bMvu``y!@KH5
z8~N2#$%4fQPBj`3^47WH4n{_|Ffg>ZkZTN%Ft~JdRvXL2!H-Z29`-klrsP>!i&}cy
zS#}#EH$Bb3&?U_EGU8qm$G8%_sghHYD?A&`4ueZaY0R6?|GCT(hrwCQj0;9Ii^d_o
zAedyQ7~i`M*BWMM*=icCp}Bi(0n`YfP9ty%b?I?v`f~C&j_-bn#cN==0&Xg3-o^6X
zjKGrhPz~X==(QF(_Ic<qCO9cst?KdPhxzOC=ecz4D-pcI`4fj2|85)E=_3VUEIqBx
zpx)TQ;Bm@vja)th4M3^inw8zCd;DjP?bynaJ6~h|^3`ZI!O8va#%55_=%$Hv)w;^K
zarKKwok)gCj!2G|49RoE=cvyy@9B;o;^=43G4bm+%v-zyS_@E%dqONt)hX^YXCOu)
zbKR@B27vb&l4nR3pOT?IM^uA=LU-&(e*ffICXVc*ec5PGQc<Q>f}~rb0iq!d>3c0e
z`?oeN9AB&!Dc6_C_L6J4aOGP5{PN}cno0>dSO1=fWe!HS(YGIquL&jztLDdG;*SHU
zDz3c{-#t~-s8!HY$>93tY?`Cb-lsy#O~5tY#21U*XJFm}eD9ySTm3ArfCJpT9XIV^
z@7pIM_*5iyOpakiQ&Cd=nhjRHj+^m#`}LMu<R;bNR7chST64=AxLF_Qzj}Nsmd)HE
z`<JbL6E~+{m_3{8-dEX6KkE|*3~qgkx&6ZQU%NM@Eq`jVC0?v~dv-ei1pv%8F@U@D
Q$^ZZW07*qoM6N<$f)pHKi2wiq

literal 0
HcmV?d00001

diff --git a/images/minus.png b/images/minus.png
new file mode 100755
index 0000000000000000000000000000000000000000..dff37f6858d599204e3346469e89c4b9319701b0
GIT binary patch
literal 981
zcmV;`11kK9P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z696+^>AaZ$0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~0009l
zNkl<ZNXNBTJ&P1U5Pb!MhzKH@7#R2)Oawth#85ENNJK%7I}b(71Wk=Z@B{q^CMJrA
z+=&PxVjyUwfr+6Q7^ryccGWZJ?&<2@S$8?s4t8ef>3*-O-mB>q%sEEu%LEmm0j4PT
zp}OC4;<3!LpUehaAuYs>sRh&wfPy^<Kd0Dw>V<3ycw=paZB+Epnu1hFo;L-N$%ROa
zifyOg%G|(zo-Z+P+(tt)2n@_*EQ4#E0ZVgGY(M)!W&;0ycAh1om|}4x3Q(LQLnPB@
zBtU5KeG4%Qs@SpgS*8O2dU}p!!;(%=A*rsk0MgR4x)Ovw^|V4Vucaw=u6~sX;Ga*<
zkbOj6G!aZp0mMy71vI7>J!ndI2897yM41J;`|>vdfGz`D7{$d5Fm<(c5o9&T5-7xC
zX6Th}p(hBRZc8M6#6KRLBwgM5H08xGP_<UKOSR>?`|?zC$pL9@&(#g-0KjydfEwV6
zL|uDdhDn<hTV*j;<pChyA0B6xJ}R|(3)P#lc}G%YB@5<+mvobT4gv%^3!{dm6A!bh
zts+2;>Ccv<I`z^DK?Xom#2^Sj1R#M<!?<T${F+3g&d2ceiz1{Y5h0UNh$_t653Eg_
z^wpV;$|5tEDfX_s$0Em<YckO^IvtOS7aPehYR~{C<P6@Kj#0#wt_vOtK$vtTkwn)w
z4h=<M|0!Y$AnCqOb%{7E9N40RAndgT`E+9+!K6ejsy6pcrRzo#tCfCZ&6uwo{?Lkh
zzlbZ0082ow7Z*P!LQ<AWs?`JoGzc6(PWJ);AFuCXj*1qW2NC@XS_EOk+=q&RkQ)Ec
z*?Ip>#9kf3D1ud|4%W;ESohBy&MDcHVu;hbD;?wUg%fywHJe7%mX%Cxu}MZQ&w*QL
zzQ-D>g?R;~j%-LkRn1W>1DT?Sc8fQcKo4B$COyz~9}d)bBDDz|01n=UOg-$qzL>y=
z8o|E=CC*aq&IAtKfy_MKzFMs^Hz?RyKK0}9UCch-=JE2vkjiGX#(~$4+{63_dOy}z
z>gc_C(W*XcfWXoF*xX;3cC0POtvN+(Sr^A1%(v%XIz`r;#|0)W00000NkvXXu0mjf
DLEN1v

literal 0
HcmV?d00001

diff --git a/images/next.png b/images/next.png
new file mode 100755
index 0000000000000000000000000000000000000000..fc2c7911f6ec242288328a7a3baaa625016ad4c1
GIT binary patch
literal 1267
zcmV<P1PuF$P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6DlyPiy;dD0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000C^
zNkl<ZNXMO*Ux?L36vsbvz3y&nB2s9X^d1NyQY3~%gw#WUL4SxM3PRjAOXxL%9(;<5
zO4_HMiVfYc%p^1-=-;C)z4R0%iISr2wOa4YoO61Z`Tf1W)r$j{-~8^JIp6dB&Y3gw
zbBx*i$-RaNn1TvbKQ{UkyFYj1_;c3=oH5gw9Gg_2s(@f+5cM%(>WQ!2bpc;FF=K63
zR%fe%nc#|X6^tUdm;y6l`k9~H*ucwQ?Xkjfn~kaBP^<_>3vg*Fpm_}8#^-)^*989e
z_zPAsN)o$T5EW1wGm9yhQjv%=P4*g-3L>oA^Q&7C_@86XTjj8lbM2!Gjo=3JyKr?C
zGGHOSX%!?UDJT`z&;C*3^@`5rqtBX(M<k%)(dbd}n1qp~Q1M9c^lrO{$(?Uty~#8$
z1|+1p>D{OQVnCwj!rL2d1h_D=>@>Zn-w1H@sCxRFwzGQky{vigAl9EoV+NCehWv~}
zL~_4Iq6ctk;c=5}q%mL`@}#f=a2hic0QxuI!P<xBu>K9GBz8s6F{U6SdNd3<dtk~+
zU@c{7{aR5r)$y1rkknhfVGHXX{t)d?Cuti26w8pF0KN0`k5~m1E5lka?IzJ9F`%Z6
z|5x8~C+l~Alw=Q;pBQ~&tpQQt^y^r!$u2!be4dyj>XceSu3pVHaqCuYdh8IoYKoZi
z#bQ8JP&Ldz4SJHDND)<$iJBsn*p<~OAI!9~>P>Fi#)hYk;#RFeRS*mT6cEk8DxMg8
z#Wn^s49l#v6{L>Am&w%$zWHu8JpCn1tV1*dX3)eqROuhXFlAy^z+xbFFfLRv)vF#b
zQ@3wt<C6=R^-u+|3b>!vN}AQCee#R|hg7Lli=^&s7CrvrZwTNlZ2)s=N?)T-Yb7x~
zO)$x;vI4M1k4d~LV~s-wi}Rd2{wgMlkw9IJwJ*V^+FUX&m{hg8ld)xI9Vd-RVCmGy
zoISQ59bU#2c9s$hpr4!wYJ!vE6jHQyrjD@D3~F?$vGmJf&U~>S9S+KqsBPMp=s`13
zzFC;X^3b<V;A*YfpnorZ!k?eLlt8U^2DbXWEw7z%QWlPoH+|k#F<>!{N}V&a&RC=8
z(&8abAK6D-9;B_4_pVwkqZPKkiR%Nz=s{8zSGSIp(^bhC+5kPw=_9kq@=~?dR*`MX
z-2>Qm;IfOkJgP)gtr2CH)T$s?254C3;^JX`|8$n{-%?qbBrBpdrebi{TPYX&RT+#`
zltr56eb*&5!1+^$7!J<y*Y|ToKd7!X#rAe7lda~j^Xl`%%UB(_u-oxYllG6VxH8CO
zT<Ja{Z3YL}@ot4T!sokv8N90!xz@(D=IzbZw^-eQ!Or(^*Sy|-JKI#)#`r3@n$3Oh
z<Ho+wfAeC^myPqy(QS7BLB_w(*W1aN&ipDRbuG%4*Ytr8xV}%Ab~~{*xh`4Nfogkp
d*W7qM{|6T{hDF-uC++|M002ovPDHLkV1hJkU2OmW

literal 0
HcmV?d00001

diff --git a/images/pause.png b/images/pause.png
new file mode 100755
index 0000000000000000000000000000000000000000..9508f98e7283f49fd38c074f4731e4f2f7a3af89
GIT binary patch
literal 1058
zcmV+-1l{|IP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6CMKCc7uEX0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000Ad
zNkl<ZNXMO5z3UxS5Iyr_ksyMK*8T-HA~p&^L@WgxQ;8_Vke|ViKS1nKiAYqmwX(4>
zh)5z55J{_@t%8Usq==%~J2S^(?#JGJd*6HH!sG3GcXrOqnKQF@1xK#=`bB~U&;d8J
zYwfP@dErYr#-AJpJSAPjF|C2R12C`#vD`D9IrpvH74U!8PPxvC%WU018l>#IfhfUg
z1V+QXFWr=*f&cyH0*m8yHgt!;!4ixYaO)ZHya&U5uly(nf&cmXJX=OVu`GgUK(R+^
z1XCGN2tDjwg9S6(f8l2t0{{Kht85M%ouEN-UFiza^KV;}Kr8k17G$}XZg}w0FR}xC
z`|8VN&1fl_024O=;gmGMf?8D2Om_i=1J*=Y1p4sXe+U3f1=w|to2hV%n;$rLb*KKf
zK0BLBU=R;x=!S=0`)SAauPcu<x;+P(*9idJ`r<{JCAi*!YXUvNEp4j3*tjN`&TyS!
zIuC4Ts3v#{8&7xe`{gsN8M~#R)|b@SrZcnD4UkgvO<SF-7`yTSnEw3yd3rWLr&b$e
zk!rn)0A-(T(M{=d5Wl_)POfuSuXlqXqT6t0GiV{S(sCTws?C7qj6o292tWdpX@bz;
zC8|Q<APdtuPo?NzdZTZ>m{Pzkn>JTvY8iw|BY-`1OR2R79AX9^1xZE#+#MQ|rMdN@
zTUWc0Qv2cJpy{?P0c22S<N`i<R%thF@{?yf<2m=G9uATf7m|aZ#D7yA9Hv!ZGy}1x
z#>iPRR62Ub6=2EV6hJ%!7phyvAsUS8<|&J7p#frG+iF_^@LFRHu{aH4t#0mvx~X<p
zGRBP>4{WB=9$t<xo*#81RWnm3`?CeIRMyD(`sC4feiO49ZV6@yYBMY)n5LmKV`SqV
z)cFXweAwUf*n5x(090ebusd~dOkc@>hihExyD~cgfX6T27R^r?H-$TEeYU7}&mV^K
zku6J>Y)n1ze)K?Xgqv?gKxE9*nu+W>TmRS9e9=CT-MuG2SOEjT4{w4?;H4hw1X@g=
zE{K(a1wA+bJaq*!JnVh{Mh4%aPF5_iKfTFfE_V(Hoc$1T@OXRUQpe7|jyc%N0Pyrj
zIDEV<>$}$%zIe<#$F|usALIA~{c>GD?X&MhRvgGm0|cJ^1b6oevtHLOX4MbGR&?>)
cr^osHA7(GhFe|?7h5!Hn07*qoM6N<$f`V|-vj6}9

literal 0
HcmV?d00001

diff --git a/images/play.png b/images/play.png
new file mode 100755
index 0000000000000000000000000000000000000000..3591973ab0e556be7483d5cc4bba8d2d080f4a46
GIT binary patch
literal 1281
zcmV+c1^)VpP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5;YWC5TSDb0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000D7
zNkl<ZNXMO5O=ule6#nkZG<m57(S@!RQHxR(+Y%H+)Vgp{sG@=({(zLm`iCO8knZY6
zjM|pEa^u2{8%3-%MHDH;or@wxL1}Ghtd=x+kv4PBIiHJr@7z0+m*$ay$K09w^L^)>
z@0|0-VZ^JR-A7OX8eob%mezQD&sT1g^W6G?)1*l_n3_S&04UgyDCZRYXHK{c0be~n
z&8}4}tu+OyaB1EYL?S1F7!{kJJLN_OzVh8(rh~iI&<qX+CNh@5we10mb5Lw~@fWu)
z@PFUF%xqC`u`5VqpfE>DAk%n6;AmmJN$`RyuHSpctqHvR%}dM&W_N-LM@8?(tr)v$
z8&*z#4re}lAp$1X(=y4lm!`O3|Jeqwmj;8cpQmXJRS(k|CN)fJP<<Ht8k_FegYi3`
z#KiVjp`y^VURL7WLw(q*X`gtgc&OC)cjjg$yebV$>cE@=(;~Ko1*j(Bsy@bV*#)Y{
zm6Pv-=8L$-5TMwT+-*^)rNs+hKF!43#DnHx(E^h?Jd1BOy0LLg-1a#7Q*XmmpwTkZ
z8m2xzho6Xt`8vGwE4Xm5&&FcY$hyc^CWdKj0+LxAW8>)Gz8h4*(vJrK^+lTHv`S(m
z70{r30I2@?VmE_TWzJ@Cl_Eg_3;?d0z~t5^KoeX(@h(8gE^UMtGa=<Uh;s+P%B1eF
z)Xa`a)t1%U&Btm2o9}uGrXGv4?}Yr0=aB+vv={^dI2ZU=DjtpsORSQhsGt^kjMWxr
z@IJ2F_AID17LL6IqrgS65o{-I<X(l83BGq`k$^<Tfs8R!s=#^p)vNm0a?cAee-)RG
zz1f;ed`tXFeci-1#W}^-(V(V4tWGq$W<%+1>SOZOM__b7B3a&C2CqzgQ&+Qs+np!8
zTiey?@{8wj?z3Gm5@d{L3I_u^<GZRU94d{#s4=E3RohT;HSKfZEdD$?1s(j|_|-9h
zq&pqpECMH2XX}Dn(W%uT=EE(P<%{^^$P{FGz6fl)AtVCU#8^V&8x>Bos;%g$j0A=O
z`^)F?`{A9?!F-5>8{T`nJ1dnMun3e=fYLO5CPHoq=wKed9h!n)x{v|OWgLPW$GyAX
zn{%3Kta^ynP#-#qi3dfXV9;A}s9&1LnVIcaS(<|(_J{5-rmYcBhPxSX?+0)d0EpCp
zW|yuikI{uJK!5#sC;Z~vP;1Kkb$NTs89e~F@8H0R#15hYGqzbqi<Zy*3_rMt(=$7;
zvhY_}V{uKiCOs<yaBGghjt@gn8Y!H5BM?gYS6W)igl;S}gYs?6&(?F9QpMc;A9a8M
z;N<H;xCyxQU{isL>eEs&JE?;<H~>8GNyb|x{-0ip;6w72uHyx^bH){Qxpe@62M@um
z`}g*T{Vnf+BYYKHYt2K4;YR*L|NSe)Ssdk?WB9U%kHBr{6J~b0ZT-+z=Q<i7@aR!&
r>=UMY9p4vKzlPY7E*|@Iv@`z)@_c!O1F`g000000NkvXXu0mjfU07JK

literal 0
HcmV?d00001

diff --git a/images/playing_bg.png b/images/playing_bg.png
new file mode 100755
index 0000000000000000000000000000000000000000..f2e2337aef06dcee8986d39bc3aaeb257dbbb13f
GIT binary patch
literal 19970
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
Rs$c*B002ovPDHLkV1m;Uu(tpJ

literal 0
HcmV?d00001

diff --git a/images/playlist.png b/images/playlist.png
new file mode 100755
index 0000000000000000000000000000000000000000..ae4af1407b278a516d2488bc582098e737df35ff
GIT binary patch
literal 1445
zcmV;W1zP%vP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z69N&szn}jA0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000F1
zNkl<ZNXMO*TZmOv7{`BWpFQWyQAZsewegagWN0OXMAF?5=^+DqsE3Lu2=UTYdJ!sm
z$%lv{6MGCIdJ)Qs3JsAWOiRcqx|m_(1sxq7=X%cBd#&&5VeP%oKI7P&alzs2Gi$By
z|Np-A|NeW8p~(^L+o-4m6%a@L*)}{E*Y7dS#53aqZc-KN1FNfpiU1DHNaW`nt&e?c
zt_irhcax6JO7q!@L)Br@d2uKyIqQk3W73lcP1C@YZ#HNecyu-@f<e%fjHKYMu>z9J
z;h6IDFJ@fe;jf<6dPcs)CP$(U<mXhaCzDmgVpRNkvAzn<F>S-2=BmI$Up}Mtfc0{s
z4wIa#ibYkD-!69qHY>eKon*RK#nHZ{+gt%W`1w<+Sw_jGAS5Wy!1Z@y!~sdr*69?c
zE=Fq?K{Wx@y69AVrs6f?&L1TeXva%E1|Up<#YUdFTEsbmNgcG_`Zz(`eBzVeQT^>>
zP)Ez$RZLp76;p2a8&z{P(=mnGyW{$dL^?u%zTJ<ib8&WV1R+8D5?bcn0fiE%P(869
ztq#z#cn!hiSxjU|9Qk7q$JsYqwR2n51OVb<#76Z`ZIHO{U)<1nur=)EZfyT4+{gu@
z^IfQmCkAX|#KySTe*>5cpFFIo^vSCg2&XTiFm*mrPZu(9%9pFyMrq+a6zATK+6ro`
zNeR`Lz2R9=gv)zh@tr|B2d3wv2a}$a24lb_L<%7qk2I)MH6SRK(YTtlQ>tFcOh%Jd
z!#Su80Ez;}cut|SF-9FCF4wO~JDC;=tsTh7ag;i#pxi;&u@pDl>(?Qu^A;M2AnFKI
zvdTqgkL2o}h)Z0AI`2A0Bq3l4+B%uG>N#547cp||Yx)oE#2}Owt!C!h?G#dh<&=6A
zQS;9mr7KJ$ba9lOZFbIuBBfc&Dc`Uf6Sh)TVepSHkXk>Jm#rsk>zt6dR1!|64j!b6
zb~Z*_jI$B0GC-~OZ|uMsG_Df$9w+MSCK@<L<@8SzR<)z9J5g{7VP+i8W&%^^7&+U;
z+0QmpoUxe7>BHD+Kk6)fKYxfF>Y=>wZZsZ2Y_;i()qqK!&9S$ZDh>YXO+T~0u!u&3
zUZtrPOo5;{1+~$5$Lr^!K@XN&7djh*Iz%1D)m1HGF@;uICeNWZd?|Zr7?iMWHpR{r
zxZw*~Fq69H7%$rDnIl&a3!RNXJW!gYs-<Q60<K&0I;B}R(tmU}JqNY}Fm>5F7Cf?x
zaLSy-s%6|#cWo=xQ%#tLx4e4B9DQx3YSN=Bjvy$}I(H>gmp?=hmO<gtub(2d0oreS
zf|hCXn!h{Y1*Mv-Rap5p-m9&RaB+l-{C8ZvOy%6~M13cbxI*RpU)1_f5e@Y+bn-AV
zQB_Ow_Dntvgb!^E)n8wdnINRxxq|ZSn;1IzBhkeZV4zT*N&C&~Xj^h05?2sgZOB?R
zvBg~Q?maJK)T?^cJO0nvo`WxX#B^hVPEaf((Qsqnut=fQhB&Y4G-y_S%^8M*iw3i~
zJKr4z4DiDX{vweA=k<{O(46};s8}1cQ*WIF9N@0^Fjv*a_s=KbWA$S`>geV*xt1Co
zS>fItm~pSS2evd+?tjgJQN}RVxc_}j(-->vn{%<WxxN`|*#kRi{z9K0`!+RZpBGsc
zz>Ly>!kS%N+rKcQ$KH*J>aQZUR2OSMXfEb|E6wGx6$UdC00000NkvXXu0mjf<`AI-

literal 0
HcmV?d00001

diff --git a/images/plus.png b/images/plus.png
new file mode 100755
index 0000000000000000000000000000000000000000..b72d57908a97ef7f31df90d88308ced748811ac9
GIT binary patch
literal 1055
zcmV+)1mOFLP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z696dJjCFMY0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000Aa
zNkl<ZNXNBTF{oWd5Iys`NDzZqSqZU^g#-~TL_{nDX^c$}1qt~ETMG$x5kWMdqNSaU
zjS?gzB7%jLAXsQ&qaYRvic$36ota}XyLac^ci(?6;k)o)@7=pI=ggd$-6z;_j5jV2
zG=L7cq0e<?e#e=QWfyz0-Qhmz8ir}zsXG7zClGnfaO~`7a$Ao7y}r*mD`vKCAPv&i
z-9R*O8o+3{^W0amv*UlRoo6#VXG3=g9Bg2`Ik(jacwK|xuIIjyt&acx^aXZC5n@Ro
zx}#VlHNZ>}Q3yT0ca12R;qLR_%SOk4U45S2U=Jr~keXMz;`lSy)}r+12M<r7r+1KT
zFWqp@#UCesdu?*_lV|BR!mPk;gzE^m5wsHX63=dBQ4?kbt_4<NueE(zU|L{0;<vZ%
zW&3_;6W1|9MTJ|+ZDP>XygppVSaSuC_Ox(&6>4Vu`$tbR5FWs_fL`F0f$JF0T7tD6
zY;atrh?v%h=?Ja+Oh<S*z%Q4NaboON0%59GHiT`SbH5a79aEY0vT9-^4X{u?01Ur=
zc$&c~*K8M87Rh9Ei{sqg*eapbIf$QL1&7E@Mrj=#o2q>kz=j-4YBH>)2CIxg5P%3k
z0)uIR(BKVK6BG@!RL4l578w@+1~G%@@&i|kwgzm7l8M-hJKPQT?SGA19VcG-W8>Nn
zmt?JJ3|7V|x134-s0JNi_1v5fZe{ALQy!0a7yuyv0+awTOpU{|3+#VlOaY|Mr%-ps
zdgP9s;Y>Jb3-aA-_Y<s2w61DTXDXYT-5?+yc%5s;zkOLiE+4dln&TC5)gJ5Z3gh*t
zo9eLw5+0t%wwyoXg6BHlJ9+76vDRa)Ky8GTI8j^+s0ssvyl*@s;(VC@YS}sim^0o#
z_y%ME0M!w&6jEBWmyCQVUb8&Tzajgp`Sv{kICc4^sMZt26z*I_iO#^d*|9rd-Wjs(
zZ)*e|dNWke&tub$QaV#+s9X)iVvf;E1`<l9tml8afjn{r;u#^M@N;e&>%($PPi#GG
zu)crvO4t0F_`iG!B$uzB%n6$-xVA%b!7_oz-iB<w-hOehM+b*%YGa+|@%TH~e!Xqu
z^B0pX?(&~w`Lie9#qJmSJZ|i-vd^V58Ay~_1@+{6xV^tH^Ktz`n4VZ=N2z9?dVe>Y
Z{{g3S=OS4a(t7{^002ovPDHLkV1mMC(^3Ec

literal 0
HcmV?d00001

diff --git a/images/prev.png b/images/prev.png
new file mode 100755
index 0000000000000000000000000000000000000000..aedbbdff733b6918e27babffbdb556545b55b8c4
GIT binary patch
literal 1390
zcmV-!1(EuRP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5H=wt3gZ0$0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000EV
zNkl<ZNXMO*U1%It6vuyec6O6=^Bt4g(oaNb)7Z4AZE3PZXo`p^Emeb0LJ<*!q7U{_
z!H2&1Ak;pH)Sw7L9whX|Dyg-NvDDfYskJpJ{m@!!q#ya%W|Q5$b9|UPvoo`^N$A2d
zckey-{O|dn|2=0`vB-~eZ&XxW3l#5zGYw7-a6nZ<q8<`W$n;&Tmi1~e{uVTn!X07u
zGU#bQDE@W=5VI)mSOj}hk2_A(LQN+s)utW_Sl>D&R{9?3X$t2~8Za?n1jgPW9QU_U
zB%kVnL_N;Tqa;@Ls6_)y?usz=Js=d${EPr92vi16<X}Q_>lP3VO)sOCY)}gVOZFFG
z@+gJVXFvo&VyRtt&OJ<O`;*Z0DysfjRS{USXN5b5$)CCq?=%|Sq7DP8uC=giKdLUH
z%7BYwgOX5Rk{`KJk-icGl=2#U20{IKcU+ZeLtFc?*T1F!Y|lPneGPLr(YXmDl1LN?
z$^g4hP)f|Qu{HaYP%g&&9Es{r!c@!Du*ldeWQVh;5Ll2lH!2?#2kbNyv#z-k((g$~
zFAqLaK8OJ69$?)uR70<_0p!|SOb(6DFZJMLvX+`1AA`=58+zMaa$>He6W%^`0_v*v
z0btFI4hl1u(2i^9i2E!$pv~BSIu`cEH>rPjl2qp#zO83dR_)BZBgUTt<SvmP9TYp+
zoJan17yYa0oiZ?Iujry-&o@}LOG8=EMh<Z_6`c~#N*NhAkZjIl%e^7Sj|Vn-MrO*Y
zUq$1d0a7crl@}Tll}Lr^7uF^UxN{s@TZgb^VkB(fd9-V2+;M=~ZSPcW9EL)FPfU(I
zVWG@eKqg19C3hn%0?T4a=j*h*_!%l;&)-0#<UBTFL$#MOQC>;DfsHw}x4GuA=V*E9
zFv_wPY;9tMBb6eKVN#j8Vo7R^uRbl19Xrak11-#4{b6BXps0;{op^ESm@idpuvA00
ze_cGo!psDJf8NVKU+qG4ao!wjG2j()9KD)F0qVQ4RLf4*X3QOqoNV%sBmDVcGt;Br
z&6{H#6j|gR7bW0VV08wp=ABsCyD3+l=Bpz`p)fnm_5SC%-v0tlVYZBFFN!#-wSd-P
z%Ef`~-4s@1$8M$4?KloNIuL<`S(v!|Ef+s{go%qs$_j|LuTqYK6;7qwY3SIkEP&*O
zgFKNjQAg+wZqCm=;OZB<82hvrr!ea})Fr0kavUtdk7vMcKj_wK0K2tUsoHkdXUg;J
zi$Z%26!)+E$ocn|GIebPjpaLzrP_SgW!z}()?O9rIpe4MrTW%hem`mMnwtL=)T_NJ
z*!QCAf!`fHFuS~;wyk?rSqIGD9FUpQeOwqWiATkBM+xlo8;OdPPE~TSu?K3l43Jvc
z=erA)r_{<mRlVsD9o><(7$`9Qye=ua7-Q#+JG!B&^H2!1V$YxZYe2H6`T#gT9H_S{
zh6V|z##`QO-tW`f2dG-rSB4W?kgHbrsod&*th#nKbp@0gWx=Sn7^!@nMo76;{js2n
z`U^96`<P^Z-G`pM1i;y!;&(sYZC)B1+NpcyAgN`&5BC=)`ni36P#T-^<o_KaKR$w!
wy@BXi?1ptD+qy|D-^s-N6w5a6UX;)O0kQ}(BMcrgcmMzZ07*qoM6N<$f_R92sQ>@~

literal 0
HcmV?d00001

diff --git a/images/previous.png b/images/previous.png
new file mode 100755
index 0000000000000000000000000000000000000000..9c49139402bce1a85c361308cbeec2beee0fa27c
GIT binary patch
literal 1268
zcmV<Q1Pl9#P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6DtD^Kyh3E0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000C_
zNkl<ZNXMO*O{i5>7>1v9?!MQ9UGqw}L}=8cFiRt%fe|5PL{Su!O(Y6Jyj^rygCb}k
zNIyyzHE14KBu0N|MI_QR8#PJlLPftfHNCp``o6cp+JEPqeY*$OWUsT=+TZ(rKkv8J
z35+@N<GY0n<lsg#j|20mhmVGF?1hy9=OmBGu&e=f2MpCD+G|FC$LHa)fG-}K)38@+
zd+UZ|glgRlQIU&@n2gmszX@XlFMYO4mEmD;<W9g*MaC;|8;pRLYZ%i{ej8Q<KL5$n
zYCK9I4lNQ5P+F5>B2z~s669&W#}oxK*6#W~EDQYaM^C9S*n|@qq0Fm1B6;~ct*zO4
zVu1XacQ)4~t8eATy7`}Kyk0dq_u&(A%P}i(%kh}wmLn_DyeNN9^yzPXp5BJrv2y?L
z@L1Z3IUWlv7Ff*r^T2vld$RUs$w3jfR&M1D^Qmd3x9w+Q<~nq7k^J=W6p>+ID_XfO
z!|i3Ewmn{a|1l+om+)91FK{dHm{`jT)ax_7Z9myn*8?CI7E@$~NA=!gPK*U!<mp{;
ziC_2iReM}BZ0S`MLm6bNS$ogRWV1Ka#w9Diiygp4<84`tl7Xel2gv?-_dzAE+L~>O
zD@<L%%=TBAyn18Hw2(V7=B12Ab6m@>QbMJ3#KMaxt2U|CnJRW6>oarj0Vc1xam2Xf
zC>BX_9l$E3hLs*81cU$*WEKm846j&K-D+|*v-cljssl9T*s&^7LnFq#kslfqZCPJg
zl1z$yaL3)~WqoGvJIK`fo0jdhl3|t;Y?)9G>>X_ynH71R+mvT9`@kVqZP@a^hlkv$
zza0kFKshvz(17>66uQMEA&WW1;sUaKMPM%*Ll>}l`7G;LD*Y3fAgddP#k#<L|KcSS
zdaT*_5WQ?w2Wrb>G%6=Ay;EAPo(d2=&FfIBK7As(w8U?pK8Gx4?aey~6O+TZ2;ov^
zG+cvx0u2GLb6kquWdv)gIu=X(^6|3}GOpb82)%4-q+m?l=c;S;2pp!ES<Jy5udXm&
z9(8go|BHnqb6gv9X0|*&0Im+tMu63UT+Vx&Uidkf<*Bf&AX<(U=|u5ZVCNTEIJ$?$
zQ-=p+BGM(pyFB)0&1nkCmEPa-3L&cmkEPbu+&WsWTsXtRk$E7nZu6scsJ%PI^?Rw6
z-=X020B+rPF2q=#AQo}gAWNXQaE2d0nCI_P@8QJ~cJXX2n@%~YAy;{7g4<q8Wzn3+
z78{nKC7Tvizwi&I56`jwj_)}8!`Iky9($`{R5lo`^m?4!i`u~LdZ;^4fKUcbWem3-
z9At2EZ)ieWf&*-Qy}=t%!-+j5cvrV-Cv3=rsvSxlmIZenBCL45{c6664&91bQK#*3
z*BgYf?$rQaKGU+LasG33Z`<}J<6r38<M`a5_nk*w7^(rm-EVPue_@8lvE9kEI*YB*
e?Dn_Ev-uz6-})@v(~Eil0000<MNUMnLSTX*8%y&5

literal 0
HcmV?d00001

diff --git a/images/remall.png b/images/remall.png
new file mode 100755
index 0000000000000000000000000000000000000000..ffb546aca744ac78c90ad4e228d8592bd0591542
GIT binary patch
literal 1459
zcmV;k1x)&hP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5f&x3A!u;`0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000FF
zNkl<ZNXMO*O>9(E6vuz}%~wCBEtJnHv?#RTw1I+%r1V20YDh?vhDDdM(2WZhhJ`Lz
zxzMn1f$U63+-QoLE@Y!1T3bj2jevA0NrROJDlKK`$IQ?-^X_r+KIYAvDKxy~X5KsZ
zp7THFf6lr0j$(z6p1momW(`;=u;xJ?0|pqCVAMc(HL@^^QNLZS#NJaEi8(D~uYt7)
zDDqc_Kq*^QDbGx}{WV(_s)34^P?5FjnSiayAu+1{18bh#pBF*I22w^r)pY=T?~2IF
zJrJrvr|Stl-=S6vESXUu^&O}Xx!*4bK!QLNF(4=u5ZQOYmeszEs%%zI1(x|=h140$
zOMeFp2cmq6OgZ0?{rjNq5GwwvS{7IqhJ~pUm>2&kiR6jEWg_>liFWLSweO<hdsPW=
z{^mCl(kECNp7wzR^XYyX#lKFBCBQz1qMglH@($saJ_QhV6+?Uh<|I7MmK2L9Kpcaf
zaS*ZdDaxi+{CRgBaP`bdLb0!lsg}9(!q`F5L$*MIxe#05&WCaqIp7!`c!7lgLylAN
z?l`LDTU2egJ*%%KWZ}moN{T^UU{5AEV5JV?U-JY}-Jt|Vds2nXTZ6*GJ}hmoP_AJY
zL`toQkI-eo9bHAhPA19Htw9M#>P_?mu(T6}4uqp9K@y)#$ubW3*i*hqu^>`!5|-3C
z9$W}0OBtS|;I#@ep_Zpu;jDEWzkdNXtUre#b0g$6SmF!~THC*6hd_Ay5jGwdB0G+F
zIvbCR_wJ5{<5IBg)0amhge5zH4pkA|w4chB!$j7#5^X$yUc66!?qAHiSCD*`^ynG%
zOcDfQ&Anu9{Xj)?FX_?m3;VnF)qoSBCBCR#CbAQRMFW-VsM>XuSW_pV>h-8d6`|EH
z5USlocufmv3stqA*|YD15u#%2TTFe~LBo5Ouq0$B4#?}$6uHh6i3JQ|TgYWnWG05m
z&5mQGXY2|Sjp#g9<{|lod!)yI!qO1k)PXs3lcm%I=FAw8%^g^dVXX_p(gk2IjbhJ9
zbPHi>JIO7bX8!sB>D#{`0u|5g##)+3Y0c8~4Mb~nb`}IGxA#)@;_Gbt#J2qSZZC_s
zhdmH+DqZ~a2O2}wb)u}P0m)tK=k`!>yC`3-#7EuM568Ik)nRh8<3#GW(RlPM<Dc)K
z_0s~MqaWK!t)Ka1AK9?mdLX=e05x}GP@;GG7<Yh+TE^FhZtuEI1$Ph$hDGsS;J&u>
zfY~&NQP<X|RCU5DckPsZ-p!X~zkBnRuRW~dwZV4G`&-nq<*GWts<uA+Tni^o(%e-5
z@Pqr6EpfgrXGmdvKA`9CXV*?k7erc57N5tNpA(`Nk|ci%P*<M0(gUE(PUdI6wFiva
z1l4aO754qqeiq}$JkNuXdo%~53hYQ$fE_E4w#DjW<*z>G<bY%^_j7%S(z7pEOup}O
zTeUyho!wBie}L%beh<&^FOF{RSFv5EXzMKRxmz%Ke{l&Vd%af=8rnLcqWx46=(5+_
zr8@(XzSIv2{u(L{-rF2hxnro%c6++*sd&c#v8MhK9HSg?tg&BZ8&9LE6YT0LuGGAg
z=HAPtQ}OKwz^F-(Z8}{RbVYw*%&GITaODH6xg-F8jFi9A?Co+cjdcm)ubd>-aPZmw
z!UUhGzXoO1Y7_I`Idan@<mbjvp$d%n7NQ$EiEez8N2w?cd-_&n^M5ke^hWZQFnRz0
N002ovPDHLkV1nJstUdq$

literal 0
HcmV?d00001

diff --git a/images/remove.png b/images/remove.png
new file mode 100755
index 0000000000000000000000000000000000000000..bf9456243b9e115c3e98373ec43c7a0a37bd2ad5
GIT binary patch
literal 1256
zcmV<E1Q+{>P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6BH^JEW-={0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000C(
zNkl<ZNXMm@O^B9N6vuz}O{Zye%rV=AE|h8^K}3iI5>YOLD9VhGBoQ@=Kt>G;A((|l
zi&S#a###v4rVk=Cq7Nc9(`Y53pkSIxN;x|7KKFdIxcB*Z=ks;E@bG-x!}*{8|D1d7
zeF9yM;_ybt72Lp-`dK=jd!G3`bmK2f54g$QBsq4iLCpZgt00<lO79Ebh8Y2m9@^w%
zS$UJKDeg)r=S^|S;3Ng+O5e-Bgsy={zS-cV<FRbqjDX=~Fjj(VrvjGeQ0Bh!dzcpZ
z#@Fk;W|SljjUZ~EH0LfUm`V{LxFvg&q=G7UZ#dO~)oQ*Bf3?nC+PD;$7Pv&1w;1ak
z!1KFHfl7gC#3X;q&!$5E+M_V=045QYh{Xcef@`}M`-F_If3eoRVw5DE_w2zAHU8Vb
z3NP7flD4dJ#~E06yu<$Lo+VXLmIb=-%}b$!u}OhR#I-<UF%A@9-iwDYkz{L$tx18Z
zjspc)u=xxoZB(;D8at)F_Sy5U8Zl`naFa=w!NA%dGI-3A3-_!)F{!<Hz+z5MY;$p_
z*DK&MU(IW(vGCPnm_*Esg&Y2u($-aztwc1YJ3zRy|7kBvpGLLPGnaeUe97&O^FwoS
zjcH|IfP+J;VyO|!xlk?8;VWF)_tb5Ho*U{%i_ugIrkFYIU=A&nl=PH?oC}GlMdI*f
zE_}RlMxbZk?ZZcJV5TUJ0tTpMVABGLMa@<s7TZ|N@57fkzjyg9fu7mXixwlOJLU;Y
zEp<_=7-s;B1rpns6i8OUB_a}u*DrGQ$DLh)p5Ad+S{)g{ESHXfdJR0wG*TB=zK_{?
z+>8Y)2fG56qD=_kPP&(!%5z=iZ>`h-awBNuTXJhu6_#$l(6!7<2G61vFlu(5C04TB
zR!SW+s1#^ySA}Mx-2c|!x0K)6^B1vn>)9l2Bd?kR&}LPu6i9BBC2P^hgYR6PQAPL6
zU&MWD4q_haTzhAZTPg(_BU)s6V??B2*^X<swT9<E^c;&`I#3r?v#JeR%ijJgXw^7k
zVlFzZ<CEL_II*S0sa-3k1ou07I@uaL{63)tWTpjLlyZ+w3HsZ%J~WPC?hKzh%9&4B
zPu{DUg&I}IGH>ioj|^Q8Qf=^psdIc=|AdZy-8u&?M(Uz5=bw`YIQ_}Q;37rER2?4u
zfHC{A3g%w5G-==9*kC94(ZN2XeG|>nHRZc<@&JGCTRqO+MCzsFlbpGJegiKTK7_Q;
zXZNz=y_+1_(uc)SJUD>>q=rwnEjz`mJNsF_^Iwi^nS;g=2%ee;@Yshn-nhfwPp@b2
ziSm{3>PhcBL<LeV$9Z;GxvSIVgvZ<OUrQKF;D53+@>DjD?`HbrZ8^T%-0<by{Bulf
z_QW2#KhQVF;Z2?FD-druXi)Z$HiRcXVrIWEW5=P5$#uo536ui~z^c97`TQS0g9%A7
SRgiE10000<MNUMnLSTXoQ%gDk

literal 0
HcmV?d00001

diff --git a/images/removeall.png b/images/removeall.png
new file mode 100755
index 0000000000000000000000000000000000000000..4fe02d1610b9fc2521848ad527bd31f270e76b41
GIT binary patch
literal 1280
zcmV+b1^@bqP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6C4>}B`6XA0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000D6
zNkl<ZNXMO*PiS356vlrOU!Jj8i-|Uku?4MLsTxJ4BBEk<qAs+8A_`I(i+`vK5v<ED
zR0Orug*!z-L~2n9Z4p64QYu&}wiI2MR!a=6<X@ZIJLeo1Gxy%P_q{Z+vw3sh+?nq?
z-}&auT*nGqc5u640;Zrs)%Uf2`_Zr5O4f7B1CE-h4-1=ApsIjiC5d!Q=zHRjyCmR+
z1EbcA%F<|6FcVxcu7XjJ^MRNNtDgSJtr+;i*fuK`ZboCOI20?$XaO#D1vHK!T>0!T
zZdu^@Z=bg+q9CzLNK`;!%*+Qer6L|@8s1kQR1jg!wi9ki;JL4#vueRgPE2qyucjU|
zjn9&#z?agSRwRqLroz=b{&XF{v-_VhD<eux6TqAb5EeBPkRUB3Xq3AEML{Z476!fM
zl}QKCDuC5zVX}EtlH4W{6mAYF5S#{OEOom2k|3$v8cC)R|NF(`W=Y;knTp9MCQ^5I
zBDEHIPt#Kyi#s5W4ZXhLS^z3}1Zn`+NL0DMZ1wdFJh{JQKlRBL<m^c>Vcp9U0GxSy
zEkm#V6Z*SX*V6;ErapVv)Mph?!(3Qni<r`0dvk3k^bT$!n>-fPiK)x8vhRHsqD28?
z;!UhaeTMoBl^m7uE0Upk_+QGg9EtDr4&DO5;@>|9;B~hJkN65qBrp5sb5sRY!wl4*
zB|gU$xrjL!eCnI9ZTv!M2!HN(X2$oBO&+Cv-3S0Phxc;rBOlQoz60@jDPu6}VnqV0
z<ca=jsbs-81edA`Jy-O1RI}Ea4QO_rvxnZGxBo_DVVb$)`{>{D7QOu&p}hv3pG+dI
zNQib8jULIPlzE2F7g3*82ZH1v877PP*)z<Y9HTvSYmoV`BS^l;!s&4U+QYXaiPV||
zX&QE#M48o~rIMF*wJ_4u*lU<BqS=MAIQZ#PWas{1;GUfTtlIbhH|?4&7w=ntH#5h+
z?1++>0B3-KIWVAA77p>{{+#~xbBv~|6%$Y2`a1zQ_3>lO{kD&*Hf?2i>!<W>*i3>|
z>zf8JbKqjXC3#k>PNt#g)2P*E3a-WFQR?%jkDzAEPaF;r5079yeHCzmtQNqWRfOE}
z-8UE}s0mIAAVrfi)skxDqC+hyeOCNh_k-3Y@0Vs3pMgf8q!t%N-wHymn(AV%IvCJE
zurA24?*NYO8n7ZN(@@%sa1LV{K&-($4V5k-HTI8L^*Hhlp;mjJ1+dz!!|Ketur8mi
zyQXH1RCMDszO!ZF`eGe;>Fks_ji5^~*C|Gkp1a<qaUP4WO)O@Zt4G$&K((AxZ5iAW
zerPW7<4afyT=PwQFqcHqCC44oMsR@5@8Oob?EUa!1n=S%yO^O|vZb0U8{GRoZrSVY
z_d9CJbv5jA`!sF$eSll>h5ox2y1DG)t=nt&@4@}AFNvZZ9IZ#6x|gQw3lA7PxR*=&
qglV<|+r!efgxLyTJoMqp*8C4C)GDUu<}L030000<MNUMnLSTX~%}(L~

literal 0
HcmV?d00001

diff --git a/images/removeselected.png b/images/removeselected.png
new file mode 100755
index 0000000000000000000000000000000000000000..35294aad8ae61820a89aff239df6795eceac5ab9
GIT binary patch
literal 1664
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
KMNUMnLSTY#fG)iN

literal 0
HcmV?d00001

diff --git a/images/remselected.png b/images/remselected.png
new file mode 100755
index 0000000000000000000000000000000000000000..6466dce59b2873b930e356a438826dba82d9fe9e
GIT binary patch
literal 1613
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
LNkvXXu0mjfBYFFC

literal 0
HcmV?d00001

diff --git a/images/repeatoff.png b/images/repeatoff.png
new file mode 100755
index 0000000000000000000000000000000000000000..0a1765992ec3b5bf732555cc5b6cc96fbf0e89ab
GIT binary patch
literal 1671
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
RL@@vW002ovPDHLkV1k`z8aV&}

literal 0
HcmV?d00001

diff --git a/images/repeaton.png b/images/repeaton.png
new file mode 100755
index 0000000000000000000000000000000000000000..aaef8ce703e7eab8261e5a05e4fa001e97acb41d
GIT binary patch
literal 1709
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
D-FhW7

literal 0
HcmV?d00001

diff --git a/images/right.png b/images/right.png
new file mode 100755
index 0000000000000000000000000000000000000000..2ce6d362c8e0db8625512ce8e779182771e437b8
GIT binary patch
literal 1352
zcmV-O1-JT%P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5;g*a=||xJ0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000D^
zNkl<ZNXMm@U5Hgx6vu!2-a8+6CN<4KUsC(<NyG>rD#@@Cf(Ux4ULp!YG%<vX2=t-I
z2qL14e2AWcUW6#3WE>>15Bea2q6GCJLB<(B24^&#bM{)RhrRbX``)?cG;O%teec<O
z{r_vN|5|$=#~ep-XsclYrl3MS_Z{>8$3Am&vFEN2xXny`Fl<tTsse&lB=Tp%;1i>6
zUcgsJwpq7VmV2v$nc&iM6^umA2Vy1+J@vhtGw_vzTPzvw_Qq6kD3-`*0+-GRXncln
z!!y6S>jGc?@;R$L3L$nGi5e(8GxLE=6%mg!4eQm1D2T9V%Q1IN;7eaTYqh~ToS5KZ
zUQIn_0f^=R6w?)83cYDfGVL`L7H|K{%>thO{Ashwqg*rr%&7pusF{EWu73zObTfMX
zSe^d_ih|UlOafiHbKC*660rIrY&MTdmfOsOq~?$U!To)ef!iOU@CADAk02=Z6+!ZF
zYZPi64S>l5kDEw|`We)hn3kxNs4oK{jq|do)~GKLUr<i`PJ8_h+`^Tp6sUy%HGX{D
zC%!<-8OHVwS_K?HirF6t1SA1UiR5dgWajkG^etP*@ZGy$;R?hTh!5*(0+DDLz5(3X
zPad@-eLB>dmr!22TII`P=$AhEDXp7UGjr-FQ-}B9FC4G;Cf%eu$H1VazNif5jiE8H
zgx2B}@qYtiw=%_4fiQ0_SdQy!)97n6aLWc3ZrsD<p_lQKCxaFwDjmZB=YqMG_!4J=
zCRR~U{VUh8=$@TH36>;bT~%+m<{+-G9R$-i#K6jpEZX!clOwzE=T8Q>ylA7oS}Fx5
zq3bx+NWg<@(rho`zm7)#FzwqO!XDVm`GYSa7f*$Nbv2Ealtq=>lxH(R#WUa0=pSb2
zj)##elbrkNC2Zzmh?T3sTPh{BxZ=0QI{Y6)u3qHwiBZa#so<?eUAd63R@FGfR{}E$
zIiK$+r^c8Vd4;Lp4qzBA2pMzWGy<nk*B*zaUre6j((%zKD8nr7j=!t0_6;$(Y%R^9
z#Q}8s3=<=}nf&ErQgU6~;jGdY?$0+?878O+PHI(acBWSSSp^qC6SQ*;ZryT(;Z++b
zr^gu|*~5jOKI~|Zu17tz#226uDC@<k>02V?>a8y33ZT(!Gq`*${?b{-M_=RIj~S@-
zK#udqn%$?Jq#i3JUJ9fvk=W+Udjw0p162?MwJ`5rwg!`evC-F=_-;Qc8qNw0VO7G~
ze9xV4;aULR7a&<kO{)A<%zLoLV8QCmj2(WH@o)Bp?v`(}EWcghZUEf1ciMR$PZ05_
zS|>|t4<xcy1^R|5rp6gN@(!vJqM@~imiAj6sr7HubsootVHWyn^3-yw(OBvN&A}Tv
z^TS6t@m0>DE*V^>9&(pEu0G$s5UM5t=aEf6EbBgI(Q@{DR%o*&_r8m}=4J2bjtJhP
zF<5T3`^<=h%z9WhxbHpOb+5NyZ|{iQtQzcfRsFX$_wU2a`9gpA`OKEh<(;GVvQ6*f
z=Jg75Xj`ZEd8t$eT$ct69{hm$y~1>lk*#&7?j^RQi_QDzX7eAk6JhH3`5$Wl0000<
KMNUMnLSTZs5`B#T

literal 0
HcmV?d00001

diff --git a/images/songs.png b/images/songs.png
new file mode 100755
index 0000000000000000000000000000000000000000..f24c1ef0c2fb12441701751bc13b3960a41bc59b
GIT binary patch
literal 1353
zcmV-P1-AN$P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6B7uH4HPc`0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000D_
zNkl<ZNXNC8TZmRw6vu!2^o?_2u$k1NC$Wc8kf6e-z_2SlL?D$x7o;G|DSF80MXa7C
zs3;?&f}nzdq|1X9C0ZsF<WoiuT|kXYOLM%;jLm%C*?X<k!`|n7=ewwb*@DBIb7t@L
zU+cgAYn}Z$W@-8MwT20pf(p(1&~iU#<rX&^f9}kHBW4<+W0NMRDj--HMD>3{-#uTt
zvjVPf8?pARtjHE{y~CJuI8$u$cTmA7f(tP)69yjm&dnNlX6qw{3TB<zm?~NSFg?rG
z;rizTM*Y+KQa}|3G~PRe!3Tfnz{%QQ{PX$4rs9cLj*7=Z@m#zUT;By`1M|rS79b%<
zB}alsLtd^o$r15PytUX)3w-jkhs;6)OO7l#63MajY#};>rZ1DYPD29|9|H*~5Fhs*
z-?Y%W0#ALi+B8L|5;v;kO{YF@G9bQ+i-tzr7d+w<Xc>%0LJVg7m5a(<wdUqLipK&f
zmD-xNDOYilV-;ixzNvH#KxL1HC^}6-t!8}uqg56oY@oqon(A59Og$<Zvknb3gchnL
zWu~TRg=!5sA<-=%M}338M*FM;){>UCD+$Wx3^TamIeHe}kV?@;wRl7V1J|r$VEG1w
z8qyL#QHJ;zpmyZ_J1k~Z?OBbjq{4Ya3z@roJ+*n4(sSYE<j41-^~pAI1^SoXOW%?^
z$$AE;&AW`FAFRT{3}&gViay8K|14J1kjI{@OeQmdRA)K14-GTmGP3?*hHiO*le^!8
zT7L=LyW}ngmpw|>H;i+R#(`ag`U%Veh{Pe2RN)+$f&25Fo6MP@MO1~LOfZSr*9I0a
zZ{^$6h8D#P^C{e%L7a<Cq4h~zZ+xEFw}V4tx8pPijesp<DiM{b<b+DA#NKP9_KAI)
zPyE5rtxu!VM{v%O_0BCp0kXdM?2ql`(B`{QKZA%MW~hN^yi`FgUYR5S^*O;eq7suZ
zEO<ijNN6y<e-}r0jw1DmuCrYmQyhHvHp29=(z#k1*$GrC?`tZ)oU0@uT=L|vEl&45
ze=(>qv3rc3p+%g3^%}CCW{pjigJUbHkM99s@o4LW{AInvS)|!qWIL-)8A&s?-6X9M
z-{A1}XPDmmb*z7~zrT2jsXbqz#BAEl62(HITMMdvbHIylbkZ2&0FdAjKh1#;S5rUq
zBc{rU@5dPb_SKTsZoq1hW~<Ph6>~I5j-&wEEqG5TrcVg?ljH2)d_R*vZQ;PjYY<iJ
z48R3=Sz`%N_F5caR695N9CJ;N&S2*7&-^yF3JS_yYrC|R$|~<&yw8?yIOwEkCGiBw
zJ2zt8)fqypYo&Hw;%?1W;fj}VHGmLukf>-g>DYMXi^hL3(K6B2uhUhdQ!XR{X+^E)
z%8E?IVA;#DD9!J20yN`)0dB8<IrpyJh$|F#uFaA@uG`q0+8w9AZ=S%+x*tESC{#BE
zyHrQ(;@RN(*IHe6J>KqoJYsO_4(T`}pKi^HO`SNWJkalWtoo&&&2NtG%Wiy~*&pbu
zwtb{E`x3+|4k{^|iv#B7H#obWFzvQ&ZFF5`RRv0cIN;VdXXo=@bMIcqwupUK00000
LNkvXXu0mjfNECkc

literal 0
HcmV?d00001

diff --git a/images/stop.png b/images/stop.png
new file mode 100755
index 0000000000000000000000000000000000000000..1e1dd0fd767364a149f45df1c568dbc5dff85065
GIT binary patch
literal 938
zcmV;b16BNqP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z6CEfh;2CKE0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~00094
zNkl<ZNXM<0Ppch85XFD>7$k^b1lN87HzKYC2|-*6Zp=zVK|-EE%?AkCWhE}6qTj%c
z8-s`>B7%rnX6e>I5K(XuMKj%1$3_2{nS0;kUUH}5GBdY(>YS=NU0q}BImX+Ugd7wQ
z&UBv__m92ymF;8Cb^{(uk&9vZ1R4Q2>LliK&Y26}*&_k}ck5W2UTN-aIFe&+J{-}=
z<w8u(<8S<IdjtRb?L{@io8Bk_BTyp~4cwOzh&qS!#9Mc5C-6VtyrapZ5@MT?n1ITh
zlna?2k&G$I`p6{;?mT(%7dsXB@2}t1WN->6a;)Z6k&&W4`z!^yhh8y}Z0{<Zr!N0$
zTfh%)zA1H&=AtQJ77i4nl7pAf(m`vu8z=!jiLwdw=_|h*z|eprkL6`$!pqBNFWlsi
z@#l?arf^3kS;rB;Uthj1_eA7}L{2CY;fX^><dK{ckw!d^M0&_?*UzYX9G*&OV;&km
z7})dJ#kfchF#PewtBSgSg<5?Dj}u)tZJ#6VT|-0Uv8p!~g`u!JY-At7tH%fdW+1`f
zIbm|5v1&?Q!DFRV;O3jQ>T3ueQH{MtR04H-9GYXP5YTqf7(9*BUJPFpkArh8pn|F*
zH}D}m^}5>CTu+`gfYmBhB_S*S4ZU!9?gEoLS`palRR$InxP^N1xD<U>5SPc4+eRRI
zj&lMzA;)}Dbwpk#$1`9S;>sgL1!^ad)=_l?+sO6)=-I3H&3z<1;hxAo;wj;Ig<9Qy
z0#~_4z;hpB13=ED!f4TTXq6oI{BDH%2;lka4=m?;f_NrEJwFFkuI6R+)CDhm#Kw8-
zxi7Z5%kO+(Tg{QQ-7s0*pNr>KFy?bQrS<vgeKZH2>!DYm8J7i#4FwxZaDW$YV5c^F
zKfYJNPYT`K>V^lc97-ox7QFN^wzIwc;qoGK>`J%oSaa?ZcDJ`}eE;sumiGDPIC<Im
zPuahrpO4$eOYavVYX)pX1A>=7<Iz50Hpi_?#k5WlThqlWpYLb$f1pYZ6QoFj3IG5A
M07*qoM6N<$f})h29RL6T

literal 0
HcmV?d00001

diff --git a/images/up.png b/images/up.png
new file mode 100755
index 0000000000000000000000000000000000000000..0ada34a63d2b0ba90c85df1e6ed0cae99c86c9d8
GIT binary patch
literal 1317
zcmV+=1={+FP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8
z5;hy)g6|;!0013nR9JLFZ*6U5Zgc<u0000(a%Ew3Wn>_CX>@2HM@dakWG-a~000Dh
zNkl<ZNXMO*U5Hgx6vu!2&bim|&S*_#rcxC45M)S(UkMc<(NoZiy%c>wh&p6pPf@Qu
zh0&)yNiWfh4}B4#5<$d>kp<ER^<qkj45-X_nVEC;TC0b>&)MhPxmO1_T<*DdpS}L;
z|6l*T_BoCvj{Mjj!vsu0g>>y3*PW-obW4fnt`E4^OnnG!l0a1f!Kx(cbHeB|$K4G9
z&mY}u{j99cRs}P`mGdeXWpX|wW<vM5DYs<cx$kyc8MvQ~sp3$qOh!v^X)2&`4q^Po
z-`sV9d*8lniBXW))sjd+Vb08lWGY2G&NSSwKByqVO}qbcLxHb;^OB{2Nlr{~v96{b
zGsR`2urO0Afv==DO-Yt(O@)ccf88SB*{_~As~FWy6TqAb5Q8qimC+5);?JL?ICDIL
zM!8E+6eO9lH0W)wU336h39LR3i_N1_t8I+|CbYV%S-xpE?RDE|uiJ*<Sor&EuxKdt
zDZ#qj8jV_KeEG;Ovs&FMnaaf|CPHg$HQmko=&aj{YcCH8_olge@;w&*I1<67DibDX
zsh~;al{Ih7y9_|3h(LY7wd;}bHFUR3(pkHu0tIM|tzvA;eoU3Q)1M{TOSaLBW&#qN
z58$Rhf67Yh({O9by0!8yR&1T5vvzX>v_7Oa&Fs`cdcPj7_BD~IX=IB61_qh>Jj$bu
z#z3s|$jx^%zHL99HJgTl0*s8UV#UJ;Ff*?Hd?>o#gG9y{1~><1kclsFWi6`h6BuU`
z>shh=RXTTUq`34CF6)v_+=FY4G}+Eyp_u-Y&h7WJa>whK!OV$w!50CpzG<VsGL;;Q
z+B?;lfG4}<UY6ato!MUwGk@U}I(LQf2X-;>=$p7@<IR44@iZ4ceG-=~qrK`ry6bl`
zw($jKP92UlU)(e@De|heRh`?T=#_IUocI`3f!Lk$OJ^`Y4}HM8&_g7LVh(?Hin+5>
zxb_&W?rLP_JVcps2|QCNNal*)`Fx}AmRn2JV*~1IW~fhd&VeoTaCtBNXVF&<jA$;i
z&}B-4nFvPxU<gWxFT(0UuC}OU1i%F_BYm3#rxCc6I<X6~($}laG<38<i~+U2oUC~u
zlnH26V_$?0V}g_9YOS5A786h@1`;+)pFsz$8=zArJ_n6J<q2e|>06nQv&x-ArDh0g
zxA?lX;jRCiNRCQ@NP(9eDGJ0Fs4p<@5iF3m!4)>*`OyD~+g2?krWXEx@Et<0_C5zm
zl7^GWnvq?s<B%e&E!NbmR^L7`S^y8dJ?p&B5uc;tQMG24BnH<qmnw)RhE}dG=L|L<
zr0+ZypR#l*qSaFEUHF|dUmT#-9&L86%jZ&!Nn57cQf{!*tMSu*tPWiFL;1sM-KXJV
z>)Sds!2x!>j~n{1_v0%Oe2}E|sQnI(37HLuZ1Bhjxa&UN{xF%;VQ8<q_CBqT$3Da@
z`GNlXeYIG&ly{E7w>|z5?uK4rj_qx-uWywqfa~*s!Olb6*egu`IJzf<wjpLKeeuL6
bON;qG%*-!2_I8mO00000NkvXXu0mjf0Mu_L

literal 0
HcmV?d00001

diff --git a/images/update.png b/images/update.png
new file mode 100755
index 0000000000000000000000000000000000000000..fa2242bf39fa08b40f61a02d10f900646788bf5f
GIT binary patch
literal 1732
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
a=6?av;@;-(Iqk{-0000<MNUMnLSTX=W;$K~

literal 0
HcmV?d00001

diff --git a/index.php b/index.php
new file mode 100644
index 0000000..40c64d8
--- /dev/null
+++ b/index.php
@@ -0,0 +1,17 @@
+<?php
+include('config/config.php');
+include('system/mpd_class.php');
+include('system/helper.php');
+
+$mpd = new mpd($mpd_host,$mpd_port,$mpd_password);
+
+if($mpd->connected != 1){
+	echo "Not Connected to Server";
+	exit(1);
+}
+
+$task=$_REQUEST['task'];
+
+include('view/default/view.php');
+
+?>
diff --git a/model/player.php b/model/player.php
new file mode 100644
index 0000000..ff3fc0d
--- /dev/null
+++ b/model/player.php
@@ -0,0 +1,44 @@
+<?php
+
+switch($task) {
+
+	case("play"):
+		$mpd->Play();
+		break;
+
+	case("prev"):
+		$mpd->Previous();
+		break;
+
+	case("pause"):
+		$mpd->Pause();
+		break;
+
+	case("stop"):
+		$mpd->Stop();
+		break;
+
+	case("next"):
+                $mpd->Next();
+                break;
+
+	case("vold"):
+                $mpd->AdjustVolume(-3);
+                break;
+	case("volu"):
+                $mpd->AdjustVolume(+3);
+                break;
+
+	case("update"):
+                $mpd->DBRefresh();
+                break;
+
+	case("repeat"):
+		$repeat = $mpd->repeat;
+		if($repeat==1)
+			$mpd->SetRepeat(0);
+		else
+			$mpd->SetRepeat(1);
+		break;
+}
+?>
diff --git a/model/tracklist.php b/model/tracklist.php
new file mode 100644
index 0000000..798ca01
--- /dev/null
+++ b/model/tracklist.php
@@ -0,0 +1,100 @@
+<?php
+
+function addDir($item,$mpd) {
+	$opendirs[] = $item;
+      	$count=0;
+      	while($count != count($opendirs)){
+        	$current = $opendirs[$count];
+        	$count++;
+
+        	$files = $mpd->GetDir($current);
+        	for($i=0;$i<count($files);$i++) {
+                	if($files[$i]['type']=="directory") {
+                        	$opendirs[]=$files[$i]['name'];
+                	} else {
+                        	$mpd->PLAdd($files[$i]['name']);
+                	}
+
+        	}
+	}	
+}
+
+switch($task) {
+
+  case("remove"):
+    if($item != null)
+      $mpd->PLRemove($item);
+    break;
+
+
+   case("clear"):
+     $mpd->PLClear();
+     break;
+
+   case("playitem"):
+     if($item != null){
+       $mpd->SkipTo($item);
+      }
+      break;
+
+   case("addfile"):
+      $mpd->PLAdd($item);
+      break;
+
+   case("adddir"):
+      addDir($item,$mpd);
+      break;
+      
+
+    case("moveup"):
+       if($item !=0) {
+           $mpd->Move($item,$item-1);
+       }
+       break;
+
+    case("movedown"):
+       if($item !=count($mpd->playlist)-1) {
+           $mpd->Move($item,$item+1);
+       }
+       break;
+
+
+     case("removeselected"):
+	$items=$_POST['itemlist'];
+	for($i=0;$i<count($items);$i++){
+	  $mpd->PLRemove($items[$i]-$i);
+	}
+	break;
+
+
+	case("addselected"):
+		$items=$_POST['itemlist'];
+		$dir=$_REQUEST['dir'];
+		$files = $mpd->GetDir($dir);
+                for($i=0;$i<count($items);$i++) {
+                        if($files[$items[$i]]['type']=="directory") {
+                                addDir($files[$items[$i]]['name'],$mpd);
+                        } else {
+                                $mpd->PLAdd($files[$items[$i]]['name']);
+                        }
+                }
+		break;
+
+	case("addall"):
+                $dir=$_REQUEST['item'];
+                $files = $mpd->GetDir($dir);
+                for($i=0;$i<count($files);$i++) {
+                        if($files[$i]['type']=="directory") {
+                                addDir($files[$i]['name'],$mpd);
+                        } else {
+                                $mpd->PLAdd($files[$i]['name']);
+                        }
+                }
+                break;
+
+
+
+}
+
+
+?>
diff --git a/system/helper.php b/system/helper.php
new file mode 100644
index 0000000..10009e4
--- /dev/null
+++ b/system/helper.php
@@ -0,0 +1,35 @@
+<?php
+
+function cut_file($str) {
+	$result=array();
+	$result=preg_split("/\//",$str);
+        //print_r($result);
+	return $result[count($result)-1];
+}
+
+
+function cut_lastDir($str) {
+        $result=array();
+        $result=preg_split("/\//",$str);
+	//print_r($result);
+        return $result[count($result)-1];
+}
+
+
+function cut_firstDir($str) {
+        $result=array();
+        preg_match("/([^\/]+)\//",$str,$result);
+
+	//print_r($result);
+        return $result[1];
+}
+
+function cut_upperDir($str) {
+        $result=array();
+        preg_match("/(.*)\/([^\/]*)/",$str,$result);
+
+	//print_r($result);
+        return $result[1];
+}
+
+?>
diff --git a/system/mpd_class.php b/system/mpd_class.php
new file mode 100644
index 0000000..8ffddcd
--- /dev/null
+++ b/system/mpd_class.php
@@ -0,0 +1,976 @@
+<?php
+/*
+ *  mpd.class.php - PHP Object Interface to the MPD Music Player Daemon
+ *  Version 1.2, Released 05/05/2004
+ *  Copyright (C) 2003-2004  Benjamin Carlisle (bcarlisle@24oz.com)
+ *  http://mpd.24oz.com/ | http://www.musicpd.org/
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */ 
+
+// Create common command definitions for MPD to use
+define("MPD_CMD_STATUS",      "status");
+define("MPD_CMD_STATISTICS",  "stats");
+define("MPD_CMD_VOLUME",      "volume");
+define("MPD_CMD_SETVOL",      "setvol");
+define("MPD_CMD_PLAY",        "play");
+define("MPD_CMD_STOP",        "stop");
+define("MPD_CMD_PAUSE",       "pause");
+define("MPD_CMD_NEXT",        "next");
+define("MPD_CMD_PREV",        "previous");
+define("MPD_CMD_PLLIST",      "playlistinfo");
+define("MPD_CMD_PLADD",       "add");
+define("MPD_CMD_PLREMOVE",    "delete");
+define("MPD_CMD_PLCLEAR",     "clear");
+define("MPD_CMD_PLSHUFFLE",   "shuffle");
+define("MPD_CMD_PLLOAD",      "load");
+define("MPD_CMD_PLSAVE",      "save");
+define("MPD_CMD_KILL",        "kill");
+define("MPD_CMD_REFRESH",     "update");
+define("MPD_CMD_REPEAT",      "repeat");
+define("MPD_CMD_LSDIR",       "lsinfo");
+define("MPD_CMD_SEARCH",      "search");
+define("MPD_CMD_START_BULK",  "command_list_begin");
+define("MPD_CMD_END_BULK",    "command_list_end");
+define("MPD_CMD_FIND",        "find");
+define("MPD_CMD_RANDOM",      "random");
+define("MPD_CMD_SEEK",        "seek");
+define("MPD_CMD_PLSWAPTRACK", "swap");
+define("MPD_CMD_PLMOVETRACK", "move");
+define("MPD_CMD_PASSWORD",    "password");
+define("MPD_CMD_TABLE",       "list");
+
+// Predefined MPD Response messages
+define("MPD_RESPONSE_ERR", "ACK");
+define("MPD_RESPONSE_OK",  "OK");
+
+// MPD State Constants
+define("MPD_STATE_PLAYING", "play");
+define("MPD_STATE_STOPPED", "stop");
+define("MPD_STATE_PAUSED",  "pause");
+
+// MPD Searching Constants
+define("MPD_SEARCH_ARTIST", "artist");
+define("MPD_SEARCH_TITLE",  "title");
+define("MPD_SEARCH_ALBUM",  "album");
+
+// MPD Cache Tables
+define("MPD_TBL_ARTIST","artist");
+define("MPD_TBL_ALBUM","album");
+
+class mpd {
+	// TCP/Connection variables
+	var $host;
+	var $port;
+    var $password;
+
+	var $mpd_sock   = NULL;
+	var $connected  = FALSE;
+
+	// MPD Status variables
+	var $mpd_version    = "(unknown)";
+
+	var $state;
+	var $current_track_position;
+	var $current_track_length;
+	var $current_track_id;
+	var $volume;
+	var $repeat;
+	var $random;
+
+	var $uptime;
+	var $playtime;
+	var $db_last_refreshed;
+	var $num_songs_played;
+	var $playlist_count;
+	
+	var $num_artists;
+	var $num_albums;
+	var $num_songs;
+	
+	var $playlist		= array();
+
+	// Misc Other Vars	
+	var $mpd_class_version = "1.2";
+
+	var $debugging   = FALSE;    // Set to TRUE to turn extended debugging on.
+	var $errStr      = "";       // Used for maintaining information about the last error message
+
+	var $command_queue;          // The list of commands for bulk command sending
+
+    // =================== BEGIN OBJECT METHODS ================
+
+	/* mpd() : Constructor
+	 * 
+	 * Builds the MPD object, connects to the server, and refreshes all local object properties.
+	 */
+	function mpd($srv,$port,$pwd = NULL) {
+		$this->host = $srv;
+		$this->port = $port;
+        $this->password = $pwd;
+
+		$resp = $this->Connect();
+		if ( is_null($resp) ) {
+            $this->errStr = "Could not connect";
+			return;
+		} else {
+			list ( $this->mpd_version ) = sscanf($resp, MPD_RESPONSE_OK . " MPD %s\n");
+            if ( ! is_null($pwd) ) {
+                if ( is_null($this->SendCommand(MPD_CMD_PASSWORD,$pwd)) ) {
+                    $this->connected = FALSE;
+                    return;  // bad password or command
+                }
+    			if ( is_null($this->RefreshInfo()) ) { // no read access -- might as well be disconnected!
+                    $this->connected = FALSE;
+                    $this->errStr = "Password supplied does not have read access";
+                    return;
+                }
+            } else {
+    			if ( is_null($this->RefreshInfo()) ) { // no read access -- might as well be disconnected!
+                    $this->connected = FALSE;
+                    $this->errStr = "Password required to access server";
+                    return; 
+                }
+            }
+		}
+	}
+
+	/* Connect()
+	 * 
+	 * Connects to the MPD server. 
+     * 
+	 * NOTE: This is called automatically upon object instantiation; you should not need to call this directly.
+	 */
+	function Connect() {
+		if ( $this->debugging ) echo "mpd->Connect() / host: ".$this->host.", port: ".$this->port."\n";
+		$this->mpd_sock = fsockopen($this->host,$this->port,$errNo,$errStr,10);
+		if (!$this->mpd_sock) {
+			$this->errStr = "Socket Error: $errStr ($errNo)";
+			return NULL;
+		} else {
+			while(!feof($this->mpd_sock)) {
+				$response =  fgets($this->mpd_sock,1024);
+				if (strncmp(MPD_RESPONSE_OK,$response,strlen(MPD_RESPONSE_OK)) == 0) {
+					$this->connected = TRUE;
+					return $response;
+					break;
+				}
+				if (strncmp(MPD_RESPONSE_ERR,$response,strlen(MPD_RESPONSE_ERR)) == 0) {
+					$this->errStr = "Server responded with: $response";
+					return NULL;
+				}
+			}
+			// Generic response
+			$this->errStr = "Connection not available";
+			return NULL;
+		}
+	}
+
+	/* SendCommand()
+	 * 
+	 * Sends a generic command to the MPD server. Several command constants are pre-defined for 
+	 * use (see MPD_CMD_* constant definitions above). 
+	 */
+	function SendCommand($cmdStr,$arg1 = "",$arg2 = "") {
+		if ( $this->debugging ) echo "mpd->SendCommand() / cmd: ".$cmdStr.", args: ".$arg1." ".$arg2."\n";
+		
+		if ( ! $this->connected ) {
+			echo "mpd->SendCommand() / Error: Not connected\n";
+		} else {
+			// Clear out the error String
+			$this->errStr = "";
+			$respStr = "";
+
+			// Check the command compatibility:
+			if ( ! $this->_checkCompatibility($cmdStr) ) {
+				echo "Not compatible command!";
+				return NULL;
+			}
+
+			if (strlen($arg1) > 0) $cmdStr .= " \"$arg1\"";
+
+			if (strlen($arg2) > 0) $cmdStr .= " \"$arg2\"";
+			if ( $this->debugging ) echo "mpd-> ".$cmdStr."\n";
+			fputs($this->mpd_sock,"$cmdStr\n");
+			while(!feof($this->mpd_sock)) {
+				$response = fgets($this->mpd_sock,1024);
+				if ( $this->debugging ) echo "mpd.response-> ".$response."\n";
+
+				// An OK signals the end of transmission -- we'll ignore it
+				if (strncmp(MPD_RESPONSE_OK,$response,strlen(MPD_RESPONSE_OK)) == 0) {
+					break;
+				}
+
+				// An ERR signals the end of transmission with an error! Let's grab the single-line message.
+				if (strncmp(MPD_RESPONSE_ERR,$response,strlen(MPD_RESPONSE_ERR)) == 0) {
+					list ( $junk, $errTmp ) = explode(MPD_RESPONSE_ERR . " ",$response );
+					$this->errStr = strtok($errTmp,"\n");
+				}
+
+				if ( strlen($this->errStr) > 0 ) {
+					return NULL;
+				}
+
+				// Build the response string
+				$respStr .= $response;
+			}
+			if ( $this->debugging ) echo "mpd->SendCommand() / response: '".$respStr."'\n";
+		}
+		return $respStr;
+	}
+
+	/* QueueCommand() 
+	 *
+	 * Queues a generic command for later sending to the MPD server. The CommandQueue can hold 
+	 * as many commands as needed, and are sent all at once, in the order they are queued, using 
+	 * the SendCommandQueue() method. The syntax for queueing commands is identical to SendCommand(). 
+     */
+	function QueueCommand($cmdStr,$arg1 = "",$arg2 = "") {
+		if ( $this->debugging ) echo "mpd->QueueCommand() / cmd: ".$cmdStr.", args: ".$arg1." ".$arg2."\n";
+		if ( ! $this->connected ) {
+			echo "mpd->QueueCommand() / Error: Not connected\n";
+			return NULL;
+		} else {
+			if ( strlen($this->command_queue) == 0 ) {
+				$this->command_queue = MPD_CMD_START_BULK . "\n";
+			}
+			if (strlen($arg1) > 0) $cmdStr .= " \"$arg1\"";
+			if (strlen($arg2) > 0) $cmdStr .= " \"$arg2\"";
+
+			$this->command_queue .= $cmdStr ."\n";
+
+			if ( $this->debugging ) echo "mpd->QueueCommand() / return\n";
+		}
+		return TRUE;
+	}
+
+	/* SendCommandQueue() 
+	 *
+	 * Sends all commands in the Command Queue to the MPD server. See also QueueCommand().
+     */
+	function SendCommandQueue() {
+		if ( $this->debugging ) echo "mpd->SendCommandQueue()\n";
+		if ( ! $this->connected ) {
+			echo "mpd->SendCommandQueue() / Error: Not connected\n";
+			return NULL;
+		} else {
+			$this->command_queue .= MPD_CMD_END_BULK . "\n";
+			if ( is_null($respStr = $this->SendCommand($this->command_queue)) ) {
+				return NULL;
+			} else {
+				$this->command_queue = NULL;
+				if ( $this->debugging ) echo "mpd->SendCommandQueue() / response: '".$respStr."'\n";
+			}
+		}
+		return $respStr;
+	}
+
+	/* AdjustVolume() 
+	 *
+	 * Adjusts the mixer volume on the MPD by <modifier>, which can be a positive (volume increase),
+	 * or negative (volume decrease) value. 
+     */
+	function AdjustVolume($modifier) {
+		if ( $this->debugging ) echo "mpd->AdjustVolume()\n";
+		if ( ! is_numeric($modifier) ) {
+			$this->errStr = "AdjustVolume() : argument 1 must be a numeric value";
+			return NULL;
+		}
+
+        $this->RefreshInfo();
+        $newVol = $this->volume + $modifier;
+        $ret = $this->SetVolume($newVol);
+
+		if ( $this->debugging ) echo "mpd->AdjustVolume() / return\n";
+		return $ret;
+	}
+
+	/* SetVolume() 
+	 *
+	 * Sets the mixer volume to <newVol>, which should be between 1 - 100.
+     */
+	function SetVolume($newVol) {
+		if ( $this->debugging ) echo "mpd->SetVolume()\n";
+		if ( ! is_numeric($newVol) ) {
+			$this->errStr = "SetVolume() : argument 1 must be a numeric value";
+			return NULL;
+		}
+
+        // Forcibly prevent out of range errors
+		if ( $newVol < 0 )   $newVol = 0;
+		if ( $newVol > 100 ) $newVol = 100;
+
+        // If we're not compatible with SETVOL, we'll try adjusting using VOLUME
+        if ( $this->_checkCompatibility(MPD_CMD_SETVOL) ) {
+            if ( ! is_null($ret = $this->SendCommand(MPD_CMD_SETVOL,$newVol))) $this->volume = $newVol;
+        } else {
+    		$this->RefreshInfo();     // Get the latest volume
+    		if ( is_null($this->volume) ) {
+    			return NULL;
+    		} else {
+    			$modifier = ( $newVol - $this->volume );
+                if ( ! is_null($ret = $this->SendCommand(MPD_CMD_VOLUME,$modifier))) $this->volume = $newVol;
+    		}
+        }
+
+		if ( $this->debugging ) echo "mpd->SetVolume() / return\n";
+		return $ret;
+	}
+
+	/* GetDir() 
+	 * 
+     * Retrieves a database directory listing of the <dir> directory and places the results into
+	 * a multidimensional array. If no directory is specified, the directory listing is at the 
+	 * base of the MPD music path. 
+	 */
+	function GetDir($dir = "") {
+		if ( $this->debugging ) echo "mpd->GetDir()\n";
+		$resp = $this->SendCommand(MPD_CMD_LSDIR,$dir);
+		$dirlist = $this->_parseFileListResponse($resp);
+		if ( $this->debugging ) echo "mpd->GetDir() / return ".print_r($dirlist)."\n";
+		return $dirlist;
+	}
+
+	/* PLAdd() 
+	 * 
+     * Adds each track listed in a single-dimensional <trackArray>, which contains filenames 
+	 * of tracks to add, to the end of the playlist. This is used to add many, many tracks to 
+	 * the playlist in one swoop.
+	 */
+	function PLAddBulk($trackArray) {
+		if ( $this->debugging ) echo "mpd->PLAddBulk()\n";
+		$num_files = count($trackArray);
+		for ( $i = 0; $i < $num_files; $i++ ) {
+			$this->QueueCommand(MPD_CMD_PLADD,$trackArray[$i]);
+		}
+		$resp = $this->SendCommandQueue();
+		$this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLAddBulk() / return\n";
+		return $resp;
+	}
+
+	/* PLAdd() 
+	 * 
+	 * Adds the file <file> to the end of the playlist. <file> must be a track in the MPD database. 
+	 */
+	function PLAdd($fileName) {
+		if ( $this->debugging ) echo "mpd->PLAdd()\n";
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLADD,$fileName))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLAdd() / return\n";
+		return $resp;
+	}
+
+	/* PLMoveTrack() 
+	 * 
+	 * Moves track number <origPos> to position <newPos> in the playlist. This is used to reorder 
+	 * the songs in the playlist.
+	 */
+	function PLMoveTrack($origPos, $newPos) {
+		if ( $this->debugging ) echo "mpd->PLMoveTrack()\n";
+		if ( ! is_numeric($origPos) ) {
+			$this->errStr = "PLMoveTrack(): argument 1 must be numeric";
+			return NULL;
+		} 
+		if ( $origPos < 0 or $origPos > $this->playlist_count ) {
+			$this->errStr = "PLMoveTrack(): argument 1 out of range";
+			return NULL;
+		}
+		if ( $newPos < 0 ) $newPos = 0;
+		if ( $newPos > $this->playlist_count ) $newPos = $this->playlist_count;
+		
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLMOVETRACK,$origPos,$newPos))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLMoveTrack() / return\n";
+		return $resp;
+	}
+
+	/* PLShuffle() 
+	 * 
+	 * Randomly reorders the songs in the playlist.
+	 */
+	function PLShuffle() {
+		if ( $this->debugging ) echo "mpd->PLShuffle()\n";
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLSHUFFLE))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLShuffle() / return\n";
+		return $resp;
+	}
+
+	/* PLLoad() 
+	 * 
+	 * Retrieves the playlist from <file>.m3u and loads it into the current playlist. 
+	 */
+	function PLLoad($file) {
+		if ( $this->debugging ) echo "mpd->PLLoad()\n";
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLLOAD,$file))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLLoad() / return\n";
+		return $resp;
+	}
+
+	/* PLSave() 
+	 * 
+	 * Saves the playlist to <file>.m3u for later retrieval. The file is saved in the MPD playlist
+	 * directory.
+	 */
+	function PLSave($file) {
+		if ( $this->debugging ) echo "mpd->PLSave()\n";
+		$resp = $this->SendCommand(MPD_CMD_PLSAVE,$file);
+		if ( $this->debugging ) echo "mpd->PLSave() / return\n";
+		return $resp;
+	}
+
+	/* PLClear() 
+	 * 
+	 * Empties the playlist.
+	 */
+	function PLClear() {
+		if ( $this->debugging ) echo "mpd->PLClear()\n";
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLCLEAR))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLClear() / return\n";
+		return $resp;
+	}
+
+
+	/* PLMove()
+	*
+	* Move song from pos to the other
+	*/
+  	function Move ($from,$to) {
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLMOVETRACK,$from,$to))) $this->RefreshInfo();
+		//die(print_r($resp));
+
+	}
+
+
+	/* PLRemove() 
+	 * 
+	 * Removes track <id> from the playlist.
+	 */
+	function PLRemove($id) {
+		if ( $this->debugging ) echo "mpd->PLRemove()\n";
+		if ( ! is_numeric($id) ) {
+			$this->errStr = "PLRemove() : argument 1 must be a numeric value";
+			return NULL;
+		}
+		if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLREMOVE,$id))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->PLRemove() / return\n";
+		return $resp;
+	}
+
+	/* SetRepeat() 
+	 * 
+	 * Enables 'loop' mode -- tells MPD continually loop the playlist. The <repVal> parameter 
+	 * is either 1 (on) or 0 (off).
+	 */
+	function SetRepeat($repVal) {
+		if ( $this->debugging ) echo "mpd->SetRepeat()\n";
+		$rpt = $this->SendCommand(MPD_CMD_REPEAT,$repVal);
+		$this->repeat = $repVal;
+		if ( $this->debugging ) echo "mpd->SetRepeat() / return\n";
+		return $rpt;
+	}
+
+	/* SetRandom() 
+	 * 
+	 * Enables 'randomize' mode -- tells MPD to play songs in the playlist in random order. The
+	 * <rndVal> parameter is either 1 (on) or 0 (off).
+	 */
+	function SetRandom($rndVal) {
+		if ( $this->debugging ) echo "mpd->SetRandom()\n";
+		$resp = $this->SendCommand(MPD_CMD_RANDOM,$rndVal);
+		$this->random = $rndVal;
+		if ( $this->debugging ) echo "mpd->SetRandom() / return\n";
+		return $resp;
+	}
+
+	/* Shutdown() 
+	 * 
+	 * Shuts down the MPD server (aka sends the KILL command). This closes the current connection, 
+	 * and prevents future communication with the server. 
+	 */
+	function Shutdown() {
+		if ( $this->debugging ) echo "mpd->Shutdown()\n";
+		$resp = $this->SendCommand(MPD_CMD_SHUTDOWN);
+
+		$this->connected = FALSE;
+		unset($this->mpd_version);
+		unset($this->errStr);
+		unset($this->mpd_sock);
+
+		if ( $this->debugging ) echo "mpd->Shutdown() / return\n";
+		return $resp;
+	}
+
+	/* DBRefresh() 
+	 * 
+	 * Tells MPD to rescan the music directory for new tracks, and to refresh the Database. Tracks 
+	 * cannot be played unless they are in the MPD database.
+	 */
+	function DBRefresh() {
+		if ( $this->debugging ) echo "mpd->DBRefresh()\n";
+		$resp = $this->SendCommand(MPD_CMD_REFRESH);
+		
+		// Update local variables
+		$this->RefreshInfo();
+
+		if ( $this->debugging ) echo "mpd->DBRefresh() / return\n";
+		return $resp;
+	}
+
+	/* Play() 
+	 * 
+	 * Begins playing the songs in the MPD playlist. 
+	 */
+	function Play() {
+		if ( $this->debugging ) echo "mpd->Play()\n";
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PLAY) )) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->Play() / return\n";
+		return $rpt;
+	}
+
+	/* Stop() 
+	 * 
+	 * Stops playing the MPD. 
+	 */
+	function Stop() {
+		if ( $this->debugging ) echo "mpd->Stop()\n";
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_STOP) )) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->Stop() / return\n";
+		return $rpt;
+	}
+
+	/* Pause() 
+	 * 
+	 * Toggles pausing on the MPD. Calling it once will pause the player, calling it again
+	 * will unpause. 
+	 */
+	function Pause() {
+		if ( $this->debugging ) echo "mpd->Pause()\n";
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PAUSE) )) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->Pause() / return\n";
+		return $rpt;
+	}
+	
+	/* SeekTo() 
+	 * 
+	 * Skips directly to the <idx> song in the MPD playlist. 
+	 */
+	function SkipTo($idx) { 
+		if ( $this->debugging ) echo "mpd->SkipTo()\n";
+		if ( ! is_numeric($idx) ) {
+			$this->errStr = "SkipTo() : argument 1 must be a numeric value";
+			return NULL;
+		}
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PLAY,$idx))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->SkipTo() / return\n";
+		return $idx;
+	}
+
+	/* SeekTo() 
+	 * 
+	 * Skips directly to a given position within a track in the MPD playlist. The <pos> argument,
+	 * given in seconds, is the track position to locate. The <track> argument, if supplied is
+	 * the track number in the playlist. If <track> is not specified, the current track is assumed.
+	 */
+	function SeekTo($pos, $track = -1) { 
+		if ( $this->debugging ) echo "mpd->SeekTo()\n";
+		if ( ! is_numeric($pos) ) {
+			$this->errStr = "SeekTo() : argument 1 must be a numeric value";
+			return NULL;
+		}
+		if ( ! is_numeric($track) ) {
+			$this->errStr = "SeekTo() : argument 2 must be a numeric value";
+			return NULL;
+		}
+		if ( $track == -1 ) { 
+			$track = $this->current_track_id;
+		} 
+		
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_SEEK,$track,$pos))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->SeekTo() / return\n";
+		return $pos;
+	}
+
+	/* Next() 
+	 * 
+	 * Skips to the next song in the MPD playlist. If not playing, returns an error. 
+	 */
+	function Next() {
+		if ( $this->debugging ) echo "mpd->Next()\n";
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_NEXT))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->Next() / return\n";
+		return $rpt;
+	}
+
+	/* Previous() 
+	 * 
+	 * Skips to the previous song in the MPD playlist. If not playing, returns an error. 
+	 */
+	function Previous() {
+		if ( $this->debugging ) echo "mpd->Previous()\n";
+		if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PREV))) $this->RefreshInfo();
+		if ( $this->debugging ) echo "mpd->Previous() / return\n";
+		return $rpt;
+	}
+	
+	/* Search() 
+	 * 
+     * Searches the MPD database. The search <type> should be one of the following: 
+     *        MPD_SEARCH_ARTIST, MPD_SEARCH_TITLE, MPD_SEARCH_ALBUM
+     * The search <string> is a case-insensitive locator string. Anything that contains 
+	 * <string> will be returned in the results. 
+	 */
+	function Search($type,$string) {
+		if ( $this->debugging ) echo "mpd->Search()\n";
+		if ( $type != MPD_SEARCH_ARTIST and
+	         $type != MPD_SEARCH_ALBUM and
+			 $type != MPD_SEARCH_TITLE ) {
+			$this->errStr = "mpd->Search(): invalid search type";
+			return NULL;
+		} else {
+			if ( is_null($resp = $this->SendCommand(MPD_CMD_SEARCH,$type,$string)))	return NULL;
+			$searchlist = $this->_parseFileListResponse($resp);
+		}
+		if ( $this->debugging ) echo "mpd->Search() / return ".print_r($searchlist)."\n";
+		return $searchlist;
+	}
+
+	/* Find() 
+	 * 
+	 * Find() looks for exact matches in the MPD database. The find <type> should be one of 
+	 * the following: 
+     *         MPD_SEARCH_ARTIST, MPD_SEARCH_TITLE, MPD_SEARCH_ALBUM
+     * The find <string> is a case-insensitive locator string. Anything that exactly matches 
+	 * <string> will be returned in the results. 
+	 */
+	function Find($type,$string) {
+		if ( $this->debugging ) echo "mpd->Find()\n";
+		if ( $type != MPD_SEARCH_ARTIST and
+	         $type != MPD_SEARCH_ALBUM and
+			 $type != MPD_SEARCH_TITLE ) {
+			$this->errStr = "mpd->Find(): invalid find type";
+			return NULL;
+		} else {
+			if ( is_null($resp = $this->SendCommand(MPD_CMD_FIND,$type,$string)))	return NULL;
+			$searchlist = $this->_parseFileListResponse($resp);
+		}
+		if ( $this->debugging ) echo "mpd->Find() / return ".print_r($searchlist)."\n";
+		return $searchlist;
+	}
+
+	/* Disconnect() 
+	 * 
+	 * Closes the connection to the MPD server.
+	 */
+	function Disconnect() {
+		if ( $this->debugging ) echo "mpd->Disconnect()\n";
+		fclose($this->mpd_sock);
+
+		$this->connected = FALSE;
+		unset($this->mpd_version);
+		unset($this->errStr);
+		unset($this->mpd_sock);
+	}
+
+	/* GetArtists() 
+	 * 
+	 * Returns the list of artists in the database in an associative array.
+	*/
+	function GetArtists() {
+		if ( $this->debugging ) echo "mpd->GetArtists()\n";
+		if ( is_null($resp = $this->SendCommand(MPD_CMD_TABLE, MPD_TBL_ARTIST)))	return NULL;
+        $arArray = array();
+        
+        $arLine = strtok($resp,"\n");
+        $arName = "";
+        $arCounter = -1;
+        while ( $arLine ) {
+            list ( $element, $value ) = explode(": ",$arLine);
+            if ( $element == "Artist" ) {
+            	$arCounter++;
+            	$arName = $value;
+            	$arArray[$arCounter] = $arName;
+            }
+
+            $arLine = strtok("\n");
+        }
+		if ( $this->debugging ) echo "mpd->GetArtists()\n";
+        return $arArray;
+    }
+
+    /* GetAlbums() 
+	 * 
+	 * Returns the list of albums in the database in an associative array. Optional parameter
+     * is an artist Name which will list all albums by a particular artist.
+	*/
+	function GetAlbums( $ar = NULL) {
+		if ( $this->debugging ) echo "mpd->GetAlbums()\n";
+		if ( is_null($resp = $this->SendCommand(MPD_CMD_TABLE, MPD_TBL_ALBUM, $ar )))	return NULL;
+        $alArray = array();
+
+        $alLine = strtok($resp,"\n");
+        $alName = "";
+        $alCounter = -1;
+        while ( $alLine ) {
+            list ( $element, $value ) = explode(": ",$alLine);
+            if ( $element == "Album" ) {
+            	$alCounter++;
+            	$alName = $value;
+            	$alArray[$alCounter] = $alName;
+            }
+
+            $alLine = strtok("\n");
+        }
+		if ( $this->debugging ) echo "mpd->GetAlbums()\n";
+        return $alArray;
+    }
+
+	//*******************************************************************************//
+	//***************************** INTERNAL FUNCTIONS ******************************//
+	//*******************************************************************************//
+
+    /* _computeVersionValue()
+     *
+     * Computes a compatibility value from a version string
+     *
+     */
+    function _computeVersionValue($verStr) {
+		list ($ver_maj, $ver_min, $ver_rel ) = explode("\.",$verStr);
+		return ( 100 * $ver_maj ) + ( 10 * $ver_min ) + ( $ver_rel );
+    }
+
+	/* _checkCompatibility() 
+	 * 
+	 * Check MPD command compatibility against our internal table. If there is no version 
+	 * listed in the table, allow it by default.
+	*/
+	function _checkCompatibility($cmd) {
+        // Check minimum compatibility
+		$req_ver_low = $this->COMPATIBILITY_MIN_TBL[$cmd];
+		$req_ver_hi = $this->COMPATIBILITY_MAX_TBL[$cmd];
+
+		$mpd_ver = $this->_computeVersionValue($this->mpd_version);
+
+		if ( $req_ver_low ) {
+			$req_ver = $this->_computeVersionValue($req_ver_low);
+
+			if ( $mpd_ver < $req_ver ) {
+				$this->errStr = "Command '$cmd' is not compatible with this version of MPD, version ".$req_ver_low." required";
+				return FALSE;
+			}
+		}
+
+        // Check maxmum compatibility -- this will check for deprecations
+		if ( $req_ver_hi ) {
+            $req_ver = $this->_computeVersionValue($req_ver_hi);
+
+			if ( $mpd_ver > $req_ver ) {
+				$this->errStr = "Command '$cmd' has been deprecated in this version of MPD.";
+				return FALSE;
+			}
+		}
+
+		return TRUE;
+	}
+
+	/* _parseFileListResponse() 
+	 * 
+	 * Builds a multidimensional array with MPD response lists.
+     *
+	 * NOTE: This function is used internally within the class. It should not be used.
+	 */
+	function _parseFileListResponse($resp) {
+		if ( is_null($resp) ) {
+			return NULL;
+		} else {
+			$plistArray = array();
+			$plistLine = strtok($resp,"\n");
+			$plistFile = "";
+			$plCounter = -1;
+			while ( $plistLine ) {
+				list ( $element, $value ) = explode(": ",$plistLine);
+				if($element == "file" || $element=="directory") {
+				  $plCounter++;
+				  $plistArray[$plCounter]['name']=$value;
+				  $plistArray[$plCounter]['type']=$element; 
+				  $plistArray[$plCounter]['title']=$value;
+				}
+				if($element == "Name") {
+				  $plistArray[$plCounter]['title']=$value;
+				}
+				$plistLine = strtok("\n");
+			} 
+		}
+		return $plistArray;
+	}
+
+	/* RefreshInfo() 
+	 * 
+	 * Updates all class properties with the values from the MPD server.
+     *
+	 * NOTE: This function is automatically called upon Connect() as of v1.1.
+	 */
+	function RefreshInfo() {
+        // Get the Server Statistics
+		$statStr = $this->SendCommand(MPD_CMD_STATISTICS);
+		if ( !$statStr ) {
+			return NULL;
+		} else {
+			$stats = array();
+			$statLine = strtok($statStr,"\n");
+			while ( $statLine ) {
+				list ( $element, $value ) = explode(": ",$statLine);
+				$stats[$element] = $value;
+				$statLine = strtok("\n");
+			} 
+		}
+
+        // Get the Server Status
+		$statusStr = $this->SendCommand(MPD_CMD_STATUS);
+		if ( ! $statusStr ) {
+			return NULL;
+		} else {
+			$status = array();
+			$statusLine = strtok($statusStr,"\n");
+			while ( $statusLine ) {
+				list ( $element, $value ) = explode(": ",$statusLine);
+				$status[$element] = $value;
+				$statusLine = strtok("\n");
+			}
+		}
+
+        // Get the Playlist
+		$plStr = $this->SendCommand(MPD_CMD_PLLIST);
+   		$this->playlist = $this->_parseFileListResponse($plStr);
+    	$this->playlist_count = count($this->playlist);
+
+        // Set Misc Other Variables
+		$this->state = $status['state'];
+		if ( ($this->state == MPD_STATE_PLAYING) || ($this->state == MPD_STATE_PAUSED) ) {
+			$this->current_track_id = $status['song'];
+			list ($this->current_track_position, $this->current_track_length ) = explode(":",$status['time']);
+		} else {
+			$this->current_track_id = -1;
+			$this->current_track_position = -1;
+			$this->current_track_length = -1;
+		}
+
+		$this->repeat = $status['repeat'];
+		$this->random = $status['random'];
+
+		$this->db_last_refreshed = $stats['db_update'];
+
+		$this->volume = $status['volume'];
+		$this->uptime = $stats['uptime'];
+		$this->playtime = $stats['playtime'];
+		$this->num_songs_played = $stats['songs_played'];
+		$this->num_artists = $stats['num_artists'];
+		$this->num_songs = $stats['num_songs'];
+		$this->num_albums = $stats['num_albums'];
+		return TRUE;
+	}
+
+    /* ------------------ DEPRECATED METHODS -------------------*/
+	/* GetStatistics() 
+	 * 
+	 * Retrieves the 'statistics' variables from the server and tosses them into an array.
+     *
+	 * NOTE: This function really should not be used. Instead, use $this->[variable]. The function
+	 *   will most likely be deprecated in future releases.
+	 */
+	function GetStatistics() {
+		if ( $this->debugging ) echo "mpd->GetStatistics()\n";
+		$stats = $this->SendCommand(MPD_CMD_STATISTICS);
+		if ( !$stats ) {
+			return NULL;
+		} else {
+			$statsArray = array();
+			$statsLine = strtok($stats,"\n");
+			while ( $statsLine ) {
+				list ( $element, $value ) = explode(": ",$statsLine);
+				$statsArray[$element] = $value;
+				$statsLine = strtok("\n");
+			} 
+		}
+		if ( $this->debugging ) echo "mpd->GetStatistics() / return: " . print_r($statsArray) ."\n";
+		return $statsArray;
+	}
+
+	/* GetStatus() 
+	 * 
+	 * Retrieves the 'status' variables from the server and tosses them into an array.
+     *
+	 * NOTE: This function really should not be used. Instead, use $this->[variable]. The function
+	 *   will most likely be deprecated in future releases.
+	 */
+	function GetStatus() {
+		if ( $this->debugging ) echo "mpd->GetStatus()\n";
+		$status = $this->SendCommand(MPD_CMD_STATUS);
+		if ( ! $status ) {
+			return NULL;
+		} else {
+			$statusArray = array();
+			$statusLine = strtok($status,"\n");
+			while ( $statusLine ) {
+				list ( $element, $value ) = explode(": ",$statusLine);
+				$statusArray[$element] = $value;
+				$statusLine = strtok("\n");
+			}
+		}
+		if ( $this->debugging ) echo "mpd->GetStatus() / return: " . print_r($statusArray) ."\n";
+		return $statusArray;
+	}
+
+	/* GetVolume() 
+	 * 
+	 * Retrieves the mixer volume from the server.
+     *
+	 * NOTE: This function really should not be used. Instead, use $this->volume. The function
+	 *   will most likely be deprecated in future releases.
+	 */
+	function GetVolume() {
+		if ( $this->debugging ) echo "mpd->GetVolume()\n";
+		$volLine = $this->SendCommand(MPD_CMD_STATUS);
+		if ( ! $volLine ) {
+			return NULL;
+		} else {
+			list ($vol) = sscanf($volLine,"volume: %d");
+		}
+		if ( $this->debugging ) echo "mpd->GetVolume() / return: $vol\n";
+		return $vol;
+	}
+
+	/* GetPlaylist() 
+	 * 
+	 * Retrieves the playlist from the server and tosses it into a multidimensional array.
+     *
+	 * NOTE: This function really should not be used. Instead, use $this->playlist. The function
+	 *   will most likely be deprecated in future releases.
+	 */
+	function GetPlaylist() {
+		if ( $this->debugging ) echo "mpd->GetPlaylist()\n";
+		$resp = $this->SendCommand(MPD_CMD_PLLIST);
+		$playlist = $this->_parseFileListResponse($resp);
+		if ( $this->debugging ) echo "mpd->GetPlaylist() / return ".print_r($playlist)."\n";
+		return $playlist;
+	}
+
+    /* ----------------- Command compatibility tables --------------------- */
+	var $COMPATIBILITY_MIN_TBL = array(
+	);
+
+    var $COMPATIBILITY_MAX_TBL = array(
+    );
+
+}   // ---------------------------- end of class ------------------------------
+?>
diff --git a/view/default/tmpl/default.php b/view/default/tmpl/default.php
new file mode 100644
index 0000000..269b508
--- /dev/null
+++ b/view/default/tmpl/default.php
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" >
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>MPD Player</title>
+  <link rel="stylesheet" href="css/general.css" type="text/css" />
+  <script type="text/javascript" src="ajax/mpd.js"></script>
+</head>
+<body onload="RefreshPageContent()">
+
+<div id="frame">
+
+	<?php include('view/player/view.php');?>
+
+<div id="playlist">
+  <?php include('view/default/tmpl/playlistmenu.php');?>
+  <div id="items">
+  </div>
+  <?php include('view/default/tmpl/playlistmenu.php');?>
+</div>
+
+</div>
+
+<?php
+//print_r($mpd);
+?>
+
+
+</body>
diff --git a/view/default/tmpl/playlistmenu.php b/view/default/tmpl/playlistmenu.php
new file mode 100644
index 0000000..bc0f8f0
--- /dev/null
+++ b/view/default/tmpl/playlistmenu.php
@@ -0,0 +1,9 @@
+<div id="playlist_menu">
+        <table>
+                <tr>
+			<td><span class="button" onclick="EditPlayList()"><img width="20" src="images/songs.png"></span><td>
+			<td><span class="button" onclick="PlaylistCommand('clear')" ><img width="20" src="images/removeall.png"></span><td>
+			<td><span class="button" onclick="PlaylistItemsCommand('removeselected')"><img width="20" src="images/removeselected.png"></span><td>
+		</tr>
+        </table>
+</div>
diff --git a/view/default/view.php b/view/default/view.php
new file mode 100644
index 0000000..12276a0
--- /dev/null
+++ b/view/default/view.php
@@ -0,0 +1,4 @@
+<?php
+include('model/tracklist.php');
+include('tmpl/default.php');
+?>
diff --git a/view/player/tmpl/default.php b/view/player/tmpl/default.php
new file mode 100644
index 0000000..e3c5315
--- /dev/null
+++ b/view/player/tmpl/default.php
@@ -0,0 +1,38 @@
+<div id="playerframe">
+  <div id="nowplaying_heading">
+	<table id="heading_tbl">
+	<tr>
+            <td id="left">Now Playing</td><td id="right"><span onclick="RefreshPageContent()"><img class="button" align="right" width="20" src="images/update.png"></span></td>
+	</tr>
+	</table>
+  </div>
+  <div id="nowplaying_content">
+  </div>
+  <div id="control_buttons">
+    <table>
+      <tr>
+        <td><span onclick="Command('prev')"><img class="button" src="images/previous.png"></span></td>
+        <td>
+          <div id="playpausebutton">
+	    <span onclick="Command('pause')"><img class="button" src="images/pause.png"></span>
+          </div>
+	</td>
+        <td><span onclick="Command('stop')"><img class="button" src="images/stop.png"></span></td>
+        <td><span onclick="Command('next')"><img class="button" src="images/next.png"></span></td>
+        <td><span onclick="Command('repeat')"><div id="repeatstate"><img class="button" src="images/repeaton.png"></div></span></td>
+  </tr>
+
+  </table>
+
+  </div>
+
+  <div id="control_volume">
+    <table>
+      <tr>
+        <td><span onclick="Command('vold')"><img class="button" src="images/minus.png"></span></td>
+	<td id="volume_content">Volume:</td><td><div id="volume_total"></div></div></td>
+        <td><span onclick="Command('volu')"><img class="button" src="images/plus.png"></span></td>
+      </tr>
+    </table>
+  </div>
+</div>
diff --git a/view/player/view.php b/view/player/view.php
new file mode 100644
index 0000000..6cf1b29
--- /dev/null
+++ b/view/player/view.php
@@ -0,0 +1,6 @@
+<?php
+
+include('model/player.php');
+include('tmpl/default.php');
+
+?>
-- 
2.34.1