| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -7,11 +7,16 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    <link rel="stylesheet" href="custom.css"> | 
					 | 
					 | 
					 | 
					    <link rel="stylesheet" href="custom.css"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    <script type="text/javascript"> | 
					 | 
					 | 
					 | 
					    <script type="text/javascript"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        const hexToRgb = hex => | 
					 | 
					 | 
					 | 
					        'use strict'; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i | 
					 | 
					 | 
					 | 
					        function hexToRgb(value) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                ,(m, r, g, b) => '#' + r + r + g + g + b + b) | 
					 | 
					 | 
					 | 
					            var aRgbHex = value.substring(1).match(/.{1,2}/g); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .substring(1).match(/.{2}/g) | 
					 | 
					 | 
					 | 
					            var aRgb = [ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .map(x => parseInt(x, 16)); | 
					 | 
					 | 
					 | 
					                parseInt(aRgbHex[0], 16), | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                parseInt(aRgbHex[1], 16), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                parseInt(aRgbHex[2], 16) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            ]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            return aRgb; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        function show_loading(visible) { | 
					 | 
					 | 
					 | 
					        function show_loading(visible) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            document.getElementById('loading').style.visibility = visible ? 'visible' : 'hidden'; | 
					 | 
					 | 
					 | 
					            document.getElementById('loading').style.visibility = visible ? 'visible' : 'hidden'; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -21,9 +26,11 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            show_loading(true); | 
					 | 
					 | 
					 | 
					            show_loading(true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            var http = new XMLHttpRequest(); | 
					 | 
					 | 
					 | 
					            var http = new XMLHttpRequest(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.open('GET', url, true); | 
					 | 
					 | 
					 | 
					            http.open('GET', url, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            http.setRequestHeader('accept', 'application/json'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.onreadystatechange = function() { | 
					 | 
					 | 
					 | 
					            http.onreadystatechange = function() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (http.readyState == 4 && http.status == 200) { | 
					 | 
					 | 
					 | 
					                if (http.readyState == 4 && http.status == 200) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    show_loading(false); | 
					 | 
					 | 
					 | 
					                    show_loading(false); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    updateStatus(http.responseText); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }; | 
					 | 
					 | 
					 | 
					            }; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.send(); | 
					 | 
					 | 
					 | 
					            http.send(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -34,6 +41,7 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            var http = new XMLHttpRequest(); | 
					 | 
					 | 
					 | 
					            var http = new XMLHttpRequest(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.open('POST', url, true); | 
					 | 
					 | 
					 | 
					            http.open('POST', url, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.setRequestHeader('Content-Type', 'application/json'); | 
					 | 
					 | 
					 | 
					            http.setRequestHeader('Content-Type', 'application/json'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            http.setRequestHeader('accept', 'application/json'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.onreadystatechange = function() { | 
					 | 
					 | 
					 | 
					            http.onreadystatechange = function() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (http.readyState == 4 && http.status == 200) { | 
					 | 
					 | 
					 | 
					                if (http.readyState == 4 && http.status == 200) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    show_loading(false); | 
					 | 
					 | 
					 | 
					                    show_loading(false); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -43,9 +51,33 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            http.send(json); | 
					 | 
					 | 
					 | 
					            http.send(json); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        function updateStatus(json) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            let status = JSON.parse(json); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            document.getElementById('tempo').value = status.features.tempo.bpm; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            let regions = status.features.region; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					           for (let i = 0, len = regions.length; i < len; i++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (regions[i]) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    document.getElementById('region_' + i).classList.remove('region_off'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    document.getElementById('region_' + i).classList.add('region_off'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            let programs = document.getElementsByName('program_select'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            for (var i = 0, len = programs.length; i < len; i++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (programs[i].value === status.features.program) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    programs[i].checked = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        function getProgramSelection() { | 
					 | 
					 | 
					 | 
					        function getProgramSelection() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            let select = document.getElementById('program'); | 
					 | 
					 | 
					 | 
					            let radios = document.getElementsByName('program_select'); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return select.value; | 
					 | 
					 | 
					 | 
					            for (var i = 0, length = radios.length; i < length; i++) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (radios[i].checked) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    return radios[i].value; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            return null; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        function isLoop() { | 
					 | 
					 | 
					 | 
					        function isLoop() { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -81,38 +113,53 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    <div class="spacer-row"></div> | 
					 | 
					 | 
					 | 
					    <div class="spacer-row"></div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    <div class="container"> | 
					 | 
					 | 
					 | 
					    <div class="container"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="row"> | 
					 | 
					 | 
					 | 
					        <div class="row"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            <button onclick="send_get('/status')">get</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <button onclick="doInit()">intro</button> | 
					 | 
					 | 
					 | 
					            <button onclick="doInit()">intro</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <button onclick="doCancel()">halt</button> | 
					 | 
					 | 
					 | 
					            <button onclick="doCancel()">halt</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <button onclick="doBlind()">leds off</button> | 
					 | 
					 | 
					 | 
					            <button onclick="doBlind()">leds off</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <label><input type="checkbox" id="looping" /><b> loop</b></label> | 
					 | 
					 | 
					 | 
					            <label><input type="checkbox" id="looping" checked/><b> loop</b></label> | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        <div class="row"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            <input id="tempo" type="number" step="0.1" onchange="send_get('/tempo/set/' + parseFloat(this.value).toFixed(2))" value="{{ status.features.tempo.bpm }}"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            <button onclick="send_get('/tempo/sync')">sync</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        </div> | 
					 | 
					 | 
					 | 
					        </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="row"> | 
					 | 
					 | 
					 | 
					        <div class="row"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <p>Zone switch</p> | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            {% for region in regions %} | 
					 | 
					 | 
					 | 
					            {% for region in regions %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                <button onclick="switchRegion({{ region }})">zone {{ region }}</button> | 
					 | 
					 | 
					 | 
					                {% set region_off = '' %} | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                {% if not status.features.region[region] %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    {% set region_off = ' region_off' %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                {% endif %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                <button id="region_{{ region }}" class="region{{ region_off }}" onclick="switchRegion({{ region }})">zone {{ region }}</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            {% endfor %} | 
					 | 
					 | 
					 | 
					            {% endfor %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        </div> | 
					 | 
					 | 
					 | 
					        </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="row" id='loading' style="visibility: hidden"><b>LOADING!</b></div> | 
					 | 
					 | 
					 | 
					        <div class="row" id='loading' style="visibility: hidden"><b>LOADING!</b></div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="section-rgb"> | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="row"> | 
					 | 
					 | 
					 | 
					        <div class="row"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                <div class="one-third column"> | 
					 | 
					 | 
					 | 
					            <div class="program_select one-half column"> | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    <select id="program" size="10"> | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                {% for group in programs %} | 
					 | 
					 | 
					 | 
					                {% for group in programs %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            <optgroup label="{{ group.group }}"> | 
					 | 
					 | 
					 | 
					                    <ul> | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        <li>{{ group.group }}</li> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        {% for program in group.programs %} | 
					 | 
					 | 
					 | 
					                        {% for program in group.programs %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    <option value="{{ program.prg }}">{{ program.name }}</option> | 
					 | 
					 | 
					 | 
					                            {% set pr_checked = '' %} | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            {% if status.features.program == program.prg %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                {% set pr_checked = ' checked' %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            {% endif %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            <li> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                <label> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    <input type="radio" name="program_select" value="{{ program.prg }}"{{ pr_checked }}> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    {{ program.name }} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                </label> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            </li> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        {% endfor %} | 
					 | 
					 | 
					 | 
					                        {% endfor %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            </optgroup> | 
					 | 
					 | 
					 | 
					                    </ul> | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                {% endfor %} | 
					 | 
					 | 
					 | 
					                {% endfor %} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    </select> | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                </div> | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            </div> | 
					 | 
					 | 
					 | 
					            </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        </div> | 
					 | 
					 | 
					 | 
					        </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <div class="row"> | 
					 | 
					 | 
					 | 
					        <div class="row"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            <div class ="one-third column"> | 
					 | 
					 | 
					 | 
					            <div class ="one-third column"> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                <input class="colorpicker" type="color" value="#ff0000" oninput="isChanged(this.value)"> | 
					 | 
					 | 
					 | 
					                <input id="colorpicker" class="colorpicker" type="color" value="#ff0000" oninput="isChanged(this.value)"> | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            </div> | 
					 | 
					 | 
					 | 
					            </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            <button onclick="isChanged(document.getElementById('colorpicker').value)">Set</button> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        </div> | 
					 | 
					 | 
					 | 
					        </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    </div> | 
					 | 
					 | 
					 | 
					    </div> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					</body> | 
					 | 
					 | 
					 | 
					</body> | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |