Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Files at this revision

API Documentation at this revision

Comitter:
Bigcheese
Date:
Sun Mar 02 06:33:08 2014 +0000
Parent:
2:1df0b61d3b5a
Commit message:
Bunch of stuff. Need to locally merge in updated USB changes.

Changed in this revision

libs/ADC/adc.cpp Show diff for this revision Revisions of this file
libs/ADC/adc.h Show diff for this revision Revisions of this file
libs/Adc.cpp Show diff for this revision Revisions of this file
libs/Adc.h Show diff for this revision Revisions of this file
libs/AppendFileStream.h Show annotated file Show diff for this revision Revisions of this file
libs/ConfigSources/FileConfigSource.cpp Show annotated file Show diff for this revision Revisions of this file
libs/ConfigSources/FirmConfigSource.cpp Show annotated file Show diff for this revision Revisions of this file
libs/Kernel.cpp Show annotated file Show diff for this revision Revisions of this file
libs/Kernel.h Show annotated file Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/debug_frmwrk.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_adc.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_can.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_clkpwr.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_dac.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_emac.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_exti.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpdma.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpio.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2c.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2s.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_libcfg_default.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_mcpwm.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_nvic.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pinsel.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pwm.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_qei.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rit.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rtc.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_spi.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_ssp.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_systick.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_timer.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_uart.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc17xx_wdt.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/inc/lpc_types.h Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_adc.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_can.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_clkpwr.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_dac.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_debug_frmwrk.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_emac.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_exti.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpdma.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpio.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2c.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2s.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_libcfg_default.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_mcpwm.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_nvic.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_pinsel.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_pwm.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_qei.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_rit.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_rtc.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_spi.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_ssp.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_systick.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_timer.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_uart.c Show diff for this revision Revisions of this file
libs/LPC17xx/LPC17xxLib/src/lpc17xx_wdt.c Show diff for this revision Revisions of this file
libs/LPC17xx/sLPC17xx.h Show diff for this revision Revisions of this file
libs/LPC17xx/score_cm3.h Show diff for this revision Revisions of this file
libs/MRI_Hooks.cpp Show diff for this revision Revisions of this file
libs/MRI_Hooks.h Show diff for this revision Revisions of this file
libs/MemoryPool.cpp Show annotated file Show diff for this revision Revisions of this file
libs/MemoryPool.h Show annotated file Show diff for this revision Revisions of this file
libs/Network/Drivers/LPC17XX_Ethernet.cpp Show diff for this revision Revisions of this file
libs/Network/Drivers/LPC17XX_Ethernet.h Show diff for this revision Revisions of this file
libs/Network/net_util.cpp Show diff for this revision Revisions of this file
libs/Network/net_util.h Show diff for this revision Revisions of this file
libs/Network/uip/CallbackStream.cpp Show diff for this revision Revisions of this file
libs/Network/uip/CallbackStream.h Show diff for this revision Revisions of this file
libs/Network/uip/CommandQueue.cpp Show diff for this revision Revisions of this file
libs/Network/uip/CommandQueue.h Show diff for this revision Revisions of this file
libs/Network/uip/Network.cpp Show diff for this revision Revisions of this file
libs/Network/uip/Network.h Show diff for this revision Revisions of this file
libs/Network/uip/NetworkPublicAccess.h Show diff for this revision Revisions of this file
libs/Network/uip/c-fifo.h Show diff for this revision Revisions of this file
libs/Network/uip/clock-arch.c Show diff for this revision Revisions of this file
libs/Network/uip/clock-arch.h Show diff for this revision Revisions of this file
libs/Network/uip/dhcpc/dhcpc.c Show diff for this revision Revisions of this file
libs/Network/uip/dhcpc/dhcpc.h Show diff for this revision Revisions of this file
libs/Network/uip/fifo.cpp Show diff for this revision Revisions of this file
libs/Network/uip/fifo.h Show diff for this revision Revisions of this file
libs/Network/uip/lib/memb.c Show diff for this revision Revisions of this file
libs/Network/uip/lib/memb.h Show diff for this revision Revisions of this file
libs/Network/uip/sftp/sftpd.cpp Show diff for this revision Revisions of this file
libs/Network/uip/sftp/sftpd.h Show diff for this revision Revisions of this file
libs/Network/uip/telnetd/shell.cpp Show diff for this revision Revisions of this file
libs/Network/uip/telnetd/shell.h Show diff for this revision Revisions of this file
libs/Network/uip/telnetd/telnetd.cpp Show diff for this revision Revisions of this file
libs/Network/uip/telnetd/telnetd.h Show diff for this revision Revisions of this file
libs/Network/uip/uip-conf.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/clock.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/lc-addrlabels.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/lc-switch.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/lc.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/psock.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/psock.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/pt.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/timer.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/timer.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-fw.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-fw.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-neighbor.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-neighbor.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-split.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip-split.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip_arch.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip_arp.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uip_arp.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uiplib.c Show diff for this revision Revisions of this file
libs/Network/uip/uip/uiplib.h Show diff for this revision Revisions of this file
libs/Network/uip/uip/uipopt.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/http-strings Show diff for this revision Revisions of this file
libs/Network/uip/webserver/http-strings.c Show diff for this revision Revisions of this file
libs/Network/uip/webserver/http-strings.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs.c Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs/404.html Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs/img/control_xy.png Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs/img/control_z.png Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fs/index.html Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fsdata.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd-fsdata2.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd.c Show diff for this revision Revisions of this file
libs/Network/uip/webserver/httpd.h Show diff for this revision Revisions of this file
libs/Network/uip/webserver/makefsdata.pl Show diff for this revision Revisions of this file
libs/Network/uip/webserver/makestrings Show diff for this revision Revisions of this file
libs/Network/uip/webserver/webserver.h Show diff for this revision Revisions of this file
libs/Pin.cpp Show annotated file Show diff for this revision Revisions of this file
libs/Pin.h Show annotated file Show diff for this revision Revisions of this file
libs/RingBuffer.h Show annotated file Show diff for this revision Revisions of this file
libs/SlowTicker.cpp Show annotated file Show diff for this revision Revisions of this file
libs/SlowTicker.h Show annotated file Show diff for this revision Revisions of this file
libs/StepTicker.h Show annotated file Show diff for this revision Revisions of this file
libs/StreamOutput.h Show annotated file Show diff for this revision Revisions of this file
libs/Targets/TARGET_NUCLEO_F103RB/Target.cpp Show annotated file Show diff for this revision Revisions of this file
libs/Targets/Target.h Show annotated file Show diff for this revision Revisions of this file
libs/spi.cpp Show diff for this revision Revisions of this file
libs/spi.h Show diff for this revision Revisions of this file
libs/spi_hal.h Show diff for this revision Revisions of this file
diff -r 1df0b61d3b5a -r f151d08d335c libs/ADC/adc.cpp
--- a/libs/ADC/adc.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,439 +0,0 @@
-/* mbed Library - ADC
- * Copyright (c) 2010, sblandford
- * released under MIT license http://mbed.org/licence/mit
- */
-#include "mbed.h"
-#include "adc.h"
-
-
-ADC *ADC::instance;
-
-ADC::ADC(int sample_rate, int cclk_div)
-    {
-
-    int i, adc_clk_freq, pclk, clock_div, max_div=1;
-
-    //Work out CCLK
-    adc_clk_freq=CLKS_PER_SAMPLE*sample_rate;
-    int m = (LPC_SC->PLL0CFG & 0xFFFF) + 1;
-    int n = (LPC_SC->PLL0CFG >> 16) + 1;
-    int cclkdiv = LPC_SC->CCLKCFG + 1;
-    int Fcco = (2 * m * XTAL_FREQ) / n;
-    int cclk = Fcco / cclkdiv;
-
-    //Power up the ADC
-    LPC_SC->PCONP |= (1 << 12);
-    //Set clock at cclk / 1.
-    LPC_SC->PCLKSEL0 &= ~(0x3 << 24);
-    switch (cclk_div) {
-        case 1:
-            LPC_SC->PCLKSEL0 |= 0x1 << 24;
-            break;
-        case 2:
-            LPC_SC->PCLKSEL0 |= 0x2 << 24;
-            break;
-        case 4:
-            LPC_SC->PCLKSEL0 |= 0x0 << 24;
-            break;
-        case 8:
-            LPC_SC->PCLKSEL0 |= 0x3 << 24;
-            break;
-        default:
-            printf("Warning: ADC CCLK clock divider must be 1, 2, 4 or 8. %u supplied.\n",
-                cclk_div);
-            printf("Defaulting to 1.\n");
-            LPC_SC->PCLKSEL0 |= 0x1 << 24;
-            break;
-    }
-    pclk = cclk / cclk_div;
-    clock_div=pclk / adc_clk_freq;
-
-    if (clock_div > 0xFF) {
-        //printf("Warning: Clock division is %u which is above 255 limit. Re-Setting at limit.\n",
-        //    clock_div);
-        clock_div=0xFF;
-    }
-    if (clock_div == 0) {
-        printf("Warning: Clock division is 0. Re-Setting to 1.\n");
-        clock_div=1;
-    }
-
-    _adc_clk_freq=pclk / clock_div;
-    if (_adc_clk_freq > MAX_ADC_CLOCK) {
-        printf("Warning: Actual ADC sample rate of %u which is above %u limit\n",
-            _adc_clk_freq / CLKS_PER_SAMPLE, MAX_ADC_CLOCK / CLKS_PER_SAMPLE);
-        while ((pclk / max_div) > MAX_ADC_CLOCK) max_div++;
-        printf("Maximum recommended sample rate is %u\n", (pclk / max_div) / CLKS_PER_SAMPLE);
-    }
-
-    LPC_ADC->ADCR =
-        ((clock_div - 1 ) << 8 ) |    //Clkdiv
-        ( 1 << 21 );                  //A/D operational
-
-    //Default no channels enabled
-    LPC_ADC->ADCR &= ~0xFF;
-    //Default NULL global custom isr
-    _adc_g_isr = NULL;
-    //Initialize arrays
-    for (i=7; i>=0; i--) {
-        _adc_data[i] = 0;
-        _adc_isr[i] = NULL;
-    }
-
-
-    //* Attach IRQ
-    instance = this;
-    NVIC_SetVector(ADC_IRQn, (uint32_t)&_adcisr);
-
-    //Disable global interrupt
-    LPC_ADC->ADINTEN &= ~0x100;
-
-};
-
-void ADC::_adcisr(void)
-{
-    instance->adcisr();
-}
-
-
-void ADC::adcisr(void)
-{
-    uint32_t stat;
-    int chan;
-
-    // Read status
-    stat = LPC_ADC->ADSTAT;
-    //Scan channels for over-run or done and update array
-    if (stat & 0x0101) _adc_data[0] = LPC_ADC->ADDR0;
-    if (stat & 0x0202) _adc_data[1] = LPC_ADC->ADDR1;
-    if (stat & 0x0404) _adc_data[2] = LPC_ADC->ADDR2;
-    if (stat & 0x0808) _adc_data[3] = LPC_ADC->ADDR3;
-    if (stat & 0x1010) _adc_data[4] = LPC_ADC->ADDR4;
-    if (stat & 0x2020) _adc_data[5] = LPC_ADC->ADDR5;
-    if (stat & 0x4040) _adc_data[6] = LPC_ADC->ADDR6;
-    if (stat & 0x8080) _adc_data[7] = LPC_ADC->ADDR7;
-
-    // Channel that triggered interrupt
-    chan = (LPC_ADC->ADGDR >> 24) & 0x07;
-    //User defined interrupt handlers
-    if (_adc_isr[chan] != NULL)
-        _adc_isr[chan](_adc_data[chan]);
-    if (_adc_g_isr != NULL)
-        _adc_g_isr(chan, _adc_data[chan]);
-    return;
-}
-
-int ADC::_pin_to_channel(PinName pin) {
-    int chan;
-    switch (pin) {
-        case p15://=p0.23 of LPC1768
-        default:
-            chan=0;
-            break;
-        case p16://=p0.24 of LPC1768
-            chan=1;
-            break;
-        case p17://=p0.25 of LPC1768
-            chan=2;
-            break;
-        case p18://=p0.26 of LPC1768
-            chan=3;
-            break;
-        case p19://=p1.30 of LPC1768
-            chan=4;
-            break;
-        case p20://=p1.31 of LPC1768
-            chan=5;
-            break;
-    }
-    return(chan);
-}
-
-PinName ADC::channel_to_pin(int chan) {
-    const PinName pin[8]={p15, p16, p17, p18, p19, p20, p15, p15};
-    
-    if ((chan < 0) || (chan > 5))
-        fprintf(stderr, "ADC channel %u is outside range available to MBED pins.\n", chan);
-    return(pin[chan & 0x07]);
-}
-
-
-int ADC::channel_to_pin_number(int chan) {
-    const int pin[8]={15, 16, 17, 18, 19, 20, 0, 0};
-    
-    if ((chan < 0) || (chan > 5))
-        fprintf(stderr, "ADC channel %u is outside range available to MBED pins.\n", chan);
-    return(pin[chan & 0x07]);
-}
-
-
-uint32_t ADC::_data_of_pin(PinName pin) {
-    //If in burst mode and at least one interrupt enabled then
-    //take all values from _adc_data
-    if (burst() && (LPC_ADC->ADINTEN & 0x3F)) {
-        return(_adc_data[_pin_to_channel(pin)]);
-    } else {
-        //Return current register value or last value from interrupt
-        switch (pin) {
-            case p15://=p0.23 of LPC1768
-            default:
-                return(LPC_ADC->ADINTEN & 0x01?_adc_data[0]:LPC_ADC->ADDR0);
-            case p16://=p0.24 of LPC1768
-                return(LPC_ADC->ADINTEN & 0x02?_adc_data[1]:LPC_ADC->ADDR1);
-            case p17://=p0.25 of LPC1768
-                return(LPC_ADC->ADINTEN & 0x04?_adc_data[2]:LPC_ADC->ADDR2);
-            case p18://=p0.26 of LPC1768:
-                return(LPC_ADC->ADINTEN & 0x08?_adc_data[3]:LPC_ADC->ADDR3);
-            case p19://=p1.30 of LPC1768
-                return(LPC_ADC->ADINTEN & 0x10?_adc_data[4]:LPC_ADC->ADDR4);
-            case p20://=p1.31 of LPC1768
-                return(LPC_ADC->ADINTEN & 0x20?_adc_data[5]:LPC_ADC->ADDR5);
-        }
-    }
-}
-
-//Enable or disable an ADC pin
-void ADC::setup(PinName pin, int state) {
-    int chan;
-    chan=_pin_to_channel(pin);
-    if ((state & 1) == 1) {
-        switch(pin) {
-            case p15://=p0.23 of LPC1768
-            default:
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 14);
-                LPC_PINCON->PINSEL1 |= (unsigned int)0x1 << 14;
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 14);
-                LPC_PINCON->PINMODE1 |= (unsigned int)0x2 << 14;
-                break;
-            case p16://=p0.24 of LPC1768
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 16);
-                LPC_PINCON->PINSEL1 |= (unsigned int)0x1 << 16;
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 16);
-                LPC_PINCON->PINMODE1 |= (unsigned int)0x2 << 16;
-                break;
-            case p17://=p0.25 of LPC1768
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 18);
-                LPC_PINCON->PINSEL1 |= (unsigned int)0x1 << 18;
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 18);
-                LPC_PINCON->PINMODE1 |= (unsigned int)0x2 << 18;
-                break;
-            case p18://=p0.26 of LPC1768:
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 20);
-                LPC_PINCON->PINSEL1 |= (unsigned int)0x1 << 20;
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 20);
-                LPC_PINCON->PINMODE1 |= (unsigned int)0x2 << 20;
-                break;
-            case p19://=p1.30 of LPC1768
-                LPC_PINCON->PINSEL3 &= ~((unsigned int)0x3 << 28);
-                LPC_PINCON->PINSEL3 |= (unsigned int)0x3 << 28;
-                LPC_PINCON->PINMODE3 &= ~((unsigned int)0x3 << 28);
-                LPC_PINCON->PINMODE3 |= (unsigned int)0x2 << 28;
-                break;
-            case p20://=p1.31 of LPC1768
-                LPC_PINCON->PINSEL3 &= ~((unsigned int)0x3 << 30);
-                LPC_PINCON->PINSEL3 |= (unsigned int)0x3 << 30;
-                LPC_PINCON->PINMODE3 &= ~((unsigned int)0x3 << 30);
-                LPC_PINCON->PINMODE3 |= (unsigned int)0x2 << 30;
-               break;
-        }
-        //Only one channel can be selected at a time if not in burst mode
-        if (!burst()) LPC_ADC->ADCR &= ~0xFF;
-        //Select channel
-        LPC_ADC->ADCR |= (1 << chan);
-    }
-    else {
-        switch(pin) {
-            case p15://=p0.23 of LPC1768
-            default:
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 14);
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 14);
-                break;
-            case p16://=p0.24 of LPC1768
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 16);
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 16);
-                break;
-            case p17://=p0.25 of LPC1768
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 18);
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 18);
-                break;
-            case p18://=p0.26 of LPC1768:
-                LPC_PINCON->PINSEL1 &= ~((unsigned int)0x3 << 20);
-                LPC_PINCON->PINMODE1 &= ~((unsigned int)0x3 << 20);
-                break;
-            case p19://=p1.30 of LPC1768
-                LPC_PINCON->PINSEL3 &= ~((unsigned int)0x3 << 28);
-                LPC_PINCON->PINMODE3 &= ~((unsigned int)0x3 << 28);
-                break;
-            case p20://=p1.31 of LPC1768
-                LPC_PINCON->PINSEL3 &= ~((unsigned int)0x3 << 30);
-                LPC_PINCON->PINMODE3 &= ~((unsigned int)0x3 << 30);
-                break;
-        }
-        LPC_ADC->ADCR &= ~(1 << chan);
-    }
-}
-//Return channel enabled/disabled state
-int ADC::setup(PinName pin) {
-    int chan;
-    
-    chan = _pin_to_channel(pin);
-    return((LPC_ADC->ADCR & (1 << chan)) >> chan);
-}
-
-//Select channel already setup
-void ADC::select(PinName pin) {
-    int chan;
-    
-    //Only one channel can be selected at a time if not in burst mode
-    if (!burst()) LPC_ADC->ADCR &= ~0xFF;
-    //Select channel
-    chan = _pin_to_channel(pin);
-    LPC_ADC->ADCR |= (1 << chan);
-}
-
-//Enable or disable burst mode
-void ADC::burst(int state) {
-    if ((state & 1) == 1) {
-        if (startmode(0) != 0)
-            fprintf(stderr, "Warning. startmode is %u. Must be 0 for burst mode.\n", startmode(0));
-        LPC_ADC->ADCR |= (1 << 16);
-    }
-    else
-        LPC_ADC->ADCR &= ~(1 << 16);
-}
-//Return burst mode state
-int  ADC::burst(void) {
-    return((LPC_ADC->ADCR & (1 << 16)) >> 16);
-}
-
-//Set startmode and edge
-void ADC::startmode(int mode, int edge) {
-    int lpc_adc_temp;
-    
-    //Reset start mode and edge bit,
-    lpc_adc_temp = LPC_ADC->ADCR & ~(0x0F << 24);
-    //Write with new values
-    lpc_adc_temp |= ((mode & 7) << 24) | ((edge & 1) << 27);
-    LPC_ADC->ADCR = lpc_adc_temp;
-}
-
-//Return startmode state according to mode_edge=0: mode and mode_edge=1: edge
-int ADC::startmode(int mode_edge){
-    switch (mode_edge) {
-        case 0:
-        default:
-            return((LPC_ADC->ADCR >> 24) & 0x07);
-        case 1:
-            return((LPC_ADC->ADCR >> 27) & 0x01);
-    }
-}
-
-//Start ADC conversion
-void ADC::start(void) {
-    startmode(1,0);
-}
-
-
-//Set interrupt enable/disable for pin to state
-void ADC::interrupt_state(PinName pin, int state) {
-    int chan;
-    
-    chan = _pin_to_channel(pin);
-    if (state == 1) {
-        LPC_ADC->ADINTEN &= ~0x100;
-        LPC_ADC->ADINTEN |= 1 << chan;
-        /* Enable the ADC Interrupt */
-        NVIC_EnableIRQ(ADC_IRQn);
-    } else {
-        LPC_ADC->ADINTEN &= ~( 1 << chan );
-        //Disable interrrupt if no active pins left
-        if ((LPC_ADC->ADINTEN & 0xFF) == 0)
-            NVIC_DisableIRQ(ADC_IRQn);
-    }
-}
-
-//Return enable/disable state of interrupt for pin
-int ADC::interrupt_state(PinName pin) {
-    int chan;
-        
-    chan = _pin_to_channel(pin);
-    return((LPC_ADC->ADINTEN >> chan) & 0x01);
-}
-
-
-//Attach custom interrupt handler replacing default
-void ADC::attach(void(*fptr)(void)) {
-    //* Attach IRQ
-    NVIC_SetVector(ADC_IRQn, (uint32_t)fptr);
-}
-
-//Restore default interrupt handler
-void ADC::detach(void) {
-    //* Attach IRQ
-    instance = this;
-    NVIC_SetVector(ADC_IRQn, (uint32_t)&_adcisr);
-}
-
-
-//Append interrupt handler for pin to function isr
-void ADC::append(PinName pin, void(*fptr)(uint32_t value)) {
-    int chan;
-        
-    chan = _pin_to_channel(pin);
-    _adc_isr[chan] = fptr;
-}
-
-//Append interrupt handler for pin to function isr
-void ADC::unappend(PinName pin) {
-    int chan;
-        
-    chan = _pin_to_channel(pin);
-    _adc_isr[chan] = NULL;
-}
-
-//Unappend global interrupt handler to function isr
-void ADC::append(void(*fptr)(int chan, uint32_t value)) {
-    _adc_g_isr = fptr;
-}
-
-//Detach global interrupt handler to function isr
-void ADC::unappend() {
-    _adc_g_isr = NULL;
-}
-
-//Set ADC offset
-void offset(int offset) {
-    LPC_ADC->ADTRM &= ~(0x07 << 4);
-    LPC_ADC->ADTRM |= (offset & 0x07) << 4;
-}
-
-//Return current ADC offset
-int offset(void) {
-    return((LPC_ADC->ADTRM >> 4) & 0x07);
-}
-
-//Return value of ADC on pin
-int ADC::read(PinName pin) {
-    //Reset DONE and OVERRUN flags of interrupt handled ADC data
-    _adc_data[_pin_to_channel(pin)] &= ~(((uint32_t)0x01 << 31) | ((uint32_t)0x01 << 30));
-    //Return value
-    return((_data_of_pin(pin) >> 4) & 0xFFF);
-}
-
-//Return DONE flag of ADC on pin
-int ADC::done(PinName pin) {
-    return((_data_of_pin(pin) >> 31) & 0x01);
-}
-
-//Return OVERRUN flag of ADC on pin
-int ADC::overrun(PinName pin) {
-    return((_data_of_pin(pin) >> 30) & 0x01);
-}
-
-int ADC::actual_adc_clock(void) {
-    return(_adc_clk_freq);
-}
-
-int ADC::actual_sample_rate(void) {
-    return(_adc_clk_freq / CLKS_PER_SAMPLE);
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/ADC/adc.h
--- a/libs/ADC/adc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/* mbed Library - ADC
- * Copyright (c) 2010, sblandford
- * released under MIT license http://mbed.org/licence/mit
- */
-
-#ifndef MBED_ADC_H
-#define MBED_ADC_H
- 
-#include "PinNames.h" // mbed.h lib
-#define XTAL_FREQ       12000000
-#define MAX_ADC_CLOCK   13000000
-#define CLKS_PER_SAMPLE 64
-
-class ADC {
-public:
-
-    //Initialize ADC with ADC maximum sample rate of
-    //sample_rate and system clock divider of cclk_div
-    //Maximum recommened sample rate is 184000
-    ADC(int sample_rate, int cclk_div);
-
-    //Enable/disable ADC on pin according to state
-    //and also select/de-select for next conversion
-    void setup(PinName pin, int state);
-
-    //Return enabled/disabled state of ADC on pin
-    int setup(PinName pin);
-
-    //Enable/disable burst mode according to state
-    void burst(int state);
-
-    //Select channel already setup
-    void select(PinName pin);
-
-    //Return burst mode enabled/disabled
-    int burst(void);
-
-    /*Set start condition and edge according to mode:
-    0 - No start (this value should be used when clearing PDN to 0).
-    1 - Start conversion now.
-    2 - Start conversion when the edge selected by bit 27 occurs on the P2.10 / EINT0 / NMI pin.
-    3 - Start conversion when the edge selected by bit 27 occurs on the P1.27 / CLKOUT /
-        USB_OVRCRn / CAP0.1 pin.
-    4 - Start conversion when the edge selected by bit 27 occurs on MAT0.1. Note that this does
-        not require that the MAT0.1 function appear on a device pin.
-    5 - Start conversion when the edge selected by bit 27 occurs on MAT0.3. Note that it is not
-        possible to cause the MAT0.3 function to appear on a device pin.
-    6 - Start conversion when the edge selected by bit 27 occurs on MAT1.0. Note that this does
-        not require that the MAT1.0 function appear on a device pin.
-    7 - Start conversion when the edge selected by bit 27 occurs on MAT1.1. Note that this does
-        not require that the MAT1.1 function appear on a device pin.
-    When mode >= 2, conversion is triggered by edge:
-    0 - Rising edge
-    1 - Falling edge
-    */
-    void startmode(int mode, int edge);
-    
-    //Return startmode state according to mode_edge=0: mode and mode_edge=1: edge
-    int startmode(int mode_edge);
-    
-    //Start ADC conversion
-    void start(void);
-
-    //Set interrupt enable/disable for pin to state
-    void interrupt_state(PinName pin, int state);
-    
-    //Return enable/disable state of interrupt for pin
-    int interrupt_state(PinName pin);
-
-    //Attach custom interrupt handler replacing default
-    void attach(void(*fptr)(void));
-
-    //Restore default interrupt handler
-    void detach(void);
-
-    //Append custom interrupt handler for pin
-    void append(PinName pin, void(*fptr)(uint32_t value));
-
-    //Unappend custom interrupt handler for pin
-    void unappend(PinName pin);
-
-    //Append custom global interrupt handler
-    void append(void(*fptr)(int chan, uint32_t value));
-
-    //Unappend custom global interrupt handler
-    void unappend(void);
-
-    //Set ADC offset to a value 0-7
-    void offset(int offset);
-    
-    //Return current ADC offset
-    int offset(void);
-
-    //Return value of ADC on pin
-    int read(PinName pin);
-
-    //Return DONE flag of ADC on pin
-    int done(PinName pin);
-    
-    //Return OVERRUN flag of ADC on pin
-    int overrun(PinName pin);
-
-    //Return actual ADC clock
-    int actual_adc_clock(void);
-    
-    //Return actual maximum sample rate
-    int actual_sample_rate(void);
-
-    //Return pin ID of ADC channel
-    PinName channel_to_pin(int chan);
-
-    //Return pin number of ADC channel
-    int channel_to_pin_number(int chan);
-
-
-private:
-    int _pin_to_channel(PinName pin);
-    uint32_t _data_of_pin(PinName pin);
-
-    int _adc_clk_freq;
-    void adcisr(void);
-    static void _adcisr(void);
-    static ADC *instance;
-    
-    uint32_t _adc_data[8];
-    void(*_adc_isr[8])(uint32_t value);
-    void(*_adc_g_isr)(int chan, uint32_t value);
-    void(*_adc_m_isr)(void);
-};
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Adc.cpp
--- a/libs/Adc.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-      This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
-      Smoothie 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 3 of the License, or (at your option) any later version.
-      Smoothie 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 Smoothie. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-using namespace std;
-#include <vector>
-#include "libs/nuts_bolts.h"
-#include "libs/Module.h"
-#include "libs/Kernel.h"
-#include "Adc.h"
-#include "libs/ADC/adc.h"
-#include "libs/Pin.h"
-
-// This is an interface to the mbed.org ADC library you can find in libs/ADC/adc.h
-// TODO : Having the same name is confusing, should change that
-
-Adc::Adc(){
-    this->adc = new ADC(1000, 1);
-}
-
-// Enables ADC on a given pin
-void Adc::enable_pin(Pin* pin){
-    PinName pin_name = this->_pin_to_pinname(pin);
-    this->adc->burst(1);
-    this->adc->setup(pin_name,1);
-    this->adc->interrupt_state(pin_name,1);
-}
-
-// Read the last value ( burst mode ) on a given pin
-unsigned int Adc::read(Pin* pin){
-    return this->adc->read(this->_pin_to_pinname(pin));
-}
-
-// Convert a smoothie Pin into a mBed Pin
-PinName Adc::_pin_to_pinname(Pin* pin){
-    if( pin->port == LPC_GPIO0 && pin->pin == 23 ){
-        return p15;
-    }else if( pin->port == LPC_GPIO0 && pin->pin == 24 ){
-        return p16;
-    }else if( pin->port == LPC_GPIO0 && pin->pin == 25 ){
-        return p17;
-    }else if( pin->port == LPC_GPIO0 && pin->pin == 26 ){
-        return p18;
-    }else if( pin->port == LPC_GPIO1 && pin->pin == 30 ){
-        return p19;
-    }else if( pin->port == LPC_GPIO1 && pin->pin == 31 ){
-        return p20;
-    }else{
-        //TODO: Error
-        return NC;
-    }
-}
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/Adc.h
--- a/libs/Adc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-      This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
-      Smoothie 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 3 of the License, or (at your option) any later version.
-      Smoothie 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 Smoothie. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-
-#ifndef ADC_H
-#define ADC_H
-
-using namespace std;
-#include <vector>
-#include "libs/nuts_bolts.h"
-#include "libs/Module.h"
-#include "libs/Kernel.h"
-#include "PinNames.h" // mbed.h lib
-#include "libs/ADC/adc.h"
-#include "libs/Pin.h"
-
-class Adc : public Module{
-    public:
-        Adc();
-        void enable_pin(Pin* pin);
-        unsigned int read(Pin* pin);
-        PinName _pin_to_pinname(Pin* pin);
-
-        ADC* adc;
-};
-
-
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/AppendFileStream.h
--- a/libs/AppendFileStream.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/AppendFileStream.h	Sun Mar 02 06:33:08 2014 +0000
@@ -2,17 +2,17 @@
 #define _APPENDFILESTREAM_H_
 
 #include "StreamOutput.h"
-#include "string.h"
-#include "stdlib.h"
+#include <string.h>
+#include <stdlib.h>
 
 class AppendFileStream : public StreamOutput {
     public:
-        AppendFileStream(const char *filename) { fn= strdup(filename); }
-        virtual ~AppendFileStream(){ free(fn); }
+        AppendFileStream(const char *filename) { fn= filename; }
+        virtual ~AppendFileStream(){}
         int puts(const char*);
 
     private:
-        char *fn;
+        const char *fn;
 };
 
 #endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/ConfigSources/FileConfigSource.cpp
--- a/libs/ConfigSources/FileConfigSource.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/ConfigSources/FileConfigSource.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -9,7 +9,6 @@
 #include "ConfigValue.h"
 #include "FileConfigSource.h"
 #include "ConfigCache.h"
-#include <malloc.h>
 
 
 using namespace std;
@@ -68,8 +67,8 @@
             // Update value
             for( int i = value.length(); i < free_space; i++){ value += " "; }
             fpos_t pos;
-            fgetpos( lp, &pos );
-            int start = pos - buffer.length() + begin_value - 1;
+            int position = fgetpos( lp, &pos );
+            int start = position - buffer.length() + begin_value - 1;
             fseek(lp, start, SEEK_SET);
             fputs(value.c_str(), lp);
             fclose(lp);
diff -r 1df0b61d3b5a -r f151d08d335c libs/ConfigSources/FirmConfigSource.cpp
--- a/libs/ConfigSources/FirmConfigSource.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/ConfigSources/FirmConfigSource.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -9,7 +9,6 @@
 #include "ConfigValue.h"
 #include "FirmConfigSource.h"
 #include "ConfigCache.h"
-#include <malloc.h>
 
 
 using namespace std;
diff -r 1df0b61d3b5a -r f151d08d335c libs/Kernel.cpp
--- a/libs/Kernel.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/Kernel.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -10,10 +10,8 @@
 #include "libs/Config.h"
 #include "libs/nuts_bolts.h"
 #include "libs/SlowTicker.h"
-#include "libs/Adc.h"
 #include "libs/Pauser.h"
 #include "libs/StreamOutputPool.h"
-#include <mri.h>
 
 #include "modules/communication/SerialConsole.h"
 #include "modules/communication/GcodeDispatch.h"
@@ -22,7 +20,6 @@
 #include "modules/robot/Stepper.h"
 #include "modules/robot/Conveyor.h"
 #include "modules/tools/endstops/Endstops.h"
-#include <malloc.h>
 
 #define baud_rate_setting_checksum CHECKSUM("baud_rate")
 #define uart0_checksum             CHECKSUM("uart0")
@@ -41,55 +38,13 @@
 
     this->current_path   = "/";
 
-    // Configure UART depending on MRI config
-    // Match up the SerialConsole to MRI UART. This makes it easy to use only one UART for both debug and actual commands.
-    NVIC_SetPriorityGrouping(0);
-    switch( __mriPlatform_CommUartIndex() ) {
-        case 0:
-            this->serial = new SerialConsole(USBTX, USBRX, this->config->value(uart0_checksum,baud_rate_setting_checksum)->by_default(9600)->as_number());
-            break;
-        case 1:
-            this->serial = new SerialConsole(  p13,   p14, this->config->value(uart0_checksum,baud_rate_setting_checksum)->by_default(9600)->as_number());
-            break;
-        case 2:
-            this->serial = new SerialConsole(  p28,   p27, this->config->value(uart0_checksum,baud_rate_setting_checksum)->by_default(9600)->as_number());
-            break;
-        case 3:
-            this->serial = new SerialConsole(   p9,   p10, this->config->value(uart0_checksum,baud_rate_setting_checksum)->by_default(9600)->as_number());
-            break;
-    }
-
     this->add_module( this->config );
     this->add_module( this->serial );
 
     // HAL stuff
     add_module( this->slow_ticker          = new SlowTicker());
     this->step_ticker          = new StepTicker();
-    this->adc                  = new Adc();
-
-    // TODO : These should go into platform-specific files
-    // LPC17xx-specific
-    NVIC_SetPriorityGrouping(0);
-    NVIC_SetPriority(TIMER0_IRQn, 2);
-    NVIC_SetPriority(TIMER1_IRQn, 1);
-    NVIC_SetPriority(TIMER2_IRQn, 3);
-
-    // Set other priorities lower than the timers
-    NVIC_SetPriority(ADC_IRQn, 4);
-    NVIC_SetPriority(USB_IRQn, 4);
-
-    // If MRI is enabled
-    if( MRI_ENABLE ){
-        if( NVIC_GetPriority(UART0_IRQn) > 0 ){ NVIC_SetPriority(UART0_IRQn, 4); }
-        if( NVIC_GetPriority(UART1_IRQn) > 0 ){ NVIC_SetPriority(UART1_IRQn, 4); }
-        if( NVIC_GetPriority(UART2_IRQn) > 0 ){ NVIC_SetPriority(UART2_IRQn, 4); }
-        if( NVIC_GetPriority(UART3_IRQn) > 0 ){ NVIC_SetPriority(UART3_IRQn, 4); }
-    }else{
-        NVIC_SetPriority(UART0_IRQn, 4);
-        NVIC_SetPriority(UART1_IRQn, 4);
-        NVIC_SetPriority(UART2_IRQn, 4);
-        NVIC_SetPriority(UART3_IRQn, 4);
-    }
+//    this->adc                  = new Adc();
 
     // Configure the step ticker
     int base_stepping_frequency          =  this->config->value(base_stepping_frequency_checksum      )->by_default(100000)->as_number();
diff -r 1df0b61d3b5a -r f151d08d335c libs/Kernel.h
--- a/libs/Kernel.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/Kernel.h	Sun Mar 02 06:33:08 2014 +0000
@@ -7,12 +7,14 @@
 
 #ifndef KERNEL_H
 #define KERNEL_H
+
+#include "mbed.h"
+
 #include "libs/Module.h"
 #include "libs/Config.h"
 #include "libs/SlowTicker.h"
 #include "libs/StreamOutputPool.h"
 #include "libs/StepTicker.h"
-#include "libs/Adc.h"
 #include "libs/Pauser.h"
 #include "libs/PublicData.h"
 #include "modules/communication/SerialConsole.h"
@@ -21,8 +23,6 @@
 #include "modules/robot/Planner.h"
 #include "modules/robot/Robot.h"
 #include "modules/robot/Stepper.h"
-#include "mri.h"
-#include <array>
 
 #define THEKERNEL Kernel::instance
 
@@ -60,13 +60,13 @@
         int debug;
         SlowTicker*       slow_ticker;
         StepTicker*       step_ticker;
-        Adc*              adc;
+        AnalogIn*         adc;
         PublicData*       public_data;
         bool              use_leds;
         string            current_path;
 
     private:
-        std::array<std::vector<Module*>, NUMBER_OF_DEFINED_EVENTS> hooks; // When a module asks to be called for a specific event ( a hook ), this is where that request is remembered
+        std::vector<Module*> hooks[NUMBER_OF_DEFINED_EVENTS]; // When a module asks to be called for a specific event ( a hook ), this is where that request is remembered
 
 };
 
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/debug_frmwrk.h
--- a/libs/LPC17xx/LPC17xxLib/inc/debug_frmwrk.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/**********************************************************************
-* $Id$		debug_frmwrk.h		2010-05-21
-*//**
-* @file		debug_frmwrk.h
-* @brief	Contains some utilities that used for debugging through UART
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-#ifndef DEBUG_FRMWRK_H_
-#define DEBUG_FRMWRK_H_
-
-//#include <stdarg.h>
-#include "lpc17xx_uart.h"
-
-#define USED_UART_DEBUG_PORT	0
-
-#if (USED_UART_DEBUG_PORT==0)
-#define DEBUG_UART_PORT	LPC_UART0
-#elif (USED_UART_DEBUG_PORT==1)
-#define DEBUG_UART_PORT	LPC_UART1
-#endif
-
-#define _DBG(x)	 	_db_msg(DEBUG_UART_PORT, x)
-#define _DBG_(x)	_db_msg_(DEBUG_UART_PORT, x)
-#define _DBC(x)	 	_db_char(DEBUG_UART_PORT, x)
-#define _DBD(x)	 	_db_dec(DEBUG_UART_PORT, x)
-#define _DBD16(x)	 _db_dec_16(DEBUG_UART_PORT, x)
-#define _DBD32(x)	 _db_dec_32(DEBUG_UART_PORT, x)
-#define _DBH(x)	 	_db_hex(DEBUG_UART_PORT, x)
-#define _DBH16(x)	 _db_hex_16(DEBUG_UART_PORT, x)
-#define _DBH32(x)	 _db_hex_32(DEBUG_UART_PORT, x)
-#define _DG			_db_get_char(DEBUG_UART_PORT)
-//void  _printf (const  char *format, ...);
-
-extern void (*_db_msg)(LPC_UART_TypeDef *UARTx, const void *s);
-extern void (*_db_msg_)(LPC_UART_TypeDef *UARTx, const void *s);
-extern void (*_db_char)(LPC_UART_TypeDef *UARTx, uint8_t ch);
-extern void (*_db_dec)(LPC_UART_TypeDef *UARTx, uint8_t decn);
-extern void (*_db_dec_16)(LPC_UART_TypeDef *UARTx, uint16_t decn);
-extern void (*_db_dec_32)(LPC_UART_TypeDef *UARTx, uint32_t decn);
-extern void (*_db_hex)(LPC_UART_TypeDef *UARTx, uint8_t hexn);
-extern void (*_db_hex_16)(LPC_UART_TypeDef *UARTx, uint16_t hexn);
-extern void (*_db_hex_32)(LPC_UART_TypeDef *UARTx, uint32_t hexn);
-extern uint8_t (*_db_get_char)(LPC_UART_TypeDef *UARTx);
-
-void UARTPutChar (LPC_UART_TypeDef *UARTx, uint8_t ch);
-void UARTPuts(LPC_UART_TypeDef *UARTx, const void *str);
-void UARTPuts_(LPC_UART_TypeDef *UARTx, const void *str);
-void UARTPutDec(LPC_UART_TypeDef *UARTx, uint8_t decnum);
-void UARTPutDec16(LPC_UART_TypeDef *UARTx, uint16_t decnum);
-void UARTPutDec32(LPC_UART_TypeDef *UARTx, uint32_t decnum);
-void UARTPutHex (LPC_UART_TypeDef *UARTx, uint8_t hexnum);
-void UARTPutHex16 (LPC_UART_TypeDef *UARTx, uint16_t hexnum);
-void UARTPutHex32 (LPC_UART_TypeDef *UARTx, uint32_t hexnum);
-uint8_t UARTGetChar (LPC_UART_TypeDef *UARTx);
-void debug_frmwrk_init(void);
-
-#endif /* DEBUG_FRMWRK_H_ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_adc.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_adc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,296 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_adc.h			2008-07-27
-*//**
-* @file		lpc17xx_adc.h
-* @brief	Contains the NXP ABL typedefs for C standard types.
-*     		It is intended to be used in ISO C conforming development
-*     		environments and checks for this insofar as it is possible
-*     		to do so.
-* @version	2.0
-* @date		27 Jul. 2008
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2008, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup ADC ADC (Analog-to-Digital Converter)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_ADC_H_
-#define LPC17XX_ADC_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Private macros ------------------------------------------------------------- */
-/** @defgroup ADC_Private_Macros ADC Private Macros
- * @{
- */
-
-/* -------------------------- BIT DEFINITIONS ----------------------------------- */
-/*********************************************************************//**
- * Macro defines for ADC  control register
- **********************************************************************/
-/**  Selects which of the AD0.0:7 pins is (are) to be sampled and converted */
-#define ADC_CR_CH_SEL(n)	((1UL << n))
-/**  The APB clock (PCLK) is divided by (this value plus one)
-* to produce the clock for the A/D */
-#define ADC_CR_CLKDIV(n)	((n<<8))
-/**  Repeated conversions A/D enable bit */
-#define ADC_CR_BURST		((1UL<<16))
-/**  ADC convert in power down mode */
-#define ADC_CR_PDN			((1UL<<21))
-/**  Start mask bits */
-#define ADC_CR_START_MASK	((7UL<<24))
-/**  Select Start Mode */
-#define ADC_CR_START_MODE_SEL(SEL)	((SEL<<24))
-/**  Start conversion now */
-#define ADC_CR_START_NOW	((1UL<<24))
-/**  Start conversion when the edge selected by bit 27 occurs on P2.10/EINT0 */
-#define ADC_CR_START_EINT0	((2UL<<24))
-/** Start conversion when the edge selected by bit 27 occurs on P1.27/CAP0.1 */
-#define ADC_CR_START_CAP01	((3UL<<24))
-/**  Start conversion when the edge selected by bit 27 occurs on MAT0.1 */
-#define ADC_CR_START_MAT01	((4UL<<24))
-/**  Start conversion when the edge selected by bit 27 occurs on MAT0.3 */
-#define ADC_CR_START_MAT03	((5UL<<24))
-/**  Start conversion when the edge selected by bit 27 occurs on MAT1.0 */
-#define ADC_CR_START_MAT10	((6UL<<24))
-/**  Start conversion when the edge selected by bit 27 occurs on MAT1.1 */
-#define ADC_CR_START_MAT11	((7UL<<24))
-/**  Start conversion on a falling edge on the selected CAP/MAT signal */
-#define ADC_CR_EDGE			((1UL<<27))
-
-/*********************************************************************//**
- * Macro defines for ADC Global Data register
- **********************************************************************/
-/** When DONE is 1, this field contains result value of ADC conversion */
-#define ADC_GDR_RESULT(n)		(((n>>4)&0xFFF))
-/** These bits contain the channel from which the LS bits were converted */
-#define ADC_GDR_CH(n)			(((n>>24)&0x7))
-/** This bit is 1 in burst mode if the results of one or
- * more conversions was (were) lost */
-#define ADC_GDR_OVERRUN_FLAG	((1UL<<30))
-/** This bit is set to 1 when an A/D conversion completes */
-#define ADC_GDR_DONE_FLAG		((1UL<<31))
-
-/** This bits is used to mask for Channel */
-#define ADC_GDR_CH_MASK		((7UL<<24))
-/*********************************************************************//**
- * Macro defines for ADC Interrupt register
- **********************************************************************/
-/** These bits allow control over which A/D channels generate
- * interrupts for conversion completion */
-#define ADC_INTEN_CH(n)			((1UL<<n))
-/** When 1, enables the global DONE flag in ADDR to generate an interrupt */
-#define ADC_INTEN_GLOBAL		((1UL<<8))
-
-/*********************************************************************//**
- * Macro defines for ADC Data register
- **********************************************************************/
-/** When DONE is 1, this field contains result value of ADC conversion */
-#define ADC_DR_RESULT(n)		(((n>>4)&0xFFF))
-/** These bits mirror the OVERRRUN status flags that appear in the
- * result register for each A/D channel */
-#define ADC_DR_OVERRUN_FLAG		((1UL<<30))
-/** This bit is set to 1 when an A/D conversion completes. It is cleared
- * when this register is read */
-#define ADC_DR_DONE_FLAG		((1UL<<31))
-
-/*********************************************************************//**
- * Macro defines for ADC Status register
-**********************************************************************/
-/** These bits mirror the DONE status flags that appear in the result
- * register for each A/D channel */
-#define ADC_STAT_CH_DONE_FLAG(n)		((n&0xFF))
-/** These bits mirror the OVERRRUN status flags that appear in the
- * result register for each A/D channel */
-#define ADC_STAT_CH_OVERRUN_FLAG(n)		(((n>>8)&0xFF))
-/** This bit is the A/D interrupt flag */
-#define ADC_STAT_INT_FLAG				((1UL<<16))
-
-/*********************************************************************//**
- * Macro defines for ADC Trim register
-**********************************************************************/
-/** Offset trim bits for ADC operation */
-#define ADC_ADCOFFS(n)		(((n&0xF)<<4))
-/** Written to boot code*/
-#define ADC_TRIM(n)		    (((n&0xF)<<8))
-
-/* ------------------- CHECK PARAM DEFINITIONS ------------------------- */
-/** Check ADC parameter */
-#define PARAM_ADCx(n)    (((uint32_t *)n)==((uint32_t *)LPC_ADC))
-
-/** Check ADC state parameter */
-#define PARAM_ADC_START_ON_EDGE_OPT(OPT)    ((OPT == ADC_START_ON_RISING)||(OPT == ADC_START_ON_FALLING))
-
-/** Check ADC state parameter */
-#define PARAM_ADC_DATA_STATUS(OPT)    ((OPT== ADC_DATA_BURST)||(OPT== ADC_DATA_DONE))
-
-/** Check ADC rate parameter */
-#define PARAM_ADC_RATE(rate)	((rate>0)&&(rate<=200000))
-
-/** Check ADC channel selection parameter */
-#define PARAM_ADC_CHANNEL_SELECTION(SEL)	((SEL == ADC_CHANNEL_0)||(ADC_CHANNEL_1)\
-||(SEL == ADC_CHANNEL_2)|(ADC_CHANNEL_3)\
-||(SEL == ADC_CHANNEL_4)||(ADC_CHANNEL_5)\
-||(SEL == ADC_CHANNEL_6)||(ADC_CHANNEL_7))
-
-/** Check ADC start option parameter */
-#define PARAM_ADC_START_OPT(OPT)    ((OPT == ADC_START_CONTINUOUS)||(OPT == ADC_START_NOW)\
-||(OPT == ADC_START_ON_EINT0)||(OPT == ADC_START_ON_CAP01)\
-||(OPT == ADC_START_ON_MAT01)||(OPT == ADC_START_ON_MAT03)\
-||(OPT == ADC_START_ON_MAT10)||(OPT == ADC_START_ON_MAT11))
-
-/** Check ADC interrupt type parameter */
-#define PARAM_ADC_TYPE_INT_OPT(OPT)    ((OPT == ADC_ADINTEN0)||(OPT == ADC_ADINTEN1)\
-||(OPT == ADC_ADINTEN2)||(OPT == ADC_ADINTEN3)\
-||(OPT == ADC_ADINTEN4)||(OPT == ADC_ADINTEN5)\
-||(OPT == ADC_ADINTEN6)||(OPT == ADC_ADINTEN7)\
-||(OPT == ADC_ADGINTEN))
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup ADC_Public_Types ADC Public Types
- * @{
- */
-
-/*********************************************************************//**
- * @brief ADC enumeration
- **********************************************************************/
-/** @brief Channel Selection */
-typedef enum
-{
-	ADC_CHANNEL_0  = 0, /*!<  Channel 0 */
-	ADC_CHANNEL_1,		/*!<  Channel 1 */
-	ADC_CHANNEL_2,		/*!<  Channel 2 */
-	ADC_CHANNEL_3,		/*!<  Channel 3 */
-	ADC_CHANNEL_4,		/*!<  Channel 4 */
-	ADC_CHANNEL_5,		/*!<  Channel 5 */
-	ADC_CHANNEL_6,		/*!<  Channel 6 */
-	ADC_CHANNEL_7		/*!<  Channel 7 */
-}ADC_CHANNEL_SELECTION;
-
-/** @brief Type of start option */
-typedef enum
-{
-	ADC_START_CONTINUOUS =0,	/*!< Continuous mode */
-	ADC_START_NOW,				/*!< Start conversion now */
-	ADC_START_ON_EINT0,			/*!< Start conversion when the edge selected
-								 * by bit 27 occurs on P2.10/EINT0 */
-	ADC_START_ON_CAP01,			/*!< Start conversion when the edge selected
-								 * by bit 27 occurs on P1.27/CAP0.1 */
-	ADC_START_ON_MAT01,			/*!< Start conversion when the edge selected
-								 * by bit 27 occurs on MAT0.1 */
-	ADC_START_ON_MAT03,			/*!< Start conversion when the edge selected
-								 * by bit 27 occurs on MAT0.3 */
-	ADC_START_ON_MAT10,			/*!< Start conversion when the edge selected
-								  * by bit 27 occurs on MAT1.0 */
-	ADC_START_ON_MAT11			/*!< Start conversion when the edge selected
-								  * by bit 27 occurs on MAT1.1 */
-} ADC_START_OPT;
-
-
-/** @brief Type of edge when start conversion on the selected CAP/MAT signal */
-typedef enum
-{
-	ADC_START_ON_RISING = 0,	/*!< Start conversion on a rising edge
-								*on the selected CAP/MAT signal */
-	ADC_START_ON_FALLING		/*!< Start conversion on a falling edge
-								*on the selected CAP/MAT signal */
-} ADC_START_ON_EDGE_OPT;
-
-/** @brief* ADC type interrupt enum */
-typedef enum
-{
-	ADC_ADINTEN0 = 0,		/*!< Interrupt channel 0 */
-	ADC_ADINTEN1,			/*!< Interrupt channel 1 */
-	ADC_ADINTEN2,			/*!< Interrupt channel 2 */
-	ADC_ADINTEN3,			/*!< Interrupt channel 3 */
-	ADC_ADINTEN4,			/*!< Interrupt channel 4 */
-	ADC_ADINTEN5,			/*!< Interrupt channel 5 */
-	ADC_ADINTEN6,			/*!< Interrupt channel 6 */
-	ADC_ADINTEN7,			/*!< Interrupt channel 7 */
-	ADC_ADGINTEN			/*!< Individual channel/global flag done generate an interrupt */
-}ADC_TYPE_INT_OPT;
-
-/** @brief ADC Data  status */
-typedef enum
-{
-	ADC_DATA_BURST = 0,		/*Burst bit*/
-	ADC_DATA_DONE		 /*Done bit*/
-}ADC_DATA_STATUS;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup ADC_Public_Functions ADC Public Functions
- * @{
- */
-/* Init/DeInit ADC peripheral ----------------*/
-void ADC_Init(LPC_ADC_TypeDef *ADCx, uint32_t rate);
-void ADC_DeInit(LPC_ADC_TypeDef *ADCx);
-
-/* Enable/Disable ADC functions --------------*/
-void ADC_BurstCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState);
-void ADC_PowerdownCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState);
-void ADC_StartCmd(LPC_ADC_TypeDef *ADCx, uint8_t start_mode);
-void ADC_ChannelCmd (LPC_ADC_TypeDef *ADCx, uint8_t Channel, FunctionalState NewState);
-
-/* Configure ADC functions -------------------*/
-void ADC_EdgeStartConfig(LPC_ADC_TypeDef *ADCx, uint8_t EdgeOption);
-void ADC_IntConfig (LPC_ADC_TypeDef *ADCx, ADC_TYPE_INT_OPT IntType, FunctionalState NewState);
-
-/* Get ADC information functions -------------------*/
-uint16_t ADC_ChannelGetData(LPC_ADC_TypeDef *ADCx, uint8_t channel);
-FlagStatus ADC_ChannelGetStatus(LPC_ADC_TypeDef *ADCx, uint8_t channel, uint32_t StatusType);
-uint32_t ADC_GlobalGetData(LPC_ADC_TypeDef *ADCx);
-FlagStatus	ADC_GlobalGetStatus(LPC_ADC_TypeDef *ADCx, uint32_t StatusType);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* LPC17XX_ADC_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_can.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_can.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,866 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_can.h			2010-06-18
-*//**
-* @file		lpc17xx_can.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for CAN firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup CAN CAN (Control Area Network)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_CAN_H_
-#define LPC17XX_CAN_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup CAN_Public_Macros CAN Public Macros
- * @{
- */
-#define MSG_ENABLE				((uint8_t)(0))
-#define MSG_DISABLE				((uint8_t)(1))
-#define CAN1_CTRL				((uint8_t)(0))
-#define CAN2_CTRL				((uint8_t)(1))
-#define PARAM_FULLCAN_IC(n)		((n==FULLCAN_IC0)||(n==FULLCAN_IC1))
-#define ID_11					1
-#define MAX_HW_FULLCAN_OBJ 		64
-#define MAX_SW_FULLCAN_OBJ 		32
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup CAN_Private_Macros CAN Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for CAN Mode Register
- **********************************************************************/
-/** CAN Reset mode */
-#define CAN_MOD_RM			((uint32_t)(1))
-/** CAN Listen Only Mode */
-#define CAN_MOD_LOM			((uint32_t)(1<<1))
-/** CAN Self Test mode */
-#define CAN_MOD_STM			((uint32_t)(1<<2))
-/** CAN Transmit Priority mode */
-#define CAN_MOD_TPM			((uint32_t)(1<<3))
-/** CAN Sleep mode */
-#define CAN_MOD_SM			((uint32_t)(1<<4))
-/** CAN Receive Polarity mode */
-#define CAN_MOD_RPM			((uint32_t)(1<<5))
-/** CAN Test mode */
-#define CAN_MOD_TM			((uint32_t)(1<<7))
-
-/*********************************************************************//**
- * Macro defines for CAN Command Register
- **********************************************************************/
-/** CAN Transmission Request */
-#define CAN_CMR_TR			((uint32_t)(1))
-/** CAN Abort Transmission */
-#define CAN_CMR_AT			((uint32_t)(1<<1))
-/** CAN Release Receive Buffer */
-#define CAN_CMR_RRB			((uint32_t)(1<<2))
-/** CAN Clear Data Overrun */
-#define CAN_CMR_CDO			((uint32_t)(1<<3))
-/** CAN Self Reception Request */
-#define CAN_CMR_SRR			((uint32_t)(1<<4))
-/** CAN Select Tx Buffer 1 */
-#define CAN_CMR_STB1		((uint32_t)(1<<5))
-/** CAN Select Tx Buffer 2 */
-#define CAN_CMR_STB2		((uint32_t)(1<<6))
-/** CAN Select Tx Buffer 3 */
-#define CAN_CMR_STB3		((uint32_t)(1<<7))
-
-/*********************************************************************//**
- * Macro defines for CAN Global Status Register
- **********************************************************************/
-/** CAN Receive Buffer Status */
-#define CAN_GSR_RBS			((uint32_t)(1))
-/** CAN Data Overrun Status */
-#define CAN_GSR_DOS			((uint32_t)(1<<1))
-/** CAN Transmit Buffer Status */
-#define CAN_GSR_TBS			((uint32_t)(1<<2))
-/** CAN Transmit Complete Status */
-#define CAN_GSR_TCS			((uint32_t)(1<<3))
-/** CAN Receive Status */
-#define CAN_GSR_RS			((uint32_t)(1<<4))
-/** CAN Transmit Status */
-#define CAN_GSR_TS			((uint32_t)(1<<5))
-/** CAN Error Status */
-#define CAN_GSR_ES			((uint32_t)(1<<6))
-/** CAN Bus Status */
-#define CAN_GSR_BS			((uint32_t)(1<<7))
-/** CAN Current value of the Rx Error Counter */
-#define CAN_GSR_RXERR(n)	((uint32_t)((n&0xFF)<<16))
-/** CAN Current value of the Tx Error Counter */
-#define CAN_GSR_TXERR(n)	((uint32_t)(n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Interrupt and Capture Register
- **********************************************************************/
-/** CAN Receive Interrupt */
-#define CAN_ICR_RI			((uint32_t)(1))
-/** CAN Transmit Interrupt 1 */
-#define CAN_ICR_TI1			((uint32_t)(1<<1))
-/** CAN Error Warning Interrupt */
-#define CAN_ICR_EI			((uint32_t)(1<<2))
-/** CAN Data Overrun Interrupt */
-#define CAN_ICR_DOI			((uint32_t)(1<<3))
-/** CAN Wake-Up Interrupt */
-#define CAN_ICR_WUI			((uint32_t)(1<<4))
-/** CAN Error Passive Interrupt */
-#define CAN_ICR_EPI			((uint32_t)(1<<5))
-/** CAN Arbitration Lost Interrupt */
-#define CAN_ICR_ALI			((uint32_t)(1<<6))
-/** CAN Bus Error Interrupt */
-#define CAN_ICR_BEI			((uint32_t)(1<<7))
-/** CAN ID Ready Interrupt */
-#define CAN_ICR_IDI			((uint32_t)(1<<8))
-/** CAN Transmit Interrupt 2 */
-#define CAN_ICR_TI2			((uint32_t)(1<<9))
-/** CAN Transmit Interrupt 3 */
-#define CAN_ICR_TI3			((uint32_t)(1<<10))
-/** CAN Error Code Capture */
-#define CAN_ICR_ERRBIT(n)	((uint32_t)((n&0x1F)<<16))
-/** CAN Error Direction */
-#define CAN_ICR_ERRDIR		((uint32_t)(1<<21))
-/** CAN Error Capture */
-#define CAN_ICR_ERRC(n)		((uint32_t)((n&0x3)<<22))
-/** CAN Arbitration Lost Capture */
-#define CAN_ICR_ALCBIT(n)		((uint32_t)((n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Interrupt Enable Register
- **********************************************************************/
-/** CAN Receive Interrupt Enable */
-#define CAN_IER_RIE			((uint32_t)(1))
-/** CAN Transmit Interrupt Enable for buffer 1 */
-#define CAN_IER_TIE1		((uint32_t)(1<<1))
-/** CAN Error Warning Interrupt Enable */
-#define CAN_IER_EIE			((uint32_t)(1<<2))
-/** CAN Data Overrun Interrupt Enable */
-#define CAN_IER_DOIE		((uint32_t)(1<<3))
-/** CAN Wake-Up Interrupt Enable */
-#define CAN_IER_WUIE		((uint32_t)(1<<4))
-/** CAN Error Passive Interrupt Enable */
-#define CAN_IER_EPIE		((uint32_t)(1<<5))
-/** CAN Arbitration Lost Interrupt Enable */
-#define CAN_IER_ALIE		((uint32_t)(1<<6))
-/** CAN Bus Error Interrupt Enable */
-#define CAN_IER_BEIE		((uint32_t)(1<<7))
-/** CAN ID Ready Interrupt Enable */
-#define CAN_IER_IDIE		((uint32_t)(1<<8))
-/** CAN Transmit Enable Interrupt for Buffer 2 */
-#define CAN_IER_TIE2		((uint32_t)(1<<9))
-/** CAN Transmit Enable Interrupt for Buffer 3 */
-#define CAN_IER_TIE3		((uint32_t)(1<<10))
-
-/*********************************************************************//**
- * Macro defines for CAN Bus Timing Register
- **********************************************************************/
-/** CAN Baudrate Prescaler */
-#define CAN_BTR_BRP(n)		((uint32_t)(n&0x3FF))
-/** CAN Synchronization Jump Width */
-#define CAN_BTR_SJM(n)		((uint32_t)((n&0x3)<<14))
-/** CAN Time Segment 1 */
-#define CAN_BTR_TESG1(n)	((uint32_t)(n&0xF)<<16))
-/** CAN Time Segment 2 */
-#define CAN_BTR_TESG2(n)	((uint32_t)(n&0xF)<<20))
-/** CAN Sampling */
-#define CAN_BTR_SAM(n)		((uint32_t)(1<<23))
-
-/*********************************************************************//**
- * Macro defines for CAN Error Warning Limit Register
- **********************************************************************/
-/** CAN Error Warning Limit */
-#define CAN_EWL_EWL(n)		((uint32_t)(n&0xFF))
-
-/*********************************************************************//**
- * Macro defines for CAN Status Register
- **********************************************************************/
-/** CAN Receive Buffer Status */
-#define CAN_SR_RBS		((uint32_t)(1))
-/** CAN Data Overrun Status */
-#define CAN_SR_DOS		((uint32_t)(1<<1))
-/** CAN Transmit Buffer Status 1 */
-#define CAN_SR_TBS1		((uint32_t)(1<<2))
-/** CAN Transmission Complete Status of Buffer 1 */
-#define CAN_SR_TCS1		((uint32_t)(1<<3))
-/** CAN Receive Status */
-#define CAN_SR_RS		((uint32_t)(1<<4))
-/** CAN Transmit Status 1 */
-#define CAN_SR_TS1		((uint32_t)(1<<5))
-/** CAN Error Status */
-#define CAN_SR_ES		((uint32_t)(1<<6))
-/** CAN Bus Status */
-#define CAN_SR_BS		((uint32_t)(1<<7))
-/** CAN Transmit Buffer Status 2 */
-#define CAN_SR_TBS2		((uint32_t)(1<<10))
-/** CAN Transmission Complete Status of Buffer 2 */
-#define CAN_SR_TCS2		((uint32_t)(1<<11))
-/** CAN Transmit Status 2 */
-#define CAN_SR_TS2		((uint32_t)(1<<13))
-/** CAN Transmit Buffer Status 2 */
-#define CAN_SR_TBS3		((uint32_t)(1<<18))
-/** CAN Transmission Complete Status of Buffer 2 */
-#define CAN_SR_TCS3		((uint32_t)(1<<19))
-/** CAN Transmit Status 2 */
-#define CAN_SR_TS3		((uint32_t)(1<<21))
-
-/*********************************************************************//**
- * Macro defines for CAN Receive Frame Status Register
- **********************************************************************/
-/** CAN ID Index */
-#define CAN_RFS_ID_INDEX(n)	((uint32_t)(n&0x3FF))
-/** CAN Bypass */
-#define CAN_RFS_BP			((uint32_t)(1<<10))
-/** CAN Data Length Code */
-#define CAN_RFS_DLC(n)		((uint32_t)((n&0xF)<<16)
-/** CAN Remote Transmission Request */
-#define CAN_RFS_RTR			((uint32_t)(1<<30))
-/** CAN control 11 bit or 29 bit Identifier */
-#define CAN_RFS_FF			((uint32_t)(1<<31))
-
-/*********************************************************************//**
- * Macro defines for CAN Receive Identifier Register
- **********************************************************************/
-/** CAN 11 bit Identifier */
-#define CAN_RID_ID_11(n)		((uint32_t)(n&0x7FF))
-/** CAN 29 bit Identifier */
-#define CAN_RID_ID_29(n)		((uint32_t)(n&0x1FFFFFFF))
-
-/*********************************************************************//**
- * Macro defines for CAN Receive Data A Register
- **********************************************************************/
-/** CAN Receive Data 1 */
-#define CAN_RDA_DATA1(n)		((uint32_t)(n&0xFF))
-/** CAN Receive Data 2 */
-#define CAN_RDA_DATA2(n)		((uint32_t)((n&0xFF)<<8))
-/** CAN Receive Data 3 */
-#define CAN_RDA_DATA3(n)		((uint32_t)((n&0xFF)<<16))
-/** CAN Receive Data 4 */
-#define CAN_RDA_DATA4(n)		((uint32_t)((n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Receive Data B Register
- **********************************************************************/
-/** CAN Receive Data 5 */
-#define CAN_RDB_DATA5(n)		((uint32_t)(n&0xFF))
-/** CAN Receive Data 6 */
-#define CAN_RDB_DATA6(n)		((uint32_t)((n&0xFF)<<8))
-/** CAN Receive Data 7 */
-#define CAN_RDB_DATA7(n)		((uint32_t)((n&0xFF)<<16))
-/** CAN Receive Data 8 */
-#define CAN_RDB_DATA8(n)		((uint32_t)((n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Transmit Frame Information Register
- **********************************************************************/
-/** CAN Priority */
-#define CAN_TFI_PRIO(n)			((uint32_t)(n&0xFF))
-/** CAN Data Length Code */
-#define CAN_TFI_DLC(n)			((uint32_t)((n&0xF)<<16))
-/** CAN Remote Frame Transmission */
-#define CAN_TFI_RTR				((uint32_t)(1<<30))
-/** CAN control 11-bit or 29-bit Identifier */
-#define CAN_TFI_FF				((uint32_t)(1<<31))
-
-/*********************************************************************//**
- * Macro defines for CAN Transmit Identifier Register
- **********************************************************************/
-/** CAN 11-bit Identifier */
-#define CAN_TID_ID11(n)			((uint32_t)(n&0x7FF))
-/** CAN 11-bit Identifier */
-#define CAN_TID_ID29(n)			((uint32_t)(n&0x1FFFFFFF))
-
-/*********************************************************************//**
- * Macro defines for CAN Transmit Data A Register
- **********************************************************************/
-/** CAN Transmit Data 1 */
-#define CAN_TDA_DATA1(n)		((uint32_t)(n&0xFF))
-/** CAN Transmit Data 2 */
-#define CAN_TDA_DATA2(n)		((uint32_t)((n&0xFF)<<8))
-/** CAN Transmit Data 3 */
-#define CAN_TDA_DATA3(n)		((uint32_t)((n&0xFF)<<16))
-/** CAN Transmit Data 4 */
-#define CAN_TDA_DATA4(n)		((uint32_t)((n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Transmit Data B Register
- **********************************************************************/
-/** CAN Transmit Data 5 */
-#define CAN_TDA_DATA5(n)		((uint32_t)(n&0xFF))
-/** CAN Transmit Data 6 */
-#define CAN_TDA_DATA6(n)		((uint32_t)((n&0xFF)<<8))
-/** CAN Transmit Data 7 */
-#define CAN_TDA_DATA7(n)		((uint32_t)((n&0xFF)<<16))
-/** CAN Transmit Data 8 */
-#define CAN_TDA_DATA8(n)		((uint32_t)((n&0xFF)<<24))
-
-/*********************************************************************//**
- * Macro defines for CAN Sleep Clear Register
- **********************************************************************/
-/** CAN1 Sleep mode */
-#define CAN1SLEEPCLR			((uint32_t)(1<<1))
-/** CAN2 Sleep Mode */
-#define CAN2SLEEPCLR			((uint32_t)(1<<2))
-
-/*********************************************************************//**
- * Macro defines for CAN Wake up Flags Register
- **********************************************************************/
-/** CAN1 Sleep mode */
-#define CAN_WAKEFLAGES_CAN1WAKE		((uint32_t)(1<<1))
-/** CAN2 Sleep Mode */
-#define CAN_WAKEFLAGES_CAN2WAKE		((uint32_t)(1<<2))
-
-/*********************************************************************//**
- * Macro defines for Central transmit Status Register
- **********************************************************************/
-/** CAN Transmit 1 */
-#define CAN_TSR_TS1			((uint32_t)(1))
-/** CAN Transmit 2 */
-#define CAN_TSR_TS2			((uint32_t)(1<<1))
-/** CAN Transmit Buffer Status 1 */
-#define CAN_TSR_TBS1			((uint32_t)(1<<8))
-/** CAN Transmit Buffer Status 2 */
-#define CAN_TSR_TBS2			((uint32_t)(1<<9))
-/** CAN Transmission Complete Status 1 */
-#define CAN_TSR_TCS1			((uint32_t)(1<<16))
-/** CAN Transmission Complete Status 2 */
-#define CAN_TSR_TCS2			((uint32_t)(1<<17))
-
-/*********************************************************************//**
- * Macro defines for Central Receive Status Register
- **********************************************************************/
-/** CAN Receive Status 1 */
-#define CAN_RSR_RS1				((uint32_t)(1))
-/** CAN Receive Status 1 */
-#define CAN_RSR_RS2				((uint32_t)(1<<1))
-/** CAN Receive Buffer Status 1*/
-#define CAN_RSR_RB1				((uint32_t)(1<<8))
-/** CAN Receive Buffer Status 2*/
-#define CAN_RSR_RB2				((uint32_t)(1<<9))
-/** CAN Data Overrun Status 1 */
-#define CAN_RSR_DOS1			((uint32_t)(1<<16))
-/** CAN Data Overrun Status 1 */
-#define CAN_RSR_DOS2			((uint32_t)(1<<17))
-
-/*********************************************************************//**
- * Macro defines for Central Miscellaneous Status Register
- **********************************************************************/
-/** Same CAN Error Status in CAN1GSR */
-#define CAN_MSR_E1		((uint32_t)(1))
-/** Same CAN Error Status in CAN2GSR */
-#define CAN_MSR_E2		((uint32_t)(1<<1))
-/** Same CAN Bus Status in CAN1GSR */
-#define CAN_MSR_BS1		((uint32_t)(1<<8))
-/** Same CAN Bus Status in CAN2GSR */
-#define CAN_MSR_BS2		((uint32_t)(1<<9))
-
-/*********************************************************************//**
- * Macro defines for Acceptance Filter Mode Register
- **********************************************************************/
-/** CAN Acceptance Filter Off mode */
-#define CAN_AFMR_AccOff		((uint32_t)(1))
-/** CAN Acceptance File Bypass mode */
-#define CAN_AFMR_AccBP		((uint32_t)(1<<1))
-/** FullCAN Mode Enhancements */
-#define CAN_AFMR_eFCAN		((uint32_t)(1<<2))
-
-/*********************************************************************//**
- * Macro defines for Standard Frame Individual Start Address Register
- **********************************************************************/
-/** The start address of the table of individual Standard Identifier */
-#define CAN_STT_sa(n)		((uint32_t)((n&1FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for Standard Frame Group Start Address Register
- **********************************************************************/
-/** The start address of the table of grouped Standard Identifier */
-#define CAN_SFF_GRP_sa(n)		((uint32_t)((n&3FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for Extended Frame Start Address Register
- **********************************************************************/
-/** The start address of the table of individual Extended Identifier */
-#define CAN_EFF_sa(n)		((uint32_t)((n&1FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for Extended Frame Group Start Address Register
- **********************************************************************/
-/** The start address of the table of grouped Extended Identifier */
-#define CAN_Eff_GRP_sa(n)		((uint32_t)((n&3FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for End Of AF Table Register
- **********************************************************************/
-/** The End of Table of AF LookUp Table */
-#define CAN_EndofTable(n)		((uint32_t)((n&3FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for LUT Error Address Register
- **********************************************************************/
-/** CAN Look-Up Table Error Address */
-#define CAN_LUTerrAd(n)		((uint32_t)((n&1FF)<<2))
-
-/*********************************************************************//**
- * Macro defines for LUT Error Register
- **********************************************************************/
-/** CAN Look-Up Table Error */
-#define CAN_LUTerr		((uint32_t)(1))
-
-/*********************************************************************//**
- * Macro defines for Global FullCANInterrupt Enable Register
- **********************************************************************/
-/** Global FullCANInterrupt Enable */
-#define CAN_FCANIE		((uint32_t)(1))
-
-/*********************************************************************//**
- * Macro defines for FullCAN Interrupt and Capture Register 0
- **********************************************************************/
-/** FullCAN Interrupt and Capture (0-31)*/
-#define CAN_FCANIC0_IntPnd(n)	((uint32_t)(1<<n))
-
-/*********************************************************************//**
- * Macro defines for FullCAN Interrupt and Capture Register 1
- **********************************************************************/
-/** FullCAN Interrupt and Capture (0-31)*/
-#define CAN_FCANIC1_IntPnd(n)	((uint32_t)(1<<(n-32)))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid CAN peripheral or not */
-#define PARAM_CANx(x)			((((uint32_t*)x)==((uint32_t *)LPC_CAN1)) \
-||(((uint32_t*)x)==((uint32_t *)LPC_CAN2)))
-
-/*	Macro to determine if it is valid CANAF or not*/
-#define PARAM_CANAFx(x)			(((uint32_t*)x)== ((uint32_t*)LPC_CANAF))
-
-/*	Macro to determine if it is valid CANAF RAM or not*/
-#define PARAM_CANAFRAMx(x)		(((uint32_t*)x)== (uint32_t*)LPC_CANAF_RAM)
-
-/*	Macro to determine if it is valid CANCR or not*/
-#define PARAM_CANCRx(x)			(((uint32_t*)x)==((uint32_t*)LPC_CANCR))
-
-/** Macro to check Data to send valid */
-#define PARAM_I2S_DATA(data) 	((data>=0)&&(data <= 0xFFFFFFFF))
-
-/** Macro to check frequency value */
-#define PRAM_I2S_FREQ(freq)		((freq>=16000)&&(freq <= 96000))
-
-/** Macro to check Frame Identifier */
-#define PARAM_ID_11(n)			((n>>11)==0) /*-- 11 bit --*/
-#define PARAM_ID_29(n)			((n>>29)==0) /*-- 29 bit --*/
-
-/** Macro to check DLC value */
-#define PARAM_DLC(n)			((n>>4)==0)  /*-- 4 bit --*/
-/** Macro to check ID format type */
-#define PARAM_ID_FORMAT(n)		((n==STD_ID_FORMAT)||(n==EXT_ID_FORMAT))
-
-/** Macro to check Group identifier */
-#define PARAM_GRP_ID(x, y)		((x<=y))
-
-/** Macro to check Frame type */
-#define PARAM_FRAME_TYPE(n)		((n==DATA_FRAME)||(n==REMOTE_FRAME))
-
-/** Macro to check Control/Central Status type parameter */
-#define PARAM_CTRL_STS_TYPE(n)	((n==CANCTRL_GLOBAL_STS)||(n==CANCTRL_INT_CAP) \
-||(n==CANCTRL_ERR_WRN)||(n==CANCTRL_STS))
-
-/** Macro to check CR status type */
-#define PARAM_CR_STS_TYPE(n)	((n==CANCR_TX_STS)||(n==CANCR_RX_STS) \
-||(n==CANCR_MS))
-/** Macro to check AF Mode type parameter */
-#define PARAM_AFMODE_TYPE(n)	((n==CAN_Normal)||(n==CAN_AccOff) \
-||(n==CAN_AccBP)||(n==CAN_eFCAN))
-
-/** Macro to check Operation Mode */
-#define PARAM_MODE_TYPE(n)		((n==CAN_OPERATING_MODE)||(n==CAN_RESET_MODE) \
-||(n==CAN_LISTENONLY_MODE)||(n==CAN_SELFTEST_MODE) \
-||(n==CAN_TXPRIORITY_MODE)||(n==CAN_SLEEP_MODE) \
-||(n==CAN_RXPOLARITY_MODE)||(n==CAN_TEST_MODE))
-
-/** Macro define for struct AF_Section parameter */
-#define PARAM_CTRL(n)	((n==CAN1_CTRL)|(n==CAN2_CTRL))
-
-/** Macro define for struct AF_Section parameter */
-#define PARAM_MSG_DISABLE(n)	((n==MSG_ENABLE)|(n==MSG_DISABLE))
-
-/**Macro to check Interrupt Type parameter */
-#define PARAM_INT_EN_TYPE(n)	((n==CANINT_RIE)||(n==CANINT_TIE1) \
-||(n==CANINT_EIE)||(n==CANINT_DOIE) \
-||(n==CANINT_WUIE)||(n==CANINT_EPIE) \
-||(n==CANINT_ALIE)||(n==CANINT_BEIE) \
-||(n==CANINT_IDIE)||(n==CANINT_TIE2) \
-||(n==CANINT_TIE3)||(n==CANINT_FCE))
-
-/** Macro to check AFLUT Entry type */
-#define PARAM_AFLUT_ENTRY_TYPE(n)	((n==FULLCAN_ENTRY)||(n==EXPLICIT_STANDARD_ENTRY)\
-||(n==GROUP_STANDARD_ENTRY)||(n==EXPLICIT_EXTEND_ENTRY)	\
-||(n==GROUP_EXTEND_ENTRY))
-
-/** Macro to check position */
-#define PARAM_POSITION(n)	((n>=0)&&(n<512))
-
-/**
- * @}
- */
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup CAN_Public_Types CAN Public Types
- * @{
- */
-
-/** CAN configuration structure */
-/***********************************************************************
- * CAN device configuration commands (IOCTL commands and arguments)
- **********************************************************************/
-/**
- * @brief CAN ID format definition
- */
-typedef enum {
-	STD_ID_FORMAT = 0, 	/**< Use standard ID format (11 bit ID) */
-	EXT_ID_FORMAT = 1	/**< Use extended ID format (29 bit ID) */
-} CAN_ID_FORMAT_Type;
-
-/**
- * @brief AFLUT Entry type definition
- */
-typedef enum {
-	FULLCAN_ENTRY = 0,
-	EXPLICIT_STANDARD_ENTRY,
-	GROUP_STANDARD_ENTRY,
-	EXPLICIT_EXTEND_ENTRY,
-	GROUP_EXTEND_ENTRY
-} AFLUT_ENTRY_Type;
-
-/**
- * @brief Symbolic names for type of CAN message
- */
-typedef enum {
-	DATA_FRAME = 0, 	/**< Data frame */
-	REMOTE_FRAME = 1	/**< Remote frame */
-} CAN_FRAME_Type;
-
-/**
- * @brief CAN Control status definition
- */
-typedef enum {
-	CANCTRL_GLOBAL_STS = 0, /**< CAN Global Status */
-	CANCTRL_INT_CAP, 		/**< CAN Interrupt and Capture */
-	CANCTRL_ERR_WRN, 		/**< CAN Error Warning Limit */
-	CANCTRL_STS				/**< CAN Control Status */
-} CAN_CTRL_STS_Type;
-
-/**
- * @brief Central CAN status type definition
- */
-typedef enum {
-	CANCR_TX_STS = 0, 	/**< Central CAN Tx Status */
-	CANCR_RX_STS, 		/**< Central CAN Rx Status */
-	CANCR_MS			/**< Central CAN Miscellaneous Status */
-} CAN_CR_STS_Type;
-
-/**
- * @brief FullCAN Interrupt Capture type definition
- */
-typedef enum{
-	FULLCAN_IC0,	/**< FullCAN Interrupt and Capture 0 */
-	FULLCAN_IC1	/**< FullCAN Interrupt and Capture 1 */
-}FullCAN_IC_Type;
-
-/**
- * @brief CAN interrupt enable type definition
- */
-typedef enum {
-	CANINT_RIE = 0, 	/**< CAN Receiver Interrupt Enable */
-	CANINT_TIE1, 		/**< CAN Transmit Interrupt Enable */
-	CANINT_EIE, 		/**< CAN Error Warning Interrupt Enable */
-	CANINT_DOIE, 		/**< CAN Data Overrun Interrupt Enable */
-	CANINT_WUIE, 		/**< CAN Wake-Up Interrupt Enable */
-	CANINT_EPIE, 		/**< CAN Error Passive Interrupt Enable */
-	CANINT_ALIE, 		/**< CAN Arbitration Lost Interrupt Enable */
-	CANINT_BEIE, 		/**< CAN Bus Error Inter rupt Enable */
-	CANINT_IDIE, 		/**< CAN ID Ready Interrupt Enable */
-	CANINT_TIE2, 		/**< CAN Transmit Interrupt Enable for Buffer2 */
-	CANINT_TIE3, 		/**< CAN Transmit Interrupt Enable for Buffer3 */
-	CANINT_FCE			/**< FullCAN Interrupt Enable */
-} CAN_INT_EN_Type;
-
-/**
- * @brief Acceptance Filter Mode type definition
- */
-typedef enum {
-	CAN_Normal = 0, 	/**< Normal Mode */
-	CAN_AccOff, 		/**< Acceptance Filter Off Mode */
-	CAN_AccBP, 			/**< Acceptance Fileter Bypass Mode */
-	CAN_eFCAN			/**< FullCAN Mode Enhancement */
-} CAN_AFMODE_Type;
-
-/**
- * @brief CAN Mode Type definition
- */
-typedef enum {
-	CAN_OPERATING_MODE = 0, 	/**< Operating Mode */
-	CAN_RESET_MODE, 			/**< Reset Mode */
-	CAN_LISTENONLY_MODE, 		/**< Listen Only Mode */
-	CAN_SELFTEST_MODE, 			/**< Seft Test Mode */
-	CAN_TXPRIORITY_MODE, 		/**< Transmit Priority Mode */
-	CAN_SLEEP_MODE, 			/**< Sleep Mode */
-	CAN_RXPOLARITY_MODE, 		/**< Receive Polarity Mode */
-	CAN_TEST_MODE				/**< Test Mode */
-} CAN_MODE_Type;
-
-/**
- * @brief Error values that functions can return
- */
-typedef enum {
-	CAN_OK = 1, 				/**< No error */
-	CAN_OBJECTS_FULL_ERROR, 	/**< No more rx or tx objects available */
-	CAN_FULL_OBJ_NOT_RCV, 		/**< Full CAN object not received */
-	CAN_NO_RECEIVE_DATA, 		/**< No have receive data available */
-	CAN_AF_ENTRY_ERROR, 		/**< Entry load in AFLUT is unvalid */
-	CAN_CONFLICT_ID_ERROR, 		/**< Conflict ID occur */
-	CAN_ENTRY_NOT_EXIT_ERROR	/**< Entry remove outo AFLUT is not exit */
-} CAN_ERROR;
-
-/**
- * @brief Pin Configuration structure
- */
-typedef struct {
-	uint8_t RD; 			/**< Serial Inputs, from CAN transceivers, should be:
-							 ** For CAN1:
-							 - CAN_RD1_P0_0: RD pin is on P0.0
-							 - CAN_RD1_P0_21 : RD pin is on P0.21
-							 ** For CAN2:
-							 - CAN_RD2_P0_4: RD pin is on P0.4
-							 - CAN_RD2_P2_7: RD pin is on P2.7
-							 */
-	uint8_t TD;				/**< Serial Outputs, To CAN transceivers, should be:
-							 ** For CAN1:
-							 - CAN_TD1_P0_1: TD pin is on P0.1
-							 - CAN_TD1_P0_22: TD pin is on P0.22
-							 ** For CAN2:
-							 - CAN_TD2_P0_5: TD pin is on P0.5
-							 - CAN_TD2_P2_8: TD pin is on P2.8
-							 */
-} CAN_PinCFG_Type;
-
-/**
- * @brief CAN message object structure
- */
-typedef struct {
-	uint32_t id; 			/**< 29 bit identifier, it depend on "format" value
-								 - if format = STD_ID_FORMAT, id should be 11 bit identifier
-								 - if format = EXT_ID_FORMAT, id should be 29 bit identifier
-							 */
-	uint8_t dataA[4]; 		/**< Data field A */
-	uint8_t dataB[4]; 		/**< Data field B */
-	uint8_t len; 			/**< Length of data field in bytes, should be:
-								 - 0000b-0111b: 0-7 bytes
-								 - 1xxxb: 8 bytes
-							*/
-	uint8_t format; 		/**< Identifier Format, should be:
-								 - STD_ID_FORMAT: Standard ID - 11 bit format
-								 - EXT_ID_FORMAT: Extended ID - 29 bit format
-							*/
-	uint8_t type; 			/**< Remote Frame transmission, should be:
-								 - DATA_FRAME: the number of data bytes called out by the DLC
-								 field are send from the CANxTDA and CANxTDB registers
-								 - REMOTE_FRAME: Remote Frame is sent
-							*/
-} CAN_MSG_Type;
-
-/**
- * @brief FullCAN Entry structure
- */
-typedef struct {
-	uint8_t controller;		/**< CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint8_t disable;		/**< Disable bit, should be:
-								 - MSG_ENABLE: disable bit = 0
-								 - MSG_DISABLE: disable bit = 1
-							*/
-	uint16_t id_11;			/**< Standard ID, should be 11-bit value */
-} FullCAN_Entry;
-
-/**
- * @brief Standard ID Frame Format Entry structure
- */
-typedef struct {
-	uint8_t controller; 	/**< CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint8_t disable; 		/**< Disable bit, should be:
-								 - MSG_ENABLE: disable bit = 0
-								 - MSG_DISABLE: disable bit = 1
-							*/
-	uint16_t id_11; 		/**< Standard ID, should be 11-bit value */
-} SFF_Entry;
-
-/**
- * @brief Group of Standard ID Frame Format Entry structure
- */
-typedef struct {
-	uint8_t controller1; 	/**< First CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint8_t disable1; 		/**< First Disable bit, should be:
-								 - MSG_ENABLE: disable bit = 0)
-								 - MSG_DISABLE: disable bit = 1
-							*/
-	uint16_t lowerID; 		/**< ID lower bound, should be 11-bit value */
-	uint8_t controller2; 	/**< Second CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint8_t disable2; 		/**< Second Disable bit, should be:
-								 - MSG_ENABLE: disable bit = 0
-								 - MSG_DISABLE: disable bit = 1
-							*/
-	uint16_t upperID; 		/**< ID upper bound, should be 11-bit value and
-								 equal or greater than lowerID
-							*/
-} SFF_GPR_Entry;
-
-/**
- * @brief Extended ID Frame Format Entry structure
- */
-typedef struct {
-	uint8_t controller; 	/**< CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint32_t ID_29; 		/**< Extend ID, shoud be 29-bit value */
-} EFF_Entry;
-
-
-/**
- * @brief Group of Extended ID Frame Format Entry structure
- */
-typedef struct {
-	uint8_t controller1; 	/**< First CAN Controller, should be:
-								 - CAN1_CTRL: CAN1 Controller
-								 - CAN2_CTRL: CAN2 Controller
-							*/
-	uint8_t controller2; 	/**< Second Disable bit, should be:
-								 - MSG_ENABLE: disable bit = 0(default)
-								 - MSG_DISABLE: disable bit = 1
-							*/
-	uint32_t lowerEID; 		/**< Extended ID lower bound, should be 29-bit value */
-	uint32_t upperEID; 		/**< Extended ID upper bound, should be 29-bit value */
-} EFF_GPR_Entry;
-
-
-/**
- * @brief Acceptance Filter Section Table structure
- */
-typedef struct {
-	FullCAN_Entry* FullCAN_Sec; 	/**< The pointer point to FullCAN_Entry */
-	uint8_t FC_NumEntry;			/**< FullCAN Entry Number */
-	SFF_Entry* SFF_Sec; 			/**< The pointer point to SFF_Entry */
-	uint8_t SFF_NumEntry;			/**< Standard ID Entry Number */
-	SFF_GPR_Entry* SFF_GPR_Sec; 	/**< The pointer point to SFF_GPR_Entry */
-	uint8_t SFF_GPR_NumEntry;		/**< Group Standard ID Entry Number */
-	EFF_Entry* EFF_Sec; 			/**< The pointer point to EFF_Entry */
-	uint8_t EFF_NumEntry;			/**< Extended ID Entry Number */
-	EFF_GPR_Entry* EFF_GPR_Sec; 	/**< The pointer point to EFF_GPR_Entry */
-	uint8_t EFF_GPR_NumEntry;		/**< Group Extended ID Entry Number */
-} AF_SectionDef;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup CAN_Public_Functions CAN Public Functions
- * @{
- */
-
-/* Init/DeInit CAN peripheral -----------*/
-void CAN_Init(LPC_CAN_TypeDef *CANx, uint32_t baudrate);
-void CAN_DeInit(LPC_CAN_TypeDef *CANx);
-
-/* CAN messages functions ---------------*/
-Status CAN_SendMsg(LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg);
-Status CAN_ReceiveMsg(LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg);
-CAN_ERROR FCAN_ReadObj(LPC_CANAF_TypeDef* CANAFx, CAN_MSG_Type *CAN_Msg);
-
-/* CAN configure functions ---------------*/
-void CAN_ModeConfig(LPC_CAN_TypeDef* CANx, CAN_MODE_Type mode,
-		FunctionalState NewState);
-void CAN_SetAFMode(LPC_CANAF_TypeDef* CANAFx, CAN_AFMODE_Type AFmode);
-void CAN_SetCommand(LPC_CAN_TypeDef* CANx, uint32_t CMRType);
-
-/* AFLUT functions ---------------------- */
-CAN_ERROR CAN_SetupAFLUT(LPC_CANAF_TypeDef* CANAFx, AF_SectionDef* AFSection);
-CAN_ERROR CAN_LoadFullCANEntry(LPC_CAN_TypeDef* CANx, uint16_t ID);
-CAN_ERROR CAN_LoadExplicitEntry(LPC_CAN_TypeDef* CANx, uint32_t ID,
-		CAN_ID_FORMAT_Type format);
-CAN_ERROR CAN_LoadGroupEntry(LPC_CAN_TypeDef* CANx, uint32_t lowerID,
-		uint32_t upperID, CAN_ID_FORMAT_Type format);
-CAN_ERROR CAN_RemoveEntry(AFLUT_ENTRY_Type EntryType, uint16_t position);
-
-/* CAN interrupt functions -----------------*/
-void CAN_IRQCmd(LPC_CAN_TypeDef* CANx, CAN_INT_EN_Type arg, FunctionalState NewState);
-uint32_t CAN_IntGetStatus(LPC_CAN_TypeDef* CANx);
-
-/* CAN get status functions ----------------*/
-IntStatus CAN_FullCANIntGetStatus (LPC_CANAF_TypeDef* CANAFx);
-uint32_t CAN_FullCANPendGetStatus (LPC_CANAF_TypeDef* CANAFx, FullCAN_IC_Type type);
-uint32_t CAN_GetCTRLStatus(LPC_CAN_TypeDef* CANx, CAN_CTRL_STS_Type arg);
-uint32_t CAN_GetCRStatus(LPC_CANCR_TypeDef* CANCRx, CAN_CR_STS_Type arg);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_CAN_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_clkpwr.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_clkpwr.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_clkpwr.h			2010-05-21
-*//**
-* @file		lpc17xx_clkpwr.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Clock and Power Control firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup CLKPWR CLKPWR (Clock Power)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_CLKPWR_H_
-#define LPC17XX_CLKPWR_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup CLKPWR_Public_Macros CLKPWR Public Macros
- * @{
- */
-
-/**********************************************************************
- * Peripheral Clock Selection Definitions
- **********************************************************************/
-/** Peripheral clock divider bit position for WDT */
-#define	CLKPWR_PCLKSEL_WDT  		((uint32_t)(0))
-/** Peripheral clock divider bit position for TIMER0 */
-#define	CLKPWR_PCLKSEL_TIMER0  		((uint32_t)(2))
-/** Peripheral clock divider bit position for TIMER1 */
-#define	CLKPWR_PCLKSEL_TIMER1  		((uint32_t)(4))
-/** Peripheral clock divider bit position for UART0 */
-#define	CLKPWR_PCLKSEL_UART0  		((uint32_t)(6))
-/** Peripheral clock divider bit position for UART1 */
-#define	CLKPWR_PCLKSEL_UART1  		((uint32_t)(8))
-/** Peripheral clock divider bit position for PWM1 */
-#define	CLKPWR_PCLKSEL_PWM1  		((uint32_t)(12))
-/** Peripheral clock divider bit position for I2C0 */
-#define	CLKPWR_PCLKSEL_I2C0  		((uint32_t)(14))
-/** Peripheral clock divider bit position for SPI */
-#define	CLKPWR_PCLKSEL_SPI  		((uint32_t)(16))
-/** Peripheral clock divider bit position for SSP1 */
-#define	CLKPWR_PCLKSEL_SSP1  		((uint32_t)(20))
-/** Peripheral clock divider bit position for DAC */
-#define	CLKPWR_PCLKSEL_DAC  		((uint32_t)(22))
-/** Peripheral clock divider bit position for ADC */
-#define	CLKPWR_PCLKSEL_ADC  		((uint32_t)(24))
-/** Peripheral clock divider bit position for CAN1 */
-#define	CLKPWR_PCLKSEL_CAN1 		((uint32_t)(26))
-/** Peripheral clock divider bit position for CAN2 */
-#define	CLKPWR_PCLKSEL_CAN2 		((uint32_t)(28))
-/** Peripheral clock divider bit position for ACF */
-#define	CLKPWR_PCLKSEL_ACF  		((uint32_t)(30))
-/** Peripheral clock divider bit position for QEI */
-#define	CLKPWR_PCLKSEL_QEI  		((uint32_t)(32))
-/** Peripheral clock divider bit position for PCB */
-#define	CLKPWR_PCLKSEL_PCB  		((uint32_t)(36))
-/** Peripheral clock divider bit position for  I2C1 */
-#define	CLKPWR_PCLKSEL_I2C1  		((uint32_t)(38))
-/** Peripheral clock divider bit position for SSP0 */
-#define	CLKPWR_PCLKSEL_SSP0  		((uint32_t)(42))
-/** Peripheral clock divider bit position for TIMER2 */
-#define	CLKPWR_PCLKSEL_TIMER2  		((uint32_t)(44))
-/** Peripheral clock divider bit position for  TIMER3 */
-#define	CLKPWR_PCLKSEL_TIMER3  		((uint32_t)(46))
-/** Peripheral clock divider bit position for UART2 */
-#define	CLKPWR_PCLKSEL_UART2  		((uint32_t)(48))
-/** Peripheral clock divider bit position for UART3 */
-#define	CLKPWR_PCLKSEL_UART3  		((uint32_t)(50))
-/** Peripheral clock divider bit position for I2C2 */
-#define	CLKPWR_PCLKSEL_I2C2  		((uint32_t)(52))
-/** Peripheral clock divider bit position for I2S */
-#define	CLKPWR_PCLKSEL_I2S  		((uint32_t)(54))
-/** Peripheral clock divider bit position for RIT */
-#define	CLKPWR_PCLKSEL_RIT  		((uint32_t)(58))
-/** Peripheral clock divider bit position for SYSCON */
-#define	CLKPWR_PCLKSEL_SYSCON  		((uint32_t)(60))
-/** Peripheral clock divider bit position for MC */
-#define	CLKPWR_PCLKSEL_MC  			((uint32_t)(62))
-
-/** Macro for Peripheral Clock Selection register bit values
- * Note: When CCLK_DIV_8, Peripheral's clock is selected to
- * PCLK_xyz = CCLK/8 except for CAN1, CAN2, and CAN filtering
- * when '11'selects PCLK_xyz = CCLK/6 */
-/* Peripheral clock divider is set to 4 from CCLK */
-#define	CLKPWR_PCLKSEL_CCLK_DIV_4  ((uint32_t)(0))
-/** Peripheral clock divider is the same with CCLK */
-#define	CLKPWR_PCLKSEL_CCLK_DIV_1  ((uint32_t)(1))
-/** Peripheral clock divider is set to 2 from CCLK */
-#define	CLKPWR_PCLKSEL_CCLK_DIV_2  ((uint32_t)(2))
-
-
-/********************************************************************
-* Power Control for Peripherals Definitions
-**********************************************************************/
-/** Timer/Counter 0 power/clock control bit */
-#define	 CLKPWR_PCONP_PCTIM0	((uint32_t)(1<<1))
-/* Timer/Counter 1 power/clock control bit */
-#define	 CLKPWR_PCONP_PCTIM1	((uint32_t)(1<<2))
-/** UART0 power/clock control bit */
-#define	 CLKPWR_PCONP_PCUART0  	((uint32_t)(1<<3))
-/** UART1 power/clock control bit */
-#define	 CLKPWR_PCONP_PCUART1  	((uint32_t)(1<<4))
-/** PWM1 power/clock control bit */
-#define	 CLKPWR_PCONP_PCPWM1	((uint32_t)(1<<6))
-/** The I2C0 interface power/clock control bit */
-#define	 CLKPWR_PCONP_PCI2C0	((uint32_t)(1<<7))
-/** The SPI interface power/clock control bit */
-#define	 CLKPWR_PCONP_PCSPI  	((uint32_t)(1<<8))
-/** The RTC power/clock control bit */
-#define	 CLKPWR_PCONP_PCRTC  	((uint32_t)(1<<9))
-/** The SSP1 interface power/clock control bit */
-#define	 CLKPWR_PCONP_PCSSP1	((uint32_t)(1<<10))
-/** A/D converter 0 (ADC0) power/clock control bit */
-#define	 CLKPWR_PCONP_PCAD  	((uint32_t)(1<<12))
-/** CAN Controller 1 power/clock control bit */
-#define	 CLKPWR_PCONP_PCAN1  	((uint32_t)(1<<13))
-/** CAN Controller 2 power/clock control bit */
-#define	 CLKPWR_PCONP_PCAN2 	((uint32_t)(1<<14))
-/** GPIO power/clock control bit */
-#define	CLKPWR_PCONP_PCGPIO 	((uint32_t)(1<<15))
-/** Repetitive Interrupt Timer power/clock control bit */
-#define	CLKPWR_PCONP_PCRIT 		((uint32_t)(1<<16))
-/** Motor Control PWM */
-#define CLKPWR_PCONP_PCMC 		((uint32_t)(1<<17))
-/** Quadrature Encoder Interface power/clock control bit */
-#define CLKPWR_PCONP_PCQEI 		((uint32_t)(1<<18))
-/** The I2C1 interface power/clock control bit */
-#define	 CLKPWR_PCONP_PCI2C1  	((uint32_t)(1<<19))
-/** The SSP0 interface power/clock control bit */
-#define	 CLKPWR_PCONP_PCSSP0	((uint32_t)(1<<21))
-/** Timer 2 power/clock control bit */
-#define	 CLKPWR_PCONP_PCTIM2	((uint32_t)(1<<22))
-/** Timer 3 power/clock control bit */
-#define	 CLKPWR_PCONP_PCTIM3	((uint32_t)(1<<23))
-/** UART 2 power/clock control bit */
-#define	 CLKPWR_PCONP_PCUART2  	((uint32_t)(1<<24))
-/** UART 3 power/clock control bit */
-#define	 CLKPWR_PCONP_PCUART3  	((uint32_t)(1<<25))
-/** I2C interface 2 power/clock control bit */
-#define	 CLKPWR_PCONP_PCI2C2	((uint32_t)(1<<26))
-/** I2S interface power/clock control bit*/
-#define	 CLKPWR_PCONP_PCI2S  	((uint32_t)(1<<27))
-/** GP DMA function power/clock control bit*/
-#define	 CLKPWR_PCONP_PCGPDMA  	((uint32_t)(1<<29))
-/** Ethernet block power/clock control bit*/
-#define	 CLKPWR_PCONP_PCENET	((uint32_t)(1<<30))
-/** USB interface power/clock control bit*/
-#define	 CLKPWR_PCONP_PCUSB  	((uint32_t)(1<<31))
-
-
-/**
- * @}
- */
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup CLKPWR_Private_Macros CLKPWR Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for Clock Source Select Register
- **********************************************************************/
-/** Internal RC oscillator */
-#define CLKPWR_CLKSRCSEL_CLKSRC_IRC			((uint32_t)(0x00))
-/** Main oscillator */
-#define CLKPWR_CLKSRCSEL_CLKSRC_MAINOSC		((uint32_t)(0x01))
-/** RTC oscillator */
-#define CLKPWR_CLKSRCSEL_CLKSRC_RTC			((uint32_t)(0x02))
-/** Clock source selection bit mask */
-#define CLKPWR_CLKSRCSEL_BITMASK			((uint32_t)(0x03))
-
-/*********************************************************************//**
- * Macro defines for Clock Output Configuration Register
- **********************************************************************/
-/* Clock Output Configuration register definition */
-/** Selects the CPU clock as the CLKOUT source */
-#define CLKPWR_CLKOUTCFG_CLKOUTSEL_CPU		((uint32_t)(0x00))
-/** Selects the main oscillator as the CLKOUT source */
-#define CLKPWR_CLKOUTCFG_CLKOUTSEL_MAINOSC	((uint32_t)(0x01))
-/** Selects the Internal RC oscillator as the CLKOUT source */
-#define CLKPWR_CLKOUTCFG_CLKOUTSEL_RC		((uint32_t)(0x02))
-/** Selects the USB clock as the CLKOUT source */
-#define CLKPWR_CLKOUTCFG_CLKOUTSEL_USB		((uint32_t)(0x03))
-/** Selects the RTC oscillator as the CLKOUT source */
-#define CLKPWR_CLKOUTCFG_CLKOUTSEL_RTC		((uint32_t)(0x04))
-/** Integer value to divide the output clock by, minus one */
-#define CLKPWR_CLKOUTCFG_CLKOUTDIV(n)		((uint32_t)((n&0x0F)<<4))
-/** CLKOUT enable control */
-#define CLKPWR_CLKOUTCFG_CLKOUT_EN			((uint32_t)(1<<8))
-/** CLKOUT activity indication */
-#define CLKPWR_CLKOUTCFG_CLKOUT_ACT			((uint32_t)(1<<9))
-/** Clock source selection bit mask */
-#define CLKPWR_CLKOUTCFG_BITMASK			((uint32_t)(0x3FF))
-
-/*********************************************************************//**
- * Macro defines for PPL0 Control Register
- **********************************************************************/
-/** PLL 0 control enable */
-#define CLKPWR_PLL0CON_ENABLE		((uint32_t)(0x01))
-/** PLL 0 control connect */
-#define CLKPWR_PLL0CON_CONNECT		((uint32_t)(0x02))
-/** PLL 0 control bit mask */
-#define CLKPWR_PLL0CON_BITMASK		((uint32_t)(0x03))
-
-/*********************************************************************//**
- * Macro defines for PPL0 Configuration Register
- **********************************************************************/
-/** PLL 0 Configuration MSEL field */
-#define CLKPWR_PLL0CFG_MSEL(n)		((uint32_t)(n&0x7FFF))
-/** PLL 0 Configuration NSEL field */
-#define CLKPWR_PLL0CFG_NSEL(n)		((uint32_t)((n<<16)&0xFF0000))
-/** PLL 0 Configuration bit mask */
-#define CLKPWR_PLL0CFG_BITMASK		((uint32_t)(0xFF7FFF))
-
-
-/*********************************************************************//**
- * Macro defines for PPL0 Status Register
- **********************************************************************/
-/** PLL 0 MSEL value */
-#define CLKPWR_PLL0STAT_MSEL(n)		((uint32_t)(n&0x7FFF))
-/** PLL NSEL get value  */
-#define CLKPWR_PLL0STAT_NSEL(n)		((uint32_t)((n>>16)&0xFF))
-/** PLL status enable bit */
-#define CLKPWR_PLL0STAT_PLLE		((uint32_t)(1<<24))
-/** PLL status Connect bit */
-#define CLKPWR_PLL0STAT_PLLC		((uint32_t)(1<<25))
-/** PLL status lock */
-#define CLKPWR_PLL0STAT_PLOCK		((uint32_t)(1<<26))
-
-/*********************************************************************//**
- * Macro defines for PPL0 Feed Register
- **********************************************************************/
-/** PLL0 Feed bit mask */
-#define CLKPWR_PLL0FEED_BITMASK			((uint32_t)0xFF)
-
-/*********************************************************************//**
- * Macro defines for PLL1 Control Register
- **********************************************************************/
-/** USB PLL control enable */
-#define CLKPWR_PLL1CON_ENABLE		((uint32_t)(0x01))
-/** USB PLL control connect */
-#define CLKPWR_PLL1CON_CONNECT		((uint32_t)(0x02))
-/** USB PLL control bit mask */
-#define CLKPWR_PLL1CON_BITMASK		((uint32_t)(0x03))
-
-/*********************************************************************//**
- * Macro defines for PLL1 Configuration Register
- **********************************************************************/
-/** USB PLL MSEL set value */
-#define CLKPWR_PLL1CFG_MSEL(n)		((uint32_t)(n&0x1F))
-/** USB PLL PSEL set value */
-#define CLKPWR_PLL1CFG_PSEL(n)		((uint32_t)((n&0x03)<<5))
-/** USB PLL configuration bit mask */
-#define CLKPWR_PLL1CFG_BITMASK		((uint32_t)(0x7F))
-
-/*********************************************************************//**
- * Macro defines for PLL1 Status Register
- **********************************************************************/
-/** USB PLL MSEL get value  */
-#define CLKPWR_PLL1STAT_MSEL(n)		((uint32_t)(n&0x1F))
-/** USB PLL PSEL get value  */
-#define CLKPWR_PLL1STAT_PSEL(n)		((uint32_t)((n>>5)&0x03))
-/** USB PLL status enable bit */
-#define CLKPWR_PLL1STAT_PLLE		((uint32_t)(1<<8))
-/** USB PLL status Connect bit */
-#define CLKPWR_PLL1STAT_PLLC		((uint32_t)(1<<9))
-/** USB PLL status lock */
-#define CLKPWR_PLL1STAT_PLOCK		((uint32_t)(1<<10))
-
-/*********************************************************************//**
- * Macro defines for PLL1 Feed Register
- **********************************************************************/
-/** PLL1 Feed bit mask */
-#define CLKPWR_PLL1FEED_BITMASK		((uint32_t)0xFF)
-
-/*********************************************************************//**
- * Macro defines for CPU Clock Configuration Register
- **********************************************************************/
-/** CPU Clock configuration bit mask */
-#define CLKPWR_CCLKCFG_BITMASK		((uint32_t)(0xFF))
-
-/*********************************************************************//**
- * Macro defines for USB Clock Configuration Register
- **********************************************************************/
-/** USB Clock Configuration bit mask */
-#define CLKPWR_USBCLKCFG_BITMASK	((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro defines for IRC Trim Register
- **********************************************************************/
-/** IRC Trim bit mask */
-#define CLKPWR_IRCTRIM_BITMASK		((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro defines for Peripheral Clock Selection Register 0 and 1
- **********************************************************************/
-/** Peripheral Clock Selection 0 mask bit */
-#define CLKPWR_PCLKSEL0_BITMASK		((uint32_t)(0xFFF3F3FF))
-/** Peripheral Clock Selection 1 mask bit */
-#define CLKPWR_PCLKSEL1_BITMASK		((uint32_t)(0xFCF3F0F3))
-/** Macro to set peripheral clock of each type
- * p: position of two bits that hold divider of peripheral clock
- * n: value of divider of peripheral clock  to be set */
-#define CLKPWR_PCLKSEL_SET(p,n)		_SBF(p,n)
-/** Macro to mask peripheral clock of each type */
-#define CLKPWR_PCLKSEL_BITMASK(p)	_SBF(p,0x03)
-/** Macro to get peripheral clock of each type */
-#define CLKPWR_PCLKSEL_GET(p, n)	((uint32_t)((n>>p)&0x03))
-
-/*********************************************************************//**
- * Macro defines for Power Mode Control Register
- **********************************************************************/
-/** Power mode control bit 0 */
-#define CLKPWR_PCON_PM0			((uint32_t)(1<<0))
-/** Power mode control bit 1 */
-#define CLKPWR_PCON_PM1			((uint32_t)(1<<1))
-/** Brown-Out Reduced Power Mode */
-#define CLKPWR_PCON_BODPDM		((uint32_t)(1<<2))
-/** Brown-Out Global Disable */
-#define CLKPWR_PCON_BOGD		((uint32_t)(1<<3))
-/** Brown Out Reset Disable */
-#define CLKPWR_PCON_BORD		((uint32_t)(1<<4))
-/** Sleep Mode entry flag */
-#define CLKPWR_PCON_SMFLAG		((uint32_t)(1<<8))
-/** Deep Sleep entry flag */
-#define CLKPWR_PCON_DSFLAG		((uint32_t)(1<<9))
-/** Power-down entry flag */
-#define CLKPWR_PCON_PDFLAG		((uint32_t)(1<<10))
-/** Deep Power-down entry flag */
-#define CLKPWR_PCON_DPDFLAG		((uint32_t)(1<<11))
-
-/*********************************************************************//**
- * Macro defines for Power Control for Peripheral Register
- **********************************************************************/
-/** Power Control for Peripherals bit mask */
-#define CLKPWR_PCONP_BITMASK	0xEFEFF7DE
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup CLKPWR_Public_Functions CLKPWR Public Functions
- * @{
- */
-
-void CLKPWR_SetPCLKDiv (uint32_t ClkType, uint32_t DivVal);
-uint32_t CLKPWR_GetPCLKSEL (uint32_t ClkType);
-uint32_t CLKPWR_GetPCLK (uint32_t ClkType);
-void CLKPWR_ConfigPPWR (uint32_t PPType, FunctionalState NewState);
-void CLKPWR_Sleep(void);
-void CLKPWR_DeepSleep(void);
-void CLKPWR_PowerDown(void);
-void CLKPWR_DeepPowerDown(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_CLKPWR_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_dac.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_dac.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_dac.h				2010-05-21
-*//**
-* @file		lpc17xx_dac.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Clock and Power Control firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup DAC DAC (Digital-to-Analog Controller)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_DAC_H_
-#define LPC17XX_DAC_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup DAC_Private_Macros DAC Private Macros
- * @{
- */
-
-/** After the selected settling time after this field is written with a
-new VALUE, the voltage on the AOUT pin (with respect to VSSA)
-is VALUE/1024 × VREF */
-#define DAC_VALUE(n) 		((uint32_t)((n&0x3FF)<<6))
-/** If this bit = 0: The settling time of the DAC is 1 microsecond max,
- * and the maximum current is 700 microAmpere
- * If this bit = 1: The settling time of the DAC is 2.5 microsecond
- * and the maximum current is 350 microAmpere */
-#define DAC_BIAS_EN			((uint32_t)(1<<16))
-/** Value to reload interrupt DMA counter */
-#define DAC_CCNT_VALUE(n)  ((uint32_t)(n&0xffff))
-
-/** DCAR double buffering */
-#define DAC_DBLBUF_ENA		((uint32_t)(1<<1))
-/** DCAR Time out count enable */
-#define DAC_CNT_ENA			((uint32_t)(1<<2))
-/** DCAR DMA access */
-#define DAC_DMA_ENA			((uint32_t)(1<<3))
-/** DCAR DACCTRL mask bit */
-#define DAC_DACCTRL_MASK	((uint32_t)(0x0F))
-
-/** Macro to determine if it is valid DAC peripheral */
-#define PARAM_DACx(n)	(((uint32_t *)n)==((uint32_t *)LPC_DAC))
-
-/** Macro to check DAC current optional parameter */
-#define	PARAM_DAC_CURRENT_OPT(OPTION) ((OPTION == DAC_MAX_CURRENT_700uA)\
-||(OPTION == DAC_MAX_CURRENT_350uA))
-/**
- * @}
- */
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup DAC_Public_Types DAC Public Types
- * @{
- */
-
-/**
- * @brief Current option in DAC configuration option */
-typedef enum
-{
-	DAC_MAX_CURRENT_700uA = 0, 	/*!< The settling time of the DAC is 1 us max,
-								and the maximum	current is 700 uA */
-	DAC_MAX_CURRENT_350uA		/*!< The settling time of the DAC is 2.5 us
-								and the maximum current is 350 uA */
-} DAC_CURRENT_OPT;
-
-/**
- * @brief Configuration for DAC converter control register */
-typedef struct
-{
-
-	uint8_t  DBLBUF_ENA; 	/**<
-	                         -0: Disable DACR double buffering
-	                         -1: when bit CNT_ENA, enable DACR double buffering feature
-							 */
-	uint8_t  CNT_ENA;		/*!<
-	                         -0: Time out counter is disable
-	                         -1: Time out conter is enable
-							 */
-	uint8_t  DMA_ENA;		/*!<
-		                         -0: DMA access is disable
-		                         -1: DMA burst request
-							*/
-	uint8_t RESERVED;
-
-} DAC_CONVERTER_CFG_Type;
-
-/**
- * @}
- */
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup DAC_Public_Functions DAC Public Functions
- * @{
- */
-
-void 	DAC_Init(LPC_DAC_TypeDef *DACx);
-void    DAC_UpdateValue (LPC_DAC_TypeDef *DACx, uint32_t dac_value);
-void    DAC_SetBias (LPC_DAC_TypeDef *DACx,uint32_t bias);
-void    DAC_ConfigDAConverterControl (LPC_DAC_TypeDef *DACx,DAC_CONVERTER_CFG_Type *DAC_ConverterConfigStruct);
-void 	DAC_SetDMATimeOut(LPC_DAC_TypeDef *DACx,uint32_t time_out);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* LPC17XX_DAC_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_emac.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_emac.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,705 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_emac.h				2010-05-21
-*//**
-* @file		lpc17xx_emac.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Ethernet MAC firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup EMAC EMAC (Ethernet Media Access Controller)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_EMAC_H_
-#define LPC17XX_EMAC_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define MCB_LPC_1768
-//#define IAR_LPC_1768
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup EMAC_Public_Macros EMAC Public Macros
- * @{
- */
-
-
-/* EMAC PHY status type definitions */
-#define EMAC_PHY_STAT_LINK			(0)		/**< Link Status */
-#define EMAC_PHY_STAT_SPEED			(1)		/**< Speed Status */
-#define EMAC_PHY_STAT_DUP			(2)		/**< Duplex Status */
-
-/* EMAC PHY device Speed definitions */
-#define EMAC_MODE_AUTO				(0)		/**< Auto-negotiation mode */
-#define EMAC_MODE_10M_FULL			(1)		/**< 10Mbps FullDuplex mode */
-#define EMAC_MODE_10M_HALF			(2)		/**< 10Mbps HalfDuplex mode */
-#define EMAC_MODE_100M_FULL			(3)		/**< 100Mbps FullDuplex mode */
-#define EMAC_MODE_100M_HALF			(4)		/**< 100Mbps HalfDuplex mode */
-
-/**
- * @}
- */
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup EMAC_Private_Macros EMAC Private Macros
- * @{
- */
-
-
-/* EMAC Memory Buffer configuration for 16K Ethernet RAM */
-#define EMAC_NUM_RX_FRAG         4           /**< Num.of RX Fragments 4*1536= 6.0kB */
-#define EMAC_NUM_TX_FRAG         3           /**< Num.of TX Fragments 3*1536= 4.6kB */
-#define EMAC_ETH_MAX_FLEN        1536        /**< Max. Ethernet Frame Size          */
-#define EMAC_TX_FRAME_TOUT       0x00100000  /**< Frame Transmit timeout count      */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for MAC Configuration Register 1
- **********************************************************************/
-#define EMAC_MAC1_REC_EN         0x00000001  /**< Receive Enable                    */
-#define EMAC_MAC1_PASS_ALL       0x00000002  /**< Pass All Receive Frames           */
-#define EMAC_MAC1_RX_FLOWC       0x00000004  /**< RX Flow Control                   */
-#define EMAC_MAC1_TX_FLOWC       0x00000008  /**< TX Flow Control                   */
-#define EMAC_MAC1_LOOPB          0x00000010  /**< Loop Back Mode                    */
-#define EMAC_MAC1_RES_TX         0x00000100  /**< Reset TX Logic                    */
-#define EMAC_MAC1_RES_MCS_TX     0x00000200  /**< Reset MAC TX Control Sublayer     */
-#define EMAC_MAC1_RES_RX         0x00000400  /**< Reset RX Logic                    */
-#define EMAC_MAC1_RES_MCS_RX     0x00000800  /**< Reset MAC RX Control Sublayer     */
-#define EMAC_MAC1_SIM_RES        0x00004000  /**< Simulation Reset                  */
-#define EMAC_MAC1_SOFT_RES       0x00008000  /**< Soft Reset MAC                    */
-
-/*********************************************************************//**
- * Macro defines for MAC Configuration Register 2
- **********************************************************************/
-#define EMAC_MAC2_FULL_DUP       0x00000001  /**< Full-Duplex Mode                  */
-#define EMAC_MAC2_FRM_LEN_CHK    0x00000002  /**< Frame Length Checking             */
-#define EMAC_MAC2_HUGE_FRM_EN    0x00000004  /**< Huge Frame Enable                 */
-#define EMAC_MAC2_DLY_CRC        0x00000008  /**< Delayed CRC Mode                  */
-#define EMAC_MAC2_CRC_EN         0x00000010  /**< Append CRC to every Frame         */
-#define EMAC_MAC2_PAD_EN         0x00000020  /**< Pad all Short Frames              */
-#define EMAC_MAC2_VLAN_PAD_EN    0x00000040  /**< VLAN Pad Enable                   */
-#define EMAC_MAC2_ADET_PAD_EN    0x00000080  /**< Auto Detect Pad Enable            */
-#define EMAC_MAC2_PPREAM_ENF     0x00000100  /**< Pure Preamble Enforcement         */
-#define EMAC_MAC2_LPREAM_ENF     0x00000200  /**< Long Preamble Enforcement         */
-#define EMAC_MAC2_NO_BACKOFF     0x00001000  /**< No Backoff Algorithm              */
-#define EMAC_MAC2_BACK_PRESSURE  0x00002000  /**< Backoff Presurre / No Backoff     */
-#define EMAC_MAC2_EXCESS_DEF     0x00004000  /**< Excess Defer                      */
-
-/*********************************************************************//**
- * Macro defines for Back-to-Back Inter-Packet-Gap Register
- **********************************************************************/
-/** Programmable field representing the nibble time offset of the minimum possible period
- * between the end of any transmitted packet to the beginning of the next */
-#define EMAC_IPGT_BBIPG(n)		(n&0x7F)
-/** Recommended value for Full Duplex of Programmable field representing the nibble time
- * offset of the minimum possible period between the end of any transmitted packet to the
- * beginning of the next */
-#define EMAC_IPGT_FULL_DUP		(EMAC_IPGT_BBIPG(0x15))
-/** Recommended value for Half Duplex of Programmable field representing the nibble time
- * offset of the minimum possible period between the end of any transmitted packet to the
- * beginning of the next */
-#define EMAC_IPGT_HALF_DUP      (EMAC_IPGT_BBIPG(0x12))
-
-/*********************************************************************//**
- * Macro defines for Non Back-to-Back Inter-Packet-Gap Register
- **********************************************************************/
-/** Programmable field representing the Non-Back-to-Back Inter-Packet-Gap */
-#define EMAC_IPGR_NBBIPG_P2(n)	(n&0x7F)
-/** Recommended value for Programmable field representing the Non-Back-to-Back Inter-Packet-Gap Part 1 */
-#define EMAC_IPGR_P2_DEF		(EMAC_IPGR_NBBIPG_P2(0x12))
-/** Programmable field representing the optional carrierSense window referenced in
- * IEEE 802.3/4.2.3.2.1 'Carrier Deference' */
-#define EMAC_IPGR_NBBIPG_P1(n)	((n&0x7F)<<8)
-/** Recommended value for Programmable field representing the Non-Back-to-Back Inter-Packet-Gap Part 2 */
-#define EMAC_IPGR_P1_DEF        EMAC_IPGR_NBBIPG_P1(0x0C)
-
-/*********************************************************************//**
- * Macro defines for Collision Window/Retry Register
- **********************************************************************/
-/** Programmable field specifying the number of retransmission attempts following a collision before
- * aborting the packet due to excessive collisions */
-#define EMAC_CLRT_MAX_RETX(n)	(n&0x0F)
-/** Programmable field representing the slot time or collision window during which collisions occur
- * in properly configured networks */
-#define EMAC_CLRT_COLL(n)		((n&0x3F)<<8)
-/** Default value for Collision Window / Retry register */
-#define EMAC_CLRT_DEF           ((EMAC_CLRT_MAX_RETX(0x0F))|(EMAC_CLRT_COLL(0x37)))
-
-/*********************************************************************//**
- * Macro defines for Maximum Frame Register
- **********************************************************************/
-/** Represents a maximum receive frame of 1536 octets */
-#define EMAC_MAXF_MAXFRMLEN(n)	(n&0xFFFF)
-
-/*********************************************************************//**
- * Macro defines for PHY Support Register
- **********************************************************************/
-#define EMAC_SUPP_SPEED			0x00000100  	/**< Reduced MII Logic Current Speed   */
-#define EMAC_SUPP_RES_RMII      0x00000800  	/**< Reset Reduced MII Logic           */
-
-/*********************************************************************//**
- * Macro defines for Test Register
- **********************************************************************/
-#define EMAC_TEST_SHCUT_PQUANTA  0x00000001  	/**< Shortcut Pause Quanta             */
-#define EMAC_TEST_TST_PAUSE      0x00000002  	/**< Test Pause                        */
-#define EMAC_TEST_TST_BACKP      0x00000004  	/**< Test Back Pressure                */
-
-/*********************************************************************//**
- * Macro defines for MII Management Configuration Register
- **********************************************************************/
-#define EMAC_MCFG_SCAN_INC       0x00000001  	/**< Scan Increment PHY Address        */
-#define EMAC_MCFG_SUPP_PREAM     0x00000002  	/**< Suppress Preamble                 */
-#define EMAC_MCFG_CLK_SEL(n)     ((n&0x0F)<<2)  /**< Clock Select Field                 */
-#define EMAC_MCFG_RES_MII        0x00008000  	/**< Reset MII Management Hardware     */
-#define EMAC_MCFG_MII_MAXCLK	 2500000UL		/**< MII Clock max */
-
-/*********************************************************************//**
- * Macro defines for MII Management Command Register
- **********************************************************************/
-#define EMAC_MCMD_READ           0x00000001  	/**< MII Read                          */
-#define EMAC_MCMD_SCAN           0x00000002  	/**< MII Scan continuously             */
-
-#define EMAC_MII_WR_TOUT         0x00050000  	/**< MII Write timeout count           */
-#define EMAC_MII_RD_TOUT         0x00050000  	/**< MII Read timeout count            */
-
-/*********************************************************************//**
- * Macro defines for MII Management Address Register
- **********************************************************************/
-#define EMAC_MADR_REG_ADR(n)     (n&0x1F)  		/**< MII Register Address field         */
-#define EMAC_MADR_PHY_ADR(n)     ((n&0x1F)<<8)  /**< PHY Address Field                  */
-
-/*********************************************************************//**
- * Macro defines for MII Management Write Data Register
- **********************************************************************/
-#define EMAC_MWTD_DATA(n)		(n&0xFFFF)		/**< Data field for MMI Management Write Data register */
-
-/*********************************************************************//**
- * Macro defines for MII Management Read Data Register
- **********************************************************************/
-#define EMAC_MRDD_DATA(n)		(n&0xFFFF)		/**< Data field for MMI Management Read Data register */
-
-/*********************************************************************//**
- * Macro defines for MII Management Indicators Register
- **********************************************************************/
-#define EMAC_MIND_BUSY           0x00000001  	/**< MII is Busy                       */
-#define EMAC_MIND_SCAN           0x00000002  	/**< MII Scanning in Progress          */
-#define EMAC_MIND_NOT_VAL        0x00000004  	/**< MII Read Data not valid           */
-#define EMAC_MIND_MII_LINK_FAIL  0x00000008  	/**< MII Link Failed                   */
-
-/* Station Address 0 Register */
-/* Station Address 1 Register */
-/* Station Address 2 Register */
-
-
-/* Control register definitions --------------------------------------------------------------------------- */
-/*********************************************************************//**
- * Macro defines for Command Register
- **********************************************************************/
-#define EMAC_CR_RX_EN            0x00000001  	/**< Enable Receive                    */
-#define EMAC_CR_TX_EN            0x00000002  	/**< Enable Transmit                   */
-#define EMAC_CR_REG_RES          0x00000008  	/**< Reset Host Registers              */
-#define EMAC_CR_TX_RES           0x00000010  	/**< Reset Transmit Datapath           */
-#define EMAC_CR_RX_RES           0x00000020  	/**< Reset Receive Datapath            */
-#define EMAC_CR_PASS_RUNT_FRM    0x00000040  	/**< Pass Runt Frames                  */
-#define EMAC_CR_PASS_RX_FILT     0x00000080  	/**< Pass RX Filter                    */
-#define EMAC_CR_TX_FLOW_CTRL     0x00000100  	/**< TX Flow Control                   */
-#define EMAC_CR_RMII             0x00000200  	/**< Reduced MII Interface             */
-#define EMAC_CR_FULL_DUP         0x00000400  	/**< Full Duplex                       */
-
-/*********************************************************************//**
- * Macro defines for Status Register
- **********************************************************************/
-#define EMAC_SR_RX_EN            0x00000001  	/**< Enable Receive                    */
-#define EMAC_SR_TX_EN            0x00000002  	/**< Enable Transmit                   */
-
-/*********************************************************************//**
- * Macro defines for Transmit Status Vector 0 Register
- **********************************************************************/
-#define EMAC_TSV0_CRC_ERR        0x00000001  /**< CRC error                         */
-#define EMAC_TSV0_LEN_CHKERR     0x00000002  /**< Length Check Error                */
-#define EMAC_TSV0_LEN_OUTRNG     0x00000004  /**< Length Out of Range               */
-#define EMAC_TSV0_DONE           0x00000008  /**< Tramsmission Completed            */
-#define EMAC_TSV0_MCAST          0x00000010  /**< Multicast Destination             */
-#define EMAC_TSV0_BCAST          0x00000020  /**< Broadcast Destination             */
-#define EMAC_TSV0_PKT_DEFER      0x00000040  /**< Packet Deferred                   */
-#define EMAC_TSV0_EXC_DEFER      0x00000080  /**< Excessive Packet Deferral         */
-#define EMAC_TSV0_EXC_COLL       0x00000100  /**< Excessive Collision               */
-#define EMAC_TSV0_LATE_COLL      0x00000200  /**< Late Collision Occured            */
-#define EMAC_TSV0_GIANT          0x00000400  /**< Giant Frame                       */
-#define EMAC_TSV0_UNDERRUN       0x00000800  /**< Buffer Underrun                   */
-#define EMAC_TSV0_BYTES          0x0FFFF000  /**< Total Bytes Transferred           */
-#define EMAC_TSV0_CTRL_FRAME     0x10000000  /**< Control Frame                     */
-#define EMAC_TSV0_PAUSE          0x20000000  /**< Pause Frame                       */
-#define EMAC_TSV0_BACK_PRESS     0x40000000  /**< Backpressure Method Applied       */
-#define EMAC_TSV0_VLAN           0x80000000  /**< VLAN Frame                        */
-
-/*********************************************************************//**
- * Macro defines for Transmit Status Vector 1 Register
- **********************************************************************/
-#define EMAC_TSV1_BYTE_CNT       0x0000FFFF  /**< Transmit Byte Count               */
-#define EMAC_TSV1_COLL_CNT       0x000F0000  /**< Transmit Collision Count          */
-
-/*********************************************************************//**
- * Macro defines for Receive Status Vector Register
- **********************************************************************/
-#define EMAC_RSV_BYTE_CNT        0x0000FFFF  /**< Receive Byte Count                */
-#define EMAC_RSV_PKT_IGNORED     0x00010000  /**< Packet Previously Ignored         */
-#define EMAC_RSV_RXDV_SEEN       0x00020000  /**< RXDV Event Previously Seen        */
-#define EMAC_RSV_CARR_SEEN       0x00040000  /**< Carrier Event Previously Seen     */
-#define EMAC_RSV_REC_CODEV       0x00080000  /**< Receive Code Violation            */
-#define EMAC_RSV_CRC_ERR         0x00100000  /**< CRC Error                         */
-#define EMAC_RSV_LEN_CHKERR      0x00200000  /**< Length Check Error                */
-#define EMAC_RSV_LEN_OUTRNG      0x00400000  /**< Length Out of Range               */
-#define EMAC_RSV_REC_OK          0x00800000  /**< Frame Received OK                 */
-#define EMAC_RSV_MCAST           0x01000000  /**< Multicast Frame                   */
-#define EMAC_RSV_BCAST           0x02000000  /**< Broadcast Frame                   */
-#define EMAC_RSV_DRIB_NIBB       0x04000000  /**< Dribble Nibble                    */
-#define EMAC_RSV_CTRL_FRAME      0x08000000  /**< Control Frame                     */
-#define EMAC_RSV_PAUSE           0x10000000  /**< Pause Frame                       */
-#define EMAC_RSV_UNSUPP_OPC      0x20000000  /**< Unsupported Opcode                */
-#define EMAC_RSV_VLAN            0x40000000  /**< VLAN Frame                        */
-
-/*********************************************************************//**
- * Macro defines for Flow Control Counter Register
- **********************************************************************/
-#define EMAC_FCC_MIRR_CNT(n)        	(n&0xFFFF)  		/**< Mirror Counter                    */
-#define EMAC_FCC_PAUSE_TIM(n)       	((n&0xFFFF)<<16)  	/**< Pause Timer                       */
-
-/*********************************************************************//**
- * Macro defines for Flow Control Status Register
- **********************************************************************/
-#define EMAC_FCS_MIRR_CNT(n)        	(n&0xFFFF)  		/**< Mirror Counter Current            */
-
-
-/* Receive filter register definitions -------------------------------------------------------- */
-/*********************************************************************//**
- * Macro defines for Receive Filter Control Register
- **********************************************************************/
-#define EMAC_RFC_UCAST_EN        0x00000001  /**< Accept Unicast Frames Enable      */
-#define EMAC_RFC_BCAST_EN        0x00000002  /**< Accept Broadcast Frames Enable    */
-#define EMAC_RFC_MCAST_EN        0x00000004  /**< Accept Multicast Frames Enable    */
-#define EMAC_RFC_UCAST_HASH_EN   0x00000008  /**< Accept Unicast Hash Filter Frames */
-#define EMAC_RFC_MCAST_HASH_EN   0x00000010  /**< Accept Multicast Hash Filter Fram.*/
-#define EMAC_RFC_PERFECT_EN      0x00000020  /**< Accept Perfect Match Enable       */
-#define EMAC_RFC_MAGP_WOL_EN     0x00001000  /**< Magic Packet Filter WoL Enable    */
-#define EMAC_RFC_PFILT_WOL_EN    0x00002000  /**< Perfect Filter WoL Enable         */
-
-/*********************************************************************//**
- * Macro defines for Receive Filter WoL Status/Clear Registers
- **********************************************************************/
-#define EMAC_WOL_UCAST           0x00000001  /**< Unicast Frame caused WoL          */
-#define EMAC_WOL_BCAST           0x00000002  /**< Broadcast Frame caused WoL        */
-#define EMAC_WOL_MCAST           0x00000004  /**< Multicast Frame caused WoL        */
-#define EMAC_WOL_UCAST_HASH      0x00000008  /**< Unicast Hash Filter Frame WoL     */
-#define EMAC_WOL_MCAST_HASH      0x00000010  /**< Multicast Hash Filter Frame WoL   */
-#define EMAC_WOL_PERFECT         0x00000020  /**< Perfect Filter WoL                */
-#define EMAC_WOL_RX_FILTER       0x00000080  /**< RX Filter caused WoL              */
-#define EMAC_WOL_MAG_PACKET      0x00000100  /**< Magic Packet Filter caused WoL    */
-#define EMAC_WOL_BITMASK		 0x01BF		/**< Receive Filter WoL Status/Clear bitmasl value */
-
-
-/* Module control register definitions ---------------------------------------------------- */
-/*********************************************************************//**
- * Macro defines for Interrupt Status/Enable/Clear/Set Registers
- **********************************************************************/
-#define EMAC_INT_RX_OVERRUN      0x00000001  /**< Overrun Error in RX Queue         */
-#define EMAC_INT_RX_ERR          0x00000002  /**< Receive Error                     */
-#define EMAC_INT_RX_FIN          0x00000004  /**< RX Finished Process Descriptors   */
-#define EMAC_INT_RX_DONE         0x00000008  /**< Receive Done                      */
-#define EMAC_INT_TX_UNDERRUN     0x00000010  /**< Transmit Underrun                 */
-#define EMAC_INT_TX_ERR          0x00000020  /**< Transmit Error                    */
-#define EMAC_INT_TX_FIN          0x00000040  /**< TX Finished Process Descriptors   */
-#define EMAC_INT_TX_DONE         0x00000080  /**< Transmit Done                     */
-#define EMAC_INT_SOFT_INT        0x00001000  /**< Software Triggered Interrupt      */
-#define EMAC_INT_WAKEUP          0x00002000  /**< Wakeup Event Interrupt            */
-
-/*********************************************************************//**
- * Macro defines for Power Down Register
- **********************************************************************/
-#define EMAC_PD_POWER_DOWN       0x80000000  /**< Power Down MAC                    */
-
-/* Descriptor and status formats ---------------------------------------------------- */
-/*********************************************************************//**
- * Macro defines for RX Descriptor Control Word
- **********************************************************************/
-#define EMAC_RCTRL_SIZE(n)       (n&0x7FF)  	/**< Buffer size field                  */
-#define EMAC_RCTRL_INT           0x80000000  	/**< Generate RxDone Interrupt         */
-
-/*********************************************************************//**
- * Macro defines for RX Status Hash CRC Word
- **********************************************************************/
-#define EMAC_RHASH_SA            0x000001FF  	/**< Hash CRC for Source Address       */
-#define EMAC_RHASH_DA            0x001FF000  	/**< Hash CRC for Destination Address  */
-
-/*********************************************************************//**
- * Macro defines for RX Status Information Word
- **********************************************************************/
-#define EMAC_RINFO_SIZE          0x000007FF  /**< Data size in bytes                */
-#define EMAC_RINFO_CTRL_FRAME    0x00040000  /**< Control Frame                     */
-#define EMAC_RINFO_VLAN          0x00080000  /**< VLAN Frame                        */
-#define EMAC_RINFO_FAIL_FILT     0x00100000  /**< RX Filter Failed                  */
-#define EMAC_RINFO_MCAST         0x00200000  /**< Multicast Frame                   */
-#define EMAC_RINFO_BCAST         0x00400000  /**< Broadcast Frame                   */
-#define EMAC_RINFO_CRC_ERR       0x00800000  /**< CRC Error in Frame                */
-#define EMAC_RINFO_SYM_ERR       0x01000000  /**< Symbol Error from PHY             */
-#define EMAC_RINFO_LEN_ERR       0x02000000  /**< Length Error                      */
-#define EMAC_RINFO_RANGE_ERR     0x04000000  /**< Range Error (exceeded max. size)  */
-#define EMAC_RINFO_ALIGN_ERR     0x08000000  /**< Alignment Error                   */
-#define EMAC_RINFO_OVERRUN       0x10000000  /**< Receive overrun                   */
-#define EMAC_RINFO_NO_DESCR      0x20000000  /**< No new Descriptor available       */
-#define EMAC_RINFO_LAST_FLAG     0x40000000  /**< Last Fragment in Frame            */
-#define EMAC_RINFO_ERR           0x80000000  /**< Error Occured (OR of all errors)  */
-#define EMAC_RINFO_ERR_MASK     (EMAC_RINFO_FAIL_FILT | EMAC_RINFO_CRC_ERR   | EMAC_RINFO_SYM_ERR | \
-EMAC_RINFO_LEN_ERR   | EMAC_RINFO_ALIGN_ERR | EMAC_RINFO_OVERRUN)
-
-/*********************************************************************//**
- * Macro defines for TX Descriptor Control Word
- **********************************************************************/
-#define EMAC_TCTRL_SIZE          0x000007FF  /**< Size of data buffer in bytes      */
-#define EMAC_TCTRL_OVERRIDE      0x04000000  /**< Override Default MAC Registers    */
-#define EMAC_TCTRL_HUGE          0x08000000  /**< Enable Huge Frame                 */
-#define EMAC_TCTRL_PAD           0x10000000  /**< Pad short Frames to 64 bytes      */
-#define EMAC_TCTRL_CRC           0x20000000  /**< Append a hardware CRC to Frame    */
-#define EMAC_TCTRL_LAST          0x40000000  /**< Last Descriptor for TX Frame      */
-#define EMAC_TCTRL_INT           0x80000000  /**< Generate TxDone Interrupt         */
-
-/*********************************************************************//**
- * Macro defines for TX Status Information Word
- **********************************************************************/
-#define EMAC_TINFO_COL_CNT       0x01E00000  /**< Collision Count                   */
-#define EMAC_TINFO_DEFER         0x02000000  /**< Packet Deferred (not an error)    */
-#define EMAC_TINFO_EXCESS_DEF    0x04000000  /**< Excessive Deferral                */
-#define EMAC_TINFO_EXCESS_COL    0x08000000  /**< Excessive Collision               */
-#define EMAC_TINFO_LATE_COL      0x10000000  /**< Late Collision Occured            */
-#define EMAC_TINFO_UNDERRUN      0x20000000  /**< Transmit Underrun                 */
-#define EMAC_TINFO_NO_DESCR      0x40000000  /**< No new Descriptor available       */
-#define EMAC_TINFO_ERR           0x80000000  /**< Error Occured (OR of all errors)  */
-
-#ifdef MCB_LPC_1768
-/* DP83848C PHY definition ------------------------------------------------------------ */
-
-/** PHY device reset time out definition */
-#define EMAC_PHY_RESP_TOUT		0x100000UL
-
-/* ENET Device Revision ID */
-#define EMAC_OLD_EMAC_MODULE_ID  0x39022000  /**< Rev. ID for first rev '-'         */
-
-/*********************************************************************//**
- * Macro defines for DP83848C PHY Registers
- **********************************************************************/
-#define EMAC_PHY_REG_BMCR        0x00        /**< Basic Mode Control Register       */
-#define EMAC_PHY_REG_BMSR        0x01        /**< Basic Mode Status Register        */
-#define EMAC_PHY_REG_IDR1        0x02        /**< PHY Identifier 1                  */
-#define EMAC_PHY_REG_IDR2        0x03        /**< PHY Identifier 2                  */
-#define EMAC_PHY_REG_ANAR        0x04        /**< Auto-Negotiation Advertisement    */
-#define EMAC_PHY_REG_ANLPAR      0x05        /**< Auto-Neg. Link Partner Abitily    */
-#define EMAC_PHY_REG_ANER        0x06        /**< Auto-Neg. Expansion Register      */
-#define EMAC_PHY_REG_ANNPTR      0x07        /**< Auto-Neg. Next Page TX            */
-#define EMAC_PHY_REG_LPNPA		 0x08
-
-/*********************************************************************//**
- * Macro defines for PHY Extended Registers
- **********************************************************************/
-#define EMAC_PHY_REG_STS         0x10        /**< Status Register                   */
-#define EMAC_PHY_REG_MICR        0x11        /**< MII Interrupt Control Register    */
-#define EMAC_PHY_REG_MISR        0x12        /**< MII Interrupt Status Register     */
-#define EMAC_PHY_REG_FCSCR       0x14        /**< False Carrier Sense Counter       */
-#define EMAC_PHY_REG_RECR        0x15        /**< Receive Error Counter             */
-#define EMAC_PHY_REG_PCSR        0x16        /**< PCS Sublayer Config. and Status   */
-#define EMAC_PHY_REG_RBR         0x17        /**< RMII and Bypass Register          */
-#define EMAC_PHY_REG_LEDCR       0x18        /**< LED Direct Control Register       */
-#define EMAC_PHY_REG_PHYCR       0x19        /**< PHY Control Register              */
-#define EMAC_PHY_REG_10BTSCR     0x1A        /**< 10Base-T Status/Control Register  */
-#define EMAC_PHY_REG_CDCTRL1     0x1B        /**< CD Test Control and BIST Extens.  */
-#define EMAC_PHY_REG_EDCR        0x1D        /**< Energy Detect Control Register    */
-
-/*********************************************************************//**
- * Macro defines for PHY Basic Mode Control Register
- **********************************************************************/
-#define EMAC_PHY_BMCR_RESET     			(1<<15)		/**< Reset bit */
-#define EMAC_PHY_BMCR_LOOPBACK      		(1<<14)		/**< Loop back */
-#define EMAC_PHY_BMCR_SPEED_SEL     		(1<<13)		/**< Speed selection */
-#define EMAC_PHY_BMCR_AN					(1<<12)		/**< Auto Negotiation */
-#define EMAC_PHY_BMCR_POWERDOWN				(1<<11)		/**< Power down mode */
-#define EMAC_PHY_BMCR_ISOLATE				(1<<10)		/**< Isolate */
-#define EMAC_PHY_BMCR_RE_AN					(1<<9)		/**< Restart auto negotiation */
-#define EMAC_PHY_BMCR_DUPLEX				(1<<8)		/**< Duplex mode */
-
-/*********************************************************************//**
- * Macro defines for PHY Basic Mode Status Status Register
- **********************************************************************/
-#define EMAC_PHY_BMSR_100BE_T4        	   	(1<<15)		/**< 100 base T4 */
-#define EMAC_PHY_BMSR_100TX_FULL			(1<<14)		/**< 100 base full duplex */
-#define EMAC_PHY_BMSR_100TX_HALF			(1<<13)		/**< 100 base half duplex */
-#define EMAC_PHY_BMSR_10BE_FULL				(1<<12)		/**< 10 base T full duplex */
-#define EMAC_PHY_BMSR_10BE_HALF				(1<<11)		/**< 10 base T half duplex */
-#define EMAC_PHY_BMSR_NOPREAM				(1<<6)		/**< MF Preamable Supress */
-#define EMAC_PHY_BMSR_AUTO_DONE				(1<<5)		/**< Auto negotiation complete */
-#define EMAC_PHY_BMSR_REMOTE_FAULT			(1<<4)		/**< Remote fault */
-#define EMAC_PHY_BMSR_NO_AUTO				(1<<3)		/**< Auto Negotiation ability */
-#define EMAC_PHY_BMSR_LINK_ESTABLISHED		(1<<2)		/**< Link status */
-
-/*********************************************************************//**
- * Macro defines for PHY Status Register
- **********************************************************************/
-#define EMAC_PHY_SR_REMOTE_FAULT   			(1<<6)		/**< Remote Fault */
-#define EMAC_PHY_SR_JABBER					(1<<5)		/**< Jabber detect */
-#define EMAC_PHY_SR_AUTO_DONE				(1<<4)		/**< Auto Negotiation complete */
-#define EMAC_PHY_SR_LOOPBACK				(1<<3)		/**< Loop back status */
-#define EMAC_PHY_SR_DUP						(1<<2)		/**< Duplex status */
-#define EMAC_PHY_SR_SPEED					(1<<1)		/**< Speed status */
-#define EMAC_PHY_SR_LINK					(1<<0)		/**< Link Status */
-
-#define EMAC_PHY_FULLD_100M      0x2100      /**< Full Duplex 100Mbit               */
-#define EMAC_PHY_HALFD_100M      0x2000      /**< Half Duplex 100Mbit               */
-#define EMAC_PHY_FULLD_10M       0x0100      /**< Full Duplex 10Mbit                */
-#define EMAC_PHY_HALFD_10M       0x0000      /**< Half Duplex 10MBit                */
-#define EMAC_PHY_AUTO_NEG        0x3000      /**< Select Auto Negotiation           */
-
-#define EMAC_DEF_ADR    0x0100      /**< Default PHY device address        */
-#define EMAC_DP83848C_ID         0x20005C90  /**< PHY Identifier                    */
-
-#define EMAC_PHY_SR_100_SPEED		((1<<14)|(1<<13))
-#define EMAC_PHY_SR_FULL_DUP		((1<<14)|(1<<12))
-#define EMAC_PHY_BMSR_LINK_STATUS			(1<<2)		/**< Link status */
-
-#elif defined(IAR_LPC_1768)
-/* KSZ8721BL PHY definition ------------------------------------------------------------ */
-/** PHY device reset time out definition */
-#define EMAC_PHY_RESP_TOUT		0x100000UL
-
-/* ENET Device Revision ID */
-#define EMAC_OLD_EMAC_MODULE_ID  0x39022000  /**< Rev. ID for first rev '-'         */
-
-/*********************************************************************//**
- * Macro defines for KSZ8721BL PHY Registers
- **********************************************************************/
-#define EMAC_PHY_REG_BMCR        0x00        /**< Basic Mode Control Register       */
-#define EMAC_PHY_REG_BMSR        0x01        /**< Basic Mode Status Register        */
-#define EMAC_PHY_REG_IDR1        0x02        /**< PHY Identifier 1                  */
-#define EMAC_PHY_REG_IDR2        0x03        /**< PHY Identifier 2                  */
-#define EMAC_PHY_REG_ANAR        0x04        /**< Auto-Negotiation Advertisement    */
-#define EMAC_PHY_REG_ANLPAR      0x05        /**< Auto-Neg. Link Partner Abitily    */
-#define EMAC_PHY_REG_ANER        0x06        /**< Auto-Neg. Expansion Register      */
-#define EMAC_PHY_REG_ANNPTR      0x07        /**< Auto-Neg. Next Page TX            */
-#define EMAC_PHY_REG_LPNPA		 0x08		 /**< Link Partner Next Page Ability    */
-#define EMAC_PHY_REG_REC		 0x15		 /**< RXError Counter Register			*/
-#define EMAC_PHY_REG_ISC		 0x1b		 /**< Interrupt Control/Status Register */
-#define EMAC_PHY_REG_100BASE	 0x1f		 /**< 100BASE-TX PHY Control Register   */
-
-/*********************************************************************//**
- * Macro defines for PHY Basic Mode Control Register
- **********************************************************************/
-#define EMAC_PHY_BMCR_RESET     			(1<<15)		/**< Reset bit */
-#define EMAC_PHY_BMCR_LOOPBACK      		(1<<14)		/**< Loop back */
-#define EMAC_PHY_BMCR_SPEED_SEL     		(1<<13)		/**< Speed selection */
-#define EMAC_PHY_BMCR_AN					(1<<12)		/**< Auto Negotiation */
-#define EMAC_PHY_BMCR_POWERDOWN				(1<<11)		/**< Power down mode */
-#define EMAC_PHY_BMCR_ISOLATE				(1<<10)		/**< Isolate */
-#define EMAC_PHY_BMCR_RE_AN					(1<<9)		/**< Restart auto negotiation */
-#define EMAC_PHY_BMCR_DUPLEX				(1<<8)		/**< Duplex mode */
-#define EMAC_PHY_BMCR_COLLISION				(1<<7)		/**< Collision test */
-#define EMAC_PHY_BMCR_TXDIS					(1<<0)		/**< Disable transmit */
-
-/*********************************************************************//**
- * Macro defines for PHY Basic Mode Status Register
- **********************************************************************/
-#define EMAC_PHY_BMSR_100BE_T4        	   	(1<<15)		/**< 100 base T4 */
-#define EMAC_PHY_BMSR_100TX_FULL			(1<<14)		/**< 100 base full duplex */
-#define EMAC_PHY_BMSR_100TX_HALF			(1<<13)		/**< 100 base half duplex */
-#define EMAC_PHY_BMSR_10BE_FULL				(1<<12)		/**< 10 base T full duplex */
-#define EMAC_PHY_BMSR_10BE_HALF				(1<<11)		/**< 10 base T half duplex */
-#define EMAC_PHY_BMSR_NOPREAM				(1<<6)		/**< MF Preamable Supress */
-#define EMAC_PHY_BMSR_AUTO_DONE				(1<<5)		/**< Auto negotiation complete */
-#define EMAC_PHY_BMSR_REMOTE_FAULT			(1<<4)		/**< Remote fault */
-#define EMAC_PHY_BMSR_NO_AUTO				(1<<3)		/**< Auto Negotiation ability */
-#define EMAC_PHY_BMSR_LINK_STATUS			(1<<2)		/**< Link status */
-#define EMAC_PHY_BMSR_JABBER_DETECT			(1<<1)		/**< Jabber detect */
-#define EMAC_PHY_BMSR_EXTEND				(1<<0)		/**< Extended support */
-
-/*********************************************************************//**
- * Macro defines for PHY Identifier
- **********************************************************************/
-/* PHY Identifier 1 bitmap definitions */
-#define EMAC_PHY_IDR1(n)		(n & 0xFFFF)		/**< PHY ID1 Number */
-
-/* PHY Identifier 2 bitmap definitions */
-#define EMAC_PHY_IDR2(n)		(n & 0xFFFF)		/**< PHY ID2 Number */
-
-/*********************************************************************//**
- * Macro defines for Auto-Negotiation Advertisement
- **********************************************************************/
-#define EMAC_PHY_AN_NEXTPAGE					(1<<15)		/**<  Next page capable */
-#define EMAC_PHY_AN_REMOTE_FAULT				(1<<13)		/**< Remote Fault support */
-#define EMAC_PHY_AN_PAUSE						(1<<10)		/**< Pause support */
-#define EMAC_PHY_AN_100BASE_T4					(1<<9)		/**< T4 capable */
-#define EMAC_PHY_AN_100BASE_TX_FD				(1<<8)		/**< TX with Full-duplex capable */
-#define EMAC_PHY_AN_100BASE_TX					(1<<7)		/**< TX capable */
-#define EMAC_PHY_AN_10BASE_T_FD					(1<<6)		/**< 10Mbps with full-duplex capable */
-#define EMAC_PHY_AN_10BASE_T					(1<<5)		/**< 10Mbps capable */
-#define EMAC_PHY_AN_FIELD(n)					(n & 0x1F)  /**< Selector Field */
-
-#define EMAC_PHY_FULLD_100M      0x2100      /**< Full Duplex 100Mbit               */
-#define EMAC_PHY_HALFD_100M      0x2000      /**< Half Duplex 100Mbit               */
-#define EMAC_PHY_FULLD_10M       0x0100      /**< Full Duplex 10Mbit                */
-#define EMAC_PHY_HALFD_10M       0x0000      /**< Half Duplex 10MBit                */
-#define EMAC_PHY_AUTO_NEG        0x3000      /**< Select Auto Negotiation           */
-
-#define EMAC_PHY_SR_100_SPEED		((1<<14)|(1<<13))
-#define EMAC_PHY_SR_FULL_DUP		((1<<14)|(1<<12))
-
-#define EMAC_DEF_ADR    (0x01<<8)		/**< Default PHY device address        */
-#define EMAC_KSZ8721BL_ID 	((0x22 << 16) | 0x1619 ) /**< PHY Identifier */
-#endif
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup EMAC_Public_Types EMAC Public Types
- * @{
- */
-
-/* Descriptor and status formats ---------------------------------------------- */
-
-/**
- * @brief RX Descriptor structure type definition
- */
-typedef struct {
-	uint32_t Packet;	/**< Receive Packet Descriptor */
-	uint32_t Ctrl;		/**< Receive Control Descriptor */
-} RX_Desc;
-
-/**
- * @brief RX Status structure type definition
- */
-typedef struct {
-	uint32_t Info;		/**< Receive Information Status */
-	uint32_t HashCRC;	/**< Receive Hash CRC Status */
-} RX_Stat;
-
-/**
- * @brief TX Descriptor structure type definition
- */
-typedef struct {
-	uint32_t Packet;	/**< Transmit Packet Descriptor */
-	uint32_t Ctrl;		/**< Transmit Control Descriptor */
-} TX_Desc;
-
-/**
- * @brief TX Status structure type definition
- */
-typedef struct {
-   uint32_t Info;		/**< Transmit Information Status */
-} TX_Stat;
-
-
-/**
- * @brief TX Data Buffer structure definition
- */
-typedef struct {
-	uint32_t ulDataLen;			/**< Data length */
-	uint32_t *pbDataBuf;		/**< A word-align data pointer to data buffer */
-} EMAC_PACKETBUF_Type;
-
-/**
- * @brief EMAC configuration structure definition
- */
-typedef struct {
-	uint32_t	Mode;						/**< Supported EMAC PHY device speed, should be one of the following:
-											- EMAC_MODE_AUTO
-											- EMAC_MODE_10M_FULL
-											- EMAC_MODE_10M_HALF
-											- EMAC_MODE_100M_FULL
-											- EMAC_MODE_100M_HALF
-											*/
-	uint8_t 	*pbEMAC_Addr;				/**< Pointer to EMAC Station address that contains 6-bytes
-											of MAC address, it must be sorted in order (bEMAC_Addr[0]..[5])
-											*/
-} EMAC_CFG_Type;
-
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup EMAC_Public_Functions EMAC Public Functions
- * @{
- */
-/* Init/DeInit EMAC peripheral */
-Status EMAC_Init(EMAC_CFG_Type *EMAC_ConfigStruct);
-void EMAC_DeInit(void);
-
-/* PHY functions --------------*/
-int32_t EMAC_CheckPHYStatus(uint32_t ulPHYState);
-int32_t EMAC_SetPHYMode(uint32_t ulPHYMode);
-int32_t EMAC_UpdatePHYStatus(void);
-
-/* Filter functions ----------*/
-void EMAC_SetHashFilter(uint8_t dstMAC_addr[], FunctionalState NewState);
-void EMAC_SetFilterMode(uint32_t ulFilterMode, FunctionalState NewState);
-
-/* EMAC Packet Buffer functions */
-void EMAC_WritePacketBuffer(EMAC_PACKETBUF_Type *pDataStruct);
-void EMAC_ReadPacketBuffer(EMAC_PACKETBUF_Type *pDataStruct);
-
-/* EMAC Interrupt functions -------*/
-void EMAC_IntCmd(uint32_t ulIntType, FunctionalState NewState);
-IntStatus EMAC_IntGetStatus(uint32_t ulIntType);
-
-/* EMAC Index functions -----------*/
-Bool EMAC_CheckReceiveIndex(void);
-Bool EMAC_CheckTransmitIndex(void);
-void EMAC_UpdateRxConsumeIndex(void);
-void EMAC_UpdateTxProduceIndex(void);
-
-FlagStatus EMAC_CheckReceiveDataStatus(uint32_t ulRxStatType);
-uint32_t EMAC_GetReceiveDataSize(void);
-FlagStatus EMAC_GetWoLStatus(uint32_t ulWoLMode);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_EMAC_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_exti.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_exti.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_exti.h				2010-05-21
-*//**
-* @file		lpc17xx_exti.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for External interrupt firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup EXTI EXTI (External Interrupt)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_EXTI_H_
-#define LPC17XX_EXTI_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup EXTI_Private_Macros EXTI Private Macros
- * @{
- */
-/*********************************************************************//**
- * Macro defines for EXTI  control register
- **********************************************************************/
-#define EXTI_EINT0_BIT_MARK 	0x01
-#define EXTI_EINT1_BIT_MARK 	0x02
-#define EXTI_EINT2_BIT_MARK 	0x04
-#define EXTI_EINT3_BIT_MARK 	0x08
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup EXTI_Public_Types EXTI Public Types
- * @{
- */
-
-/**
- * @brief EXTI external interrupt line option
- */
-typedef enum
-{
-	EXTI_EINT0, /*!<  External interrupt 0, P2.10 */
-	EXTI_EINT1, /*!<  External interrupt 0, P2.11 */
-	EXTI_EINT2, /*!<  External interrupt 0, P2.12 */
-	EXTI_EINT3 	/*!<  External interrupt 0, P2.13 */
-} EXTI_LINE_ENUM;
-
-/**
- * @brief EXTI mode option
- */
-typedef enum
-{
-	EXTI_MODE_LEVEL_SENSITIVE, 	/*!< Level sensitivity is selected */
-	EXTI_MODE_EDGE_SENSITIVE  	/*!< Edge sensitivity is selected */
-} EXTI_MODE_ENUM;
-
-/**
- * @brief EXTI polarity option
- */
-typedef enum
-{
-	EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE,	/*!< Low active or falling edge sensitive
-												depending on pin mode */
-	EXTI_POLARITY_HIGH_ACTIVE_OR_RISING_EDGE	/*!< High active or rising edge sensitive
-												depending on pin mode */
-} EXTI_POLARITY_ENUM;
-
-/**
- * @brief EXTI Initialize structure
- */
-typedef struct
-{
-	EXTI_LINE_ENUM EXTI_Line; /*!<Select external interrupt pin (EINT0, EINT1, EINT 2, EINT3) */
-
-	EXTI_MODE_ENUM EXTI_Mode; /*!< Choose between Level-sensitivity or Edge sensitivity */
-
-	EXTI_POLARITY_ENUM EXTI_polarity; /*!< 	If EXTI mode is level-sensitive: this element use to select low or high active level
-											if EXTI mode is polarity-sensitive: this element use to select falling or rising edge */
-
-}EXTI_InitTypeDef;
-
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup EXTI_Public_Functions EXTI Public Functions
- * @{
- */
-
-void EXTI_Init(void);
-void EXTI_DeInit(void);
-
-void EXTI_Config(EXTI_InitTypeDef *EXTICfg);
-void EXTI_SetMode(EXTI_LINE_ENUM EXTILine, EXTI_MODE_ENUM mode);
-void EXTI_SetPolarity(EXTI_LINE_ENUM EXTILine, EXTI_POLARITY_ENUM polarity);
-void EXTI_ClearEXTIFlag(EXTI_LINE_ENUM EXTILine);
-
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* LPC17XX_EXTI_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpdma.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpdma.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,423 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_gpdma.h				2010-05-21
-*//**
-* @file		lpc17xx_gpdma.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for GPDMA firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup GPDMA GPDMA (General Purpose Direct Memory Access)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_GPDMA_H_
-#define LPC17XX_GPDMA_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup GPDMA_Public_Macros GPDMA Public Macros
- * @{
- */
-
-/** DMA Connection number definitions */
-#define GPDMA_CONN_SSP0_Tx 			((0UL)) 		/**< SSP0 Tx */
-#define GPDMA_CONN_SSP0_Rx 			((1UL)) 		/**< SSP0 Rx */
-#define GPDMA_CONN_SSP1_Tx 			((2UL)) 		/**< SSP1 Tx */
-#define GPDMA_CONN_SSP1_Rx 			((3UL)) 		/**< SSP1 Rx */
-#define GPDMA_CONN_ADC 				((4UL)) 		/**< ADC */
-#define GPDMA_CONN_I2S_Channel_0 	((5UL)) 		/**< I2S channel 0 */
-#define GPDMA_CONN_I2S_Channel_1 	((6UL)) 		/**< I2S channel 1 */
-#define GPDMA_CONN_DAC 				((7UL)) 		/**< DAC */
-#define GPDMA_CONN_UART0_Tx			((8UL)) 		/**< UART0 Tx */
-#define GPDMA_CONN_UART0_Rx			((9UL)) 		/**< UART0 Rx */
-#define GPDMA_CONN_UART1_Tx			((10UL)) 		/**< UART1 Tx */
-#define GPDMA_CONN_UART1_Rx			((11UL)) 		/**< UART1 Rx */
-#define GPDMA_CONN_UART2_Tx			((12UL)) 		/**< UART2 Tx */
-#define GPDMA_CONN_UART2_Rx			((13UL)) 		/**< UART2 Rx */
-#define GPDMA_CONN_UART3_Tx			((14UL)) 		/**< UART3 Tx */
-#define GPDMA_CONN_UART3_Rx			((15UL)) 		/**< UART3 Rx */
-#define GPDMA_CONN_MAT0_0 			((16UL)) 		/**< MAT0.0 */
-#define GPDMA_CONN_MAT0_1 			((17UL)) 		/**< MAT0.1 */
-#define GPDMA_CONN_MAT1_0 			((18UL)) 		/**< MAT1.0 */
-#define GPDMA_CONN_MAT1_1   		((19UL)) 		/**< MAT1.1 */
-#define GPDMA_CONN_MAT2_0   		((20UL)) 		/**< MAT2.0 */
-#define GPDMA_CONN_MAT2_1   		((21UL)) 		/**< MAT2.1 */
-#define GPDMA_CONN_MAT3_0 			((22UL)) 		/**< MAT3.0 */
-#define GPDMA_CONN_MAT3_1   		((23UL)) 		/**< MAT3.1 */
-
-/** GPDMA Transfer type definitions */
-#define GPDMA_TRANSFERTYPE_M2M 		((0UL)) 	/**< Memory to memory - DMA control */
-#define GPDMA_TRANSFERTYPE_M2P 		((1UL)) 	/**< Memory to peripheral - DMA control */
-#define GPDMA_TRANSFERTYPE_P2M 		((2UL)) 	/**< Peripheral to memory - DMA control */
-#define GPDMA_TRANSFERTYPE_P2P 		((3UL)) 	/**< Source peripheral to destination peripheral - DMA control */
-
-/** Burst size in Source and Destination definitions */
-#define GPDMA_BSIZE_1 	((0UL)) /**< Burst size = 1 */
-#define GPDMA_BSIZE_4 	((1UL)) /**< Burst size = 4 */
-#define GPDMA_BSIZE_8 	((2UL)) /**< Burst size = 8 */
-#define GPDMA_BSIZE_16 	((3UL)) /**< Burst size = 16 */
-#define GPDMA_BSIZE_32 	((4UL)) /**< Burst size = 32 */
-#define GPDMA_BSIZE_64 	((5UL)) /**< Burst size = 64 */
-#define GPDMA_BSIZE_128 ((6UL)) /**< Burst size = 128 */
-#define GPDMA_BSIZE_256 ((7UL)) /**< Burst size = 256 */
-
-/** Width in Source transfer width and Destination transfer width definitions */
-#define GPDMA_WIDTH_BYTE 		((0UL)) /**< Width = 1 byte */
-#define GPDMA_WIDTH_HALFWORD 	((1UL)) /**< Width = 2 bytes */
-#define GPDMA_WIDTH_WORD 		((2UL)) /**< Width = 4 bytes */
-
-/** DMA Request Select Mode definitions */
-#define GPDMA_REQSEL_UART 	((0UL)) /**< UART TX/RX is selected */
-#define GPDMA_REQSEL_TIMER 	((1UL)) /**< Timer match is selected */
-
-/**
- * @}
- */
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup GPDMA_Private_Macros GPDMA Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for DMA Interrupt Status register
- **********************************************************************/
-#define GPDMA_DMACIntStat_Ch(n)			(((1UL<<n)&0xFF))
-#define GPDMA_DMACIntStat_BITMASK		((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Interrupt Terminal Count Request Status register
- **********************************************************************/
-#define GPDMA_DMACIntTCStat_Ch(n)		(((1UL<<n)&0xFF))
-#define GPDMA_DMACIntTCStat_BITMASK		((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Interrupt Terminal Count Request Clear register
- **********************************************************************/
-#define GPDMA_DMACIntTCClear_Ch(n)		(((1UL<<n)&0xFF))
-#define GPDMA_DMACIntTCClear_BITMASK	((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Interrupt Error Status register
- **********************************************************************/
-#define GPDMA_DMACIntErrStat_Ch(n)		(((1UL<<n)&0xFF))
-#define GPDMA_DMACIntErrStat_BITMASK	((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Interrupt Error Clear register
- **********************************************************************/
-#define GPDMA_DMACIntErrClr_Ch(n)		(((1UL<<n)&0xFF))
-#define GPDMA_DMACIntErrClr_BITMASK		((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Raw Interrupt Terminal Count Status register
- **********************************************************************/
-#define GPDMA_DMACRawIntTCStat_Ch(n)	(((1UL<<n)&0xFF))
-#define GPDMA_DMACRawIntTCStat_BITMASK	((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Raw Error Interrupt Status register
- **********************************************************************/
-#define GPDMA_DMACRawIntErrStat_Ch(n)	(((1UL<<n)&0xFF))
-#define GPDMA_DMACRawIntErrStat_BITMASK	((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Enabled Channel register
- **********************************************************************/
-#define GPDMA_DMACEnbldChns_Ch(n)		(((1UL<<n)&0xFF))
-#define GPDMA_DMACEnbldChns_BITMASK		((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Software Burst Request register
- **********************************************************************/
-#define	GPDMA_DMACSoftBReq_Src(n)		(((1UL<<n)&0xFFFF))
-#define GPDMA_DMACSoftBReq_BITMASK		((0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Software Single Request register
- **********************************************************************/
-#define GPDMA_DMACSoftSReq_Src(n) 		(((1UL<<n)&0xFFFF))
-#define GPDMA_DMACSoftSReq_BITMASK		((0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Software Last Burst Request register
- **********************************************************************/
-#define GPDMA_DMACSoftLBReq_Src(n)		(((1UL<<n)&0xFFFF))
-#define GPDMA_DMACSoftLBReq_BITMASK		((0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Software Last Single Request register
- **********************************************************************/
-#define GPDMA_DMACSoftLSReq_Src(n) 		(((1UL<<n)&0xFFFF))
-#define GPDMA_DMACSoftLSReq_BITMASK		((0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Configuration register
- **********************************************************************/
-#define GPDMA_DMACConfig_E				((0x01))	 /**< DMA Controller enable*/
-#define GPDMA_DMACConfig_M				((0x02))	 /**< AHB Master endianness configuration*/
-#define GPDMA_DMACConfig_BITMASK		((0x03))
-
-/*********************************************************************//**
- * Macro defines for DMA Synchronization register
- **********************************************************************/
-#define GPDMA_DMACSync_Src(n)			(((1UL<<n)&0xFFFF))
-#define GPDMA_DMACSync_BITMASK			((0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Request Select register
- **********************************************************************/
-#define GPDMA_DMAReqSel_Input(n)		(((1UL<<(n-8))&0xFF))
-#define GPDMA_DMAReqSel_BITMASK			((0xFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Channel Linked List Item registers
- **********************************************************************/
-/** DMA Channel Linked List Item registers bit mask*/
-#define GPDMA_DMACCxLLI_BITMASK 		((0xFFFFFFFC))
-
-/*********************************************************************//**
- * Macro defines for DMA channel control registers
- **********************************************************************/
-#define GPDMA_DMACCxControl_TransferSize(n) (((n&0xFFF)<<0)) 	/**< Transfer size*/
-#define GPDMA_DMACCxControl_SBSize(n)		(((n&0x07)<<12)) 	/**< Source burst size*/
-#define GPDMA_DMACCxControl_DBSize(n)		(((n&0x07)<<15)) 	/**< Destination burst size*/
-#define GPDMA_DMACCxControl_SWidth(n)		(((n&0x07)<<18)) 	/**< Source transfer width*/
-#define GPDMA_DMACCxControl_DWidth(n)		(((n&0x07)<<21)) 	/**< Destination transfer width*/
-#define GPDMA_DMACCxControl_SI				((1UL<<26)) 		/**< Source increment*/
-#define GPDMA_DMACCxControl_DI				((1UL<<27)) 		/**< Destination increment*/
-#define GPDMA_DMACCxControl_Prot1			((1UL<<28)) 		/**< Indicates that the access is in user mode or privileged mode*/
-#define GPDMA_DMACCxControl_Prot2			((1UL<<29)) 		/**< Indicates that the access is bufferable or not bufferable*/
-#define GPDMA_DMACCxControl_Prot3			((1UL<<30)) 		/**< Indicates that the access is cacheable or not cacheable*/
-#define GPDMA_DMACCxControl_I				((1UL<<31)) 		/**< Terminal count interrupt enable bit */
-/** DMA channel control registers bit mask */
-#define GPDMA_DMACCxControl_BITMASK			((0xFCFFFFFF))
-
-/*********************************************************************//**
- * Macro defines for DMA Channel Configuration registers
- **********************************************************************/
-#define GPDMA_DMACCxConfig_E 					((1UL<<0))			/**< DMA control enable*/
-#define GPDMA_DMACCxConfig_SrcPeripheral(n) 	(((n&0x1F)<<1)) 	/**< Source peripheral*/
-#define GPDMA_DMACCxConfig_DestPeripheral(n) 	(((n&0x1F)<<6)) 	/**< Destination peripheral*/
-#define GPDMA_DMACCxConfig_TransferType(n) 		(((n&0x7)<<11)) 	/**< This value indicates the type of transfer*/
-#define GPDMA_DMACCxConfig_IE 					((1UL<<14))			/**< Interrupt error mask*/
-#define GPDMA_DMACCxConfig_ITC 					((1UL<<15)) 		/**< Terminal count interrupt mask*/
-#define GPDMA_DMACCxConfig_L 					((1UL<<16)) 		/**< Lock*/
-#define GPDMA_DMACCxConfig_A 					((1UL<<17)) 		/**< Active*/
-#define GPDMA_DMACCxConfig_H 					((1UL<<18)) 		/**< Halt*/
-/** DMA Channel Configuration registers bit mask */
-#define GPDMA_DMACCxConfig_BITMASK				((0x7FFFF))
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/* Macros check GPDMA channel */
-#define PARAM_GPDMA_CHANNEL(n)	((n>=0) && (n<=7))
-
-/* Macros check GPDMA connection type */
-#define PARAM_GPDMA_CONN(n)		((n==GPDMA_CONN_SSP0_Tx) || (n==GPDMA_CONN_SSP0_Rx) \
-|| (n==GPDMA_CONN_SSP1_Tx) || (n==GPDMA_CONN_SSP1_Rx) \
-|| (n==GPDMA_CONN_ADC) || (n==GPDMA_CONN_I2S_Channel_0) \
-|| (n==GPDMA_CONN_I2S_Channel_1) || (n==GPDMA_CONN_DAC) \
-|| (n==GPDMA_CONN_UART0_Tx) || (n==GPDMA_CONN_UART0_Rx) \
-|| (n==GPDMA_CONN_UART1_Tx) || (n==GPDMA_CONN_UART1_Rx) \
-|| (n==GPDMA_CONN_UART2_Tx) || (n==GPDMA_CONN_UART2_Rx) \
-|| (n==GPDMA_CONN_UART3_Tx) || (n==GPDMA_CONN_UART3_Rx) \
-|| (n==GPDMA_CONN_MAT0_0) || (n==GPDMA_CONN_MAT0_1) \
-|| (n==GPDMA_CONN_MAT1_0) || (n==GPDMA_CONN_MAT1_1) \
-|| (n==GPDMA_CONN_MAT2_0) || (n==GPDMA_CONN_MAT2_1) \
-|| (n==GPDMA_CONN_MAT3_0) || (n==GPDMA_CONN_MAT3_1))
-
-/* Macros check GPDMA burst size type */
-#define PARAM_GPDMA_BSIZE(n)	((n==GPDMA_BSIZE_1) || (n==GPDMA_BSIZE_4) \
-|| (n==GPDMA_BSIZE_8) || (n==GPDMA_BSIZE_16) \
-|| (n==GPDMA_BSIZE_32) || (n==GPDMA_BSIZE_64) \
-|| (n==GPDMA_BSIZE_128) || (n==GPDMA_BSIZE_256))
-
-/* Macros check GPDMA width type */
-#define PARAM_GPDMA_WIDTH(n) ((n==GPDMA_WIDTH_BYTE) || (n==GPDMA_WIDTH_HALFWORD) \
-|| (n==GPDMA_WIDTH_WORD))
-
-/* Macros check GPDMA status type */
-#define PARAM_GPDMA_STAT(n)	((n==GPDMA_STAT_INT) || (n==GPDMA_STAT_INTTC) \
-|| (n==GPDMA_STAT_INTERR) || (n==GPDMA_STAT_RAWINTTC) \
-|| (n==GPDMA_STAT_RAWINTERR) || (n==GPDMA_STAT_ENABLED_CH))
-
-/* Macros check GPDMA transfer type */
-#define PARAM_GPDMA_TRANSFERTYPE(n) ((n==GPDMA_TRANSFERTYPE_M2M)||(n==GPDMA_TRANSFERTYPE_M2P) \
-||(n==GPDMA_TRANSFERTYPE_P2M)||(n==GPDMA_TRANSFERTYPE_P2P))
-
-/* Macros check GPDMA state clear type */
-#define PARAM_GPDMA_STATCLR(n)	((n==GPDMA_STATCLR_INTTC) || (n==GPDMA_STATCLR_INTERR))
-
-/* Macros check GPDMA request select type */
-#define PARAM_GPDMA_REQSEL(n)	((n==GPDMA_REQSEL_UART) || (n==GPDMA_REQSEL_TIMER))
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup GPDMA_Public_Types GPDMA Public Types
- * @{
- */
-
-/**
- * @brief GPDMA Status enumeration
- */
-typedef enum {
-	GPDMA_STAT_INT,			/**< GPDMA Interrupt Status */
-	GPDMA_STAT_INTTC,		/**< GPDMA Interrupt Terminal Count Request Status */
-	GPDMA_STAT_INTERR,		/**< GPDMA Interrupt Error Status */
-	GPDMA_STAT_RAWINTTC,	/**< GPDMA Raw Interrupt Terminal Count Status */
-	GPDMA_STAT_RAWINTERR,	/**< GPDMA Raw Error Interrupt Status */
-	GPDMA_STAT_ENABLED_CH	/**< GPDMA Enabled Channel Status */
-} GPDMA_Status_Type;
-
-/**
- * @brief GPDMA Interrupt clear status enumeration
- */
-typedef enum{
-	GPDMA_STATCLR_INTTC,	/**< GPDMA Interrupt Terminal Count Request Clear */
-	GPDMA_STATCLR_INTERR	/**< GPDMA Interrupt Error Clear */
-}GPDMA_StateClear_Type;
-
-/**
- * @brief GPDMA Channel configuration structure type definition
- */
-typedef struct {
-	uint32_t ChannelNum; 	/**< DMA channel number, should be in
-								range from 0 to 7.
-								Note: DMA channel 0 has the highest priority
-								and DMA channel 7 the lowest priority.
-								*/
-	uint32_t TransferSize;	/**< Length/Size of transfer */
-	uint32_t TransferWidth;	/**< Transfer width - used for TransferType is GPDMA_TRANSFERTYPE_M2M only */
-	uint32_t SrcMemAddr;	/**< Physical Source Address, used in case TransferType is chosen as
-								 GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_M2P */
-	uint32_t DstMemAddr;	/**< Physical Destination Address, used in case TransferType is chosen as
-								 GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_P2M */
-	uint32_t TransferType;	/**< Transfer Type, should be one of the following:
-							- GPDMA_TRANSFERTYPE_M2M: Memory to memory - DMA control
-							- GPDMA_TRANSFERTYPE_M2P: Memory to peripheral - DMA control
-							- GPDMA_TRANSFERTYPE_P2M: Peripheral to memory - DMA control
-							- GPDMA_TRANSFERTYPE_P2P: Source peripheral to destination peripheral - DMA control
-							*/
-	uint32_t SrcConn;		/**< Peripheral Source Connection type, used in case TransferType is chosen as
-							GPDMA_TRANSFERTYPE_P2M or GPDMA_TRANSFERTYPE_P2P, should be one of
-							following:
-							 - GPDMA_CONN_SSP0_Tx: SSP0, Tx
-							 - GPDMA_CONN_SSP0_Rx: SSP0, Rx
-							 - GPDMA_CONN_SSP1_Tx: SSP1, Tx
-							 - GPDMA_CONN_SSP1_Rx: SSP1, Rx
-							 - GPDMA_CONN_ADC: ADC
-							 - GPDMA_CONN_I2S_Channel_0: I2S Channel 0
-							 - GPDMA_CONN_I2S_Channel_1: I2S Channel 1
-							 - GPDMA_CONN_DAC: DAC
-							 - GPDMA_CONN_UART0_Tx_MAT0_0: UART0 Tx / MAT0.0
-							 - GPDMA_CONN_UART0_Rx_MAT0_1: UART0 Rx / MAT0.1
-							 - GPDMA_CONN_UART1_Tx_MAT1_0: UART1 Tx / MAT1.0
-							 - GPDMA_CONN_UART1_Rx_MAT1_1: UART1 Rx / MAT1.1
-							 - GPDMA_CONN_UART2_Tx_MAT2_0: UART2 Tx / MAT2.0
-							 - GPDMA_CONN_UART2_Rx_MAT2_1: UART2 Rx / MAT2.1
-							 - GPDMA_CONN_UART3_Tx_MAT3_0: UART3 Tx / MAT3.0
-							 - GPDMA_CONN_UART3_Rx_MAT3_1: UART3 Rx / MAT3.1
-							 */
-	uint32_t DstConn;		/**< Peripheral Destination Connection type, used in case TransferType is chosen as
-							GPDMA_TRANSFERTYPE_M2P or GPDMA_TRANSFERTYPE_P2P, should be one of
-							following:
-							 - GPDMA_CONN_SSP0_Tx: SSP0, Tx
-							 - GPDMA_CONN_SSP0_Rx: SSP0, Rx
-							 - GPDMA_CONN_SSP1_Tx: SSP1, Tx
-							 - GPDMA_CONN_SSP1_Rx: SSP1, Rx
-							 - GPDMA_CONN_ADC: ADC
-							 - GPDMA_CONN_I2S_Channel_0: I2S Channel 0
-							 - GPDMA_CONN_I2S_Channel_1: I2S Channel 1
-							 - GPDMA_CONN_DAC: DAC
-							 - GPDMA_CONN_UART0_Tx_MAT0_0: UART0 Tx / MAT0.0
-							 - GPDMA_CONN_UART0_Rx_MAT0_1: UART0 Rx / MAT0.1
-							 - GPDMA_CONN_UART1_Tx_MAT1_0: UART1 Tx / MAT1.0
-							 - GPDMA_CONN_UART1_Rx_MAT1_1: UART1 Rx / MAT1.1
-							 - GPDMA_CONN_UART2_Tx_MAT2_0: UART2 Tx / MAT2.0
-							 - GPDMA_CONN_UART2_Rx_MAT2_1: UART2 Rx / MAT2.1
-							 - GPDMA_CONN_UART3_Tx_MAT3_0: UART3 Tx / MAT3.0
-							 - GPDMA_CONN_UART3_Rx_MAT3_1: UART3 Rx / MAT3.1
-							 */
-	uint32_t DMALLI;		/**< Linker List Item structure data address
-							if there's no Linker List, set as '0'
-							*/
-} GPDMA_Channel_CFG_Type;
-
-/**
- * @brief GPDMA Linker List Item structure type definition
- */
-typedef struct {
-	uint32_t SrcAddr;	/**< Source Address */
-	uint32_t DstAddr;	/**< Destination address */
-	uint32_t NextLLI;	/**< Next LLI address, otherwise set to '0' */
-	uint32_t Control;	/**< GPDMA Control of this LLI */
-} GPDMA_LLI_Type;
-
-
-/**
- * @}
- */
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup GPDMA_Public_Functions GPDMA Public Functions
- * @{
- */
-
-void GPDMA_Init(void);
-//Status GPDMA_Setup(GPDMA_Channel_CFG_Type *GPDMAChannelConfig, fnGPDMACbs_Type *pfnGPDMACbs);
-Status GPDMA_Setup(GPDMA_Channel_CFG_Type *GPDMAChannelConfig);
-IntStatus GPDMA_IntGetStatus(GPDMA_Status_Type type, uint8_t channel);
-void GPDMA_ClearIntPending(GPDMA_StateClear_Type type, uint8_t channel);
-void GPDMA_ChannelCmd(uint8_t channelNum, FunctionalState NewState);
-//void GPDMA_IntHandler(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_GPDMA_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpio.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_gpio.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_gpio.h				2010-06-18
-*//**
-* @file		lpc17xx_gpio.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for GPDMA firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup GPIO GPIO (General Purpose Input/Output)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_GPIO_H_
-#define LPC17XX_GPIO_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup GPIO_Public_Macros GPIO Public Macros
- * @{
- */
-
-/** Fast GPIO port 0 byte accessible definition */
-#define GPIO0_Byte	((GPIO_Byte_TypeDef *)(LPC_GPIO0_BASE))
-/** Fast GPIO port 1 byte accessible definition */
-#define GPIO1_Byte	((GPIO_Byte_TypeDef *)(LPC_GPIO1_BASE))
-/** Fast GPIO port 2 byte accessible definition */
-#define GPIO2_Byte	((GPIO_Byte_TypeDef *)(LPC_GPIO2_BASE))
-/** Fast GPIO port 3 byte accessible definition */
-#define GPIO3_Byte	((GPIO_Byte_TypeDef *)(LPC_GPIO3_BASE))
-/** Fast GPIO port 4 byte accessible definition */
-#define GPIO4_Byte	((GPIO_Byte_TypeDef *)(LPC_GPIO4_BASE))
-
-
-/** Fast GPIO port 0 half-word accessible definition */
-#define GPIO0_HalfWord	((GPIO_HalfWord_TypeDef *)(LPC_GPIO0_BASE))
-/** Fast GPIO port 1 half-word accessible definition */
-#define GPIO1_HalfWord	((GPIO_HalfWord_TypeDef *)(LPC_GPIO1_BASE))
-/** Fast GPIO port 2 half-word accessible definition */
-#define GPIO2_HalfWord	((GPIO_HalfWord_TypeDef *)(LPC_GPIO2_BASE))
-/** Fast GPIO port 3 half-word accessible definition */
-#define GPIO3_HalfWord	((GPIO_HalfWord_TypeDef *)(LPC_GPIO3_BASE))
-/** Fast GPIO port 4 half-word accessible definition */
-#define GPIO4_HalfWord	((GPIO_HalfWord_TypeDef *)(LPC_GPIO4_BASE))
-
-/**
- * @}
- */
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup GPIO_Public_Types GPIO Public Types
- * @{
- */
-
-/**
- * @brief Fast GPIO port byte type definition
- */
-typedef struct {
-	__IO uint8_t FIODIR[4];		/**< FIO direction register in byte-align */
-	   uint32_t RESERVED0[3];	/**< Reserved */
-	__IO uint8_t FIOMASK[4];	/**< FIO mask register in byte-align */
-	__IO uint8_t FIOPIN[4];		/**< FIO pin register in byte align */
-	__IO uint8_t FIOSET[4];		/**< FIO set register in byte-align */
-	__O  uint8_t FIOCLR[4];		/**< FIO clear register in byte-align */
-} GPIO_Byte_TypeDef;
-
-
-/**
- * @brief Fast GPIO port half-word type definition
- */
-typedef struct {
-	__IO uint16_t FIODIRL;		/**< FIO direction register lower halfword part */
-	__IO uint16_t FIODIRU;		/**< FIO direction register upper halfword part */
-	   uint32_t RESERVED0[3];	/**< Reserved */
-	__IO uint16_t FIOMASKL;		/**< FIO mask register lower halfword part */
-	__IO uint16_t FIOMASKU;		/**< FIO mask register upper halfword part */
-	__IO uint16_t FIOPINL;		/**< FIO pin register lower halfword part */
-	__IO uint16_t FIOPINU;		/**< FIO pin register upper halfword part */
-	__IO uint16_t FIOSETL;		/**< FIO set register lower halfword part */
-	__IO uint16_t FIOSETU;		/**< FIO set register upper halfword part */
-	__O  uint16_t FIOCLRL;		/**< FIO clear register lower halfword part */
-	__O  uint16_t FIOCLRU;		/**< FIO clear register upper halfword part */
-} GPIO_HalfWord_TypeDef;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup GPIO_Public_Functions GPIO Public Functions
- * @{
- */
-
-/* GPIO style ------------------------------- */
-void GPIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);
-void GPIO_SetValue(uint8_t portNum, uint32_t bitValue);
-void GPIO_ClearValue(uint8_t portNum, uint32_t bitValue);
-uint32_t GPIO_ReadValue(uint8_t portNum);
-void GPIO_IntCmd(uint8_t portNum, uint32_t bitValue, uint8_t edgeState);
-FunctionalState GPIO_GetIntStatus(uint8_t portNum, uint32_t pinNum, uint8_t edgeState);
-void GPIO_ClearInt(uint8_t portNum, uint32_t bitValue);
-
-/* FIO (word-accessible) style ------------------------------- */
-void FIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);
-void FIO_SetValue(uint8_t portNum, uint32_t bitValue);
-void FIO_ClearValue(uint8_t portNum, uint32_t bitValue);
-uint32_t FIO_ReadValue(uint8_t portNum);
-void FIO_SetMask(uint8_t portNum, uint32_t bitValue, uint8_t maskValue);
-void FIO_IntCmd(uint8_t portNum, uint32_t bitValue, uint8_t edgeState);
-FunctionalState FIO_GetIntStatus(uint8_t portNum, uint32_t pinNum, uint8_t edgeState);
-void FIO_ClearInt(uint8_t portNum, uint32_t pinNum);
-
-/* FIO (halfword-accessible) style ------------------------------- */
-void FIO_HalfWordSetDir(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t dir);
-void FIO_HalfWordSetMask(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t maskValue);
-void FIO_HalfWordSetValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue);
-void FIO_HalfWordClearValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue);
-uint16_t FIO_HalfWordReadValue(uint8_t portNum, uint8_t halfwordNum);
-
-/* FIO (byte-accessible) style ------------------------------- */
-void FIO_ByteSetDir(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t dir);
-void FIO_ByteSetMask(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t maskValue);
-void FIO_ByteSetValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue);
-void FIO_ByteClearValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue);
-uint8_t FIO_ByteReadValue(uint8_t portNum, uint8_t byteNum);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_GPIO_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2c.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2c.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,383 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_i2c.h				2010-05-21
-*//**
-* @file		lpc17xx_i2c.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for I2C firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup I2C I2C (Inter-IC Control bus)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_I2C_H_
-#define LPC17XX_I2C_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup I2C_Private_Macros I2C Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*******************************************************************//**
- * I2C Control Set register description
- *********************************************************************/
-#define I2C_I2CONSET_AA				((0x04)) /*!< Assert acknowledge flag */
-#define I2C_I2CONSET_SI				((0x08)) /*!< I2C interrupt flag */
-#define I2C_I2CONSET_STO			((0x10)) /*!< STOP flag */
-#define I2C_I2CONSET_STA			((0x20)) /*!< START flag */
-#define I2C_I2CONSET_I2EN			((0x40)) /*!< I2C interface enable */
-
-/*******************************************************************//**
- * I2C Control Clear register description
- *********************************************************************/
-/** Assert acknowledge Clear bit */
-#define I2C_I2CONCLR_AAC			((1<<2))
-/** I2C interrupt Clear bit */
-#define I2C_I2CONCLR_SIC			((1<<3))
-/** START flag Clear bit */
-#define I2C_I2CONCLR_STAC			((1<<5))
-/** I2C interface Disable bit */
-#define I2C_I2CONCLR_I2ENC			((1<<6))
-
-/********************************************************************//**
- * I2C Status Code definition (I2C Status register)
- *********************************************************************/
-/* Return Code in I2C status register */
-#define I2C_STAT_CODE_BITMASK		((0xF8))
-
-/* I2C return status code definitions ----------------------------- */
-
-/** No relevant information */
-#define I2C_I2STAT_NO_INF						((0xF8))
-
-/* Master transmit mode -------------------------------------------- */
-/** A start condition has been transmitted */
-#define I2C_I2STAT_M_TX_START					((0x08))
-/** A repeat start condition has been transmitted */
-#define I2C_I2STAT_M_TX_RESTART					((0x10))
-/** SLA+W has been transmitted, ACK has been received */
-#define I2C_I2STAT_M_TX_SLAW_ACK				((0x18))
-/** SLA+W has been transmitted, NACK has been received */
-#define I2C_I2STAT_M_TX_SLAW_NACK				((0x20))
-/** Data has been transmitted, ACK has been received */
-#define I2C_I2STAT_M_TX_DAT_ACK					((0x28))
-/** Data has been transmitted, NACK has been received */
-#define I2C_I2STAT_M_TX_DAT_NACK				((0x30))
-/** Arbitration lost in SLA+R/W or Data bytes */
-#define I2C_I2STAT_M_TX_ARB_LOST				((0x38))
-
-/* Master receive mode -------------------------------------------- */
-/** A start condition has been transmitted */
-#define I2C_I2STAT_M_RX_START					((0x08))
-/** A repeat start condition has been transmitted */
-#define I2C_I2STAT_M_RX_RESTART					((0x10))
-/** Arbitration lost */
-#define I2C_I2STAT_M_RX_ARB_LOST				((0x38))
-/** SLA+R has been transmitted, ACK has been received */
-#define I2C_I2STAT_M_RX_SLAR_ACK				((0x40))
-/** SLA+R has been transmitted, NACK has been received */
-#define I2C_I2STAT_M_RX_SLAR_NACK				((0x48))
-/** Data has been received, ACK has been returned */
-#define I2C_I2STAT_M_RX_DAT_ACK					((0x50))
-/** Data has been received, NACK has been return */
-#define I2C_I2STAT_M_RX_DAT_NACK				((0x58))
-
-/* Slave receive mode -------------------------------------------- */
-/** Own slave address has been received, ACK has been returned */
-#define I2C_I2STAT_S_RX_SLAW_ACK				((0x60))
-
-/** Arbitration lost in SLA+R/W as master */
-#define I2C_I2STAT_S_RX_ARB_LOST_M_SLA			((0x68))
-/** Own SLA+W has been received, ACK returned */
-//#define I2C_I2STAT_S_RX_SLAW_ACK				((0x68))
-
-/** General call address has been received, ACK has been returned */
-#define I2C_I2STAT_S_RX_GENCALL_ACK				((0x70))
-
-/** Arbitration lost in SLA+R/W (GENERAL CALL) as master */
-#define I2C_I2STAT_S_RX_ARB_LOST_M_GENCALL		((0x78))
-/** General call address has been received, ACK has been returned */
-//#define I2C_I2STAT_S_RX_GENCALL_ACK				((0x78))
-
-/** Previously addressed with own SLV address;
- * Data has been received, ACK has been return */
-#define I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK			((0x80))
-/** Previously addressed with own SLA;
- * Data has been received and NOT ACK has been return */
-#define I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK		((0x88))
-/** Previously addressed with General Call;
- * Data has been received and ACK has been return */
-#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK		((0x90))
-/** Previously addressed with General Call;
- * Data has been received and NOT ACK has been return */
-#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK	((0x98))
-/** A STOP condition or repeated START condition has
- * been received while still addressed as SLV/REC
- * (Slave Receive) or SLV/TRX (Slave Transmit) */
-#define I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX	((0xA0))
-
-/** Slave transmit mode */
-/** Own SLA+R has been received, ACK has been returned */
-#define I2C_I2STAT_S_TX_SLAR_ACK				((0xA8))
-
-/** Arbitration lost in SLA+R/W as master */
-#define I2C_I2STAT_S_TX_ARB_LOST_M_SLA			((0xB0))
-/** Own SLA+R has been received, ACK has been returned */
-//#define I2C_I2STAT_S_TX_SLAR_ACK				((0xB0))
-
-/** Data has been transmitted, ACK has been received */
-#define I2C_I2STAT_S_TX_DAT_ACK					((0xB8))
-/** Data has been transmitted, NACK has been received */
-#define I2C_I2STAT_S_TX_DAT_NACK				((0xC0))
-/** Last data byte in I2DAT has been transmitted (AA = 0);
- ACK has been received */
-#define I2C_I2STAT_S_TX_LAST_DAT_ACK			((0xC8))
-
-/** Time out in case of using I2C slave mode */
-#define I2C_SLAVE_TIME_OUT						0x10000UL
-
-/********************************************************************//**
- * I2C Data register definition
- *********************************************************************/
-/** Mask for I2DAT register*/
-#define I2C_I2DAT_BITMASK			((0xFF))
-
-/** Idle data value will be send out in slave mode in case of the actual
- * expecting data requested from the master is greater than its sending data
- * length that can be supported */
-#define I2C_I2DAT_IDLE_CHAR			(0xFF)
-
-/********************************************************************//**
- * I2C Monitor mode control register description
- *********************************************************************/
-#define I2C_I2MMCTRL_MM_ENA			((1<<0))		/**< Monitor mode enable */
-#define I2C_I2MMCTRL_ENA_SCL		((1<<1))		/**< SCL output enable */
-#define I2C_I2MMCTRL_MATCH_ALL		((1<<2))		/**< Select interrupt register match */
-#define I2C_I2MMCTRL_BITMASK		((0x07))		/**< Mask for I2MMCTRL register */
-
-/********************************************************************//**
- * I2C Data buffer register description
- *********************************************************************/
-/** I2C Data buffer register bit mask */
-#define I2DATA_BUFFER_BITMASK		((0xFF))
-
-/********************************************************************//**
- * I2C Slave Address registers definition
- *********************************************************************/
-/** General Call enable bit */
-#define I2C_I2ADR_GC				((1<<0))
-/** I2C Slave Address registers bit mask */
-#define I2C_I2ADR_BITMASK			((0xFF))
-
-/********************************************************************//**
- * I2C Mask Register definition
- *********************************************************************/
-/** I2C Mask Register mask field */
-#define I2C_I2MASK_MASK(n)			((n&0xFE))
-
-/********************************************************************//**
- * I2C SCL HIGH duty cycle Register definition
- *********************************************************************/
-/** I2C SCL HIGH duty cycle Register bit mask */
-#define I2C_I2SCLH_BITMASK			((0xFFFF))
-
-/********************************************************************//**
- * I2C SCL LOW duty cycle Register definition
- *********************************************************************/
-/** I2C SCL LOW duty cycle Register bit mask */
-#define I2C_I2SCLL_BITMASK			((0xFFFF))
-
-/* I2C status values */
-#define I2C_SETUP_STATUS_ARBF   (1<<8)	/**< Arbitration false */
-#define I2C_SETUP_STATUS_NOACKF (1<<9)	/**< No ACK returned */
-#define I2C_SETUP_STATUS_DONE   (1<<10)	/**< Status DONE */
-
-/*********************************************************************//**
- * I2C monitor control configuration defines
- **********************************************************************/
-#define I2C_MONITOR_CFG_SCL_OUTPUT	I2C_I2MMCTRL_ENA_SCL		/**< SCL output enable */
-#define I2C_MONITOR_CFG_MATCHALL	I2C_I2MMCTRL_MATCH_ALL		/**< Select interrupt register match */
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/* Macros check I2C slave address */
-#define PARAM_I2C_SLAVEADDR_CH(n)	((n>=0) && (n<=3))
-
-/** Macro to determine if it is valid SSP port number */
-#define PARAM_I2Cx(n)	((((uint32_t *)n)==((uint32_t *)LPC_I2C0)) \
-|| (((uint32_t *)n)==((uint32_t *)LPC_I2C1)) \
-|| (((uint32_t *)n)==((uint32_t *)LPC_I2C2)))
-
-/* Macros check I2C monitor configuration type */
-#define PARAM_I2C_MONITOR_CFG(n) ((n==I2C_MONITOR_CFG_SCL_OUTPUT) || (I2C_MONITOR_CFG_MATCHALL))
-
-/**
- * @}
- */
-
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup I2C_Public_Types I2C Public Types
- * @{
- */
-
-/**
- * @brief I2C Own slave address setting structure
- */
-typedef struct {
-	uint8_t SlaveAddrChannel;	/**< Slave Address channel in I2C control,
-								should be in range from 0..3
-								*/
-	uint8_t SlaveAddr_7bit;		/**< Value of 7-bit slave address */
-	uint8_t GeneralCallState;	/**< Enable/Disable General Call Functionality
-								when I2C control being in Slave mode, should be:
-								- ENABLE: Enable General Call function.
-								- DISABLE: Disable General Call function.
-								*/
-	uint8_t SlaveAddrMaskValue;	/**< Any bit in this 8-bit value (bit 7:1)
-								which is set to '1' will cause an automatic compare on
-								the corresponding bit of the received address when it
-								is compared to the SlaveAddr_7bit value associated with this
-								mask register. In other words, bits in SlaveAddr_7bit value
-								which are masked are not taken into account in determining
-								an address match
-								*/
-} I2C_OWNSLAVEADDR_CFG_Type;
-
-
-/**
- * @brief Master transfer setup data structure definitions
- */
-typedef struct
-{
-  uint32_t          sl_addr7bit;				/**< Slave address in 7bit mode */
-  uint8_t*          tx_data;					/**< Pointer to Transmit data - NULL if data transmit
-													  is not used */
-  uint32_t          tx_length;					/**< Transmit data length - 0 if data transmit
-													  is not used*/
-  uint32_t          tx_count;					/**< Current Transmit data counter */
-  uint8_t*          rx_data;					/**< Pointer to Receive data - NULL if data receive
-													  is not used */
-  uint32_t          rx_length;					/**< Receive data length - 0 if data receive is
-													   not used */
-  uint32_t          rx_count;					/**< Current Receive data counter */
-  uint32_t          retransmissions_max;		/**< Max Re-Transmission value */
-  uint32_t          retransmissions_count;		/**< Current Re-Transmission counter */
-  uint32_t          status;						/**< Current status of I2C activity */
-  void 				(*callback)(void);			/**< Pointer to Call back function when transmission complete
-													used in interrupt transfer mode */
-} I2C_M_SETUP_Type;
-
-
-/**
- * @brief Slave transfer setup data structure definitions
- */
-typedef struct
-{
-  uint8_t*          tx_data;
-  uint32_t          tx_length;
-  uint32_t          tx_count;
-  uint8_t*          rx_data;
-  uint32_t          rx_length;
-  uint32_t          rx_count;
-  uint32_t          status;
-  void 				(*callback)(void);
-} I2C_S_SETUP_Type;
-
-/**
- * @brief Transfer option type definitions
- */
-typedef enum {
-	I2C_TRANSFER_POLLING = 0,		/**< Transfer in polling mode */
-	I2C_TRANSFER_INTERRUPT			/**< Transfer in interrupt mode */
-} I2C_TRANSFER_OPT_Type;
-
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup I2C_Public_Functions I2C Public Functions
- * @{
- */
-
-/* I2C Init/DeInit functions ---------- */
-void I2C_Init(LPC_I2C_TypeDef *I2Cx, uint32_t clockrate);
-void I2C_DeInit(LPC_I2C_TypeDef* I2Cx);
-//void I2C_SetClock (LPC_I2C_TypeDef *I2Cx, uint32_t target_clock);
-void I2C_Cmd(LPC_I2C_TypeDef* I2Cx, FunctionalState NewState);
-
-/* I2C transfer data functions -------- */
-Status I2C_MasterTransferData(LPC_I2C_TypeDef *I2Cx, \
-		I2C_M_SETUP_Type *TransferCfg, I2C_TRANSFER_OPT_Type Opt);
-Status I2C_SlaveTransferData(LPC_I2C_TypeDef *I2Cx, \
-		I2C_S_SETUP_Type *TransferCfg, I2C_TRANSFER_OPT_Type Opt);
-uint32_t I2C_MasterTransferComplete(LPC_I2C_TypeDef *I2Cx);
-uint32_t I2C_SlaveTransferComplete(LPC_I2C_TypeDef *I2Cx);
-
-
-void I2C_SetOwnSlaveAddr(LPC_I2C_TypeDef *I2Cx, I2C_OWNSLAVEADDR_CFG_Type *OwnSlaveAddrConfigStruct);
-uint8_t I2C_GetLastStatusCode(LPC_I2C_TypeDef* I2Cx);
-
-/* I2C Monitor functions ---------------*/
-void I2C_MonitorModeConfig(LPC_I2C_TypeDef *I2Cx, uint32_t MonitorCfgType, FunctionalState NewState);
-void I2C_MonitorModeCmd(LPC_I2C_TypeDef *I2Cx, FunctionalState NewState);
-uint8_t I2C_MonitorGetDatabuffer(LPC_I2C_TypeDef *I2Cx);
-BOOL_8 I2C_MonitorHandler(LPC_I2C_TypeDef *I2Cx, uint8_t *buffer, uint32_t size);
-
-/* I2C Interrupt handler functions ------*/
-void I2C_IntCmd (LPC_I2C_TypeDef *I2Cx, Bool NewState);
-void I2C_MasterHandler (LPC_I2C_TypeDef *I2Cx);
-void I2C_SlaveHandler (LPC_I2C_TypeDef *I2Cx);
-
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_I2C_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2s.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_i2s.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,378 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_i2s.h				2011-06-06
-*//**
-* @file		lpc17xx_i2s.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for I2S firmware library on LPC17xx
-* @version	3.1
-* @date		06. June. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup I2S I2S (Inter-IC Sound bus)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_I2S_H_
-#define LPC17XX_I2S_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup I2S_Public_Macros I2S Public Macros
- * @{
- */
-
-/*********************************************************************//**
- * I2S configuration parameter defines
- **********************************************************************/
-/** I2S Wordwidth bit */
-#define I2S_WORDWIDTH_8		((uint32_t)(0))
-#define I2S_WORDWIDTH_16	((uint32_t)(1))
-#define I2S_WORDWIDTH_32	((uint32_t)(3))
-/** I2S Channel bit */
-#define I2S_STEREO			((uint32_t)(0))
-#define I2S_MONO			((uint32_t)(1))
-/** I2S Master/Slave mode bit */
-#define I2S_MASTER_MODE		((uint8_t)(0))
-#define I2S_SLAVE_MODE		((uint8_t)(1))
-/** I2S Stop bit */
-#define I2S_STOP_ENABLE		((uint8_t)(1))
-#define I2S_STOP_DISABLE	((uint8_t)(0))
-/** I2S Reset bit */
-#define I2S_RESET_ENABLE	((uint8_t)(1))
-#define I2S_RESET_DISABLE	((uint8_t)(0))
-/** I2S Mute bit */
-#define I2S_MUTE_ENABLE		((uint8_t)(1))
-#define I2S_MUTE_DISABLE	((uint8_t)(0))
-/** I2S Transmit/Receive bit */
-#define I2S_TX_MODE			((uint8_t)(0))
-#define I2S_RX_MODE			((uint8_t)(1))
-/** I2S Clock Select bit */
-#define I2S_CLKSEL_FRDCLK	((uint8_t)(0))
-#define I2S_CLKSEL_MCLK		((uint8_t)(2))
-/** I2S 4-pin Mode bit */
-#define I2S_4PIN_ENABLE 	((uint8_t)(1))
-#define I2S_4PIN_DISABLE 	((uint8_t)(0))
-/** I2S MCLK Enable bit */
-#define I2S_MCLK_ENABLE		((uint8_t)(1))
-#define I2S_MCLK_DISABLE	((uint8_t)(0))
-/** I2S select DMA bit */
-#define I2S_DMA_1			((uint8_t)(0))
-#define I2S_DMA_2			((uint8_t)(1))
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup I2S_Private_Macros I2S Private Macros
- * @{
- */
-
-/*********************************************************************//**
- * Macro defines for DAO-Digital Audio Output register
- **********************************************************************/
-/** I2S wordwide - the number of bytes in data*/
-#define I2S_DAO_WORDWIDTH_8		((uint32_t)(0))		/** 8 bit	*/
-#define I2S_DAO_WORDWIDTH_16	((uint32_t)(1))		/** 16 bit	*/
-#define I2S_DAO_WORDWIDTH_32	((uint32_t)(3))		/** 32 bit	*/
-/** I2S control mono or stereo format */
-#define I2S_DAO_MONO			((uint32_t)(1<<2))
-/** I2S control stop mode */
-#define I2S_DAO_STOP			((uint32_t)(1<<3))
-/** I2S control reset mode */
-#define I2S_DAO_RESET			((uint32_t)(1<<4))
-/** I2S control master/slave mode */
-#define I2S_DAO_SLAVE			((uint32_t)(1<<5))
-/** I2S word select half period minus one */
-#define I2S_DAO_WS_HALFPERIOD(n)	((uint32_t)(n<<6))
-/** I2S control mute mode */
-#define I2S_DAO_MUTE			((uint32_t)(1<<15))
-
-/*********************************************************************//**
- * Macro defines for DAI-Digital Audio Input register
-**********************************************************************/
-/** I2S wordwide - the number of bytes in data*/
-#define I2S_DAI_WORDWIDTH_8		((uint32_t)(0))		/** 8 bit	*/
-#define I2S_DAI_WORDWIDTH_16	((uint32_t)(1))		/** 16 bit	*/
-#define I2S_DAI_WORDWIDTH_32	((uint32_t)(3))		/** 32 bit	*/
-/** I2S control mono or stereo format */
-#define I2S_DAI_MONO			((uint32_t)(1<<2))
-/** I2S control stop mode */
-#define I2S_DAI_STOP			((uint32_t)(1<<3))
-/** I2S control reset mode */
-#define I2S_DAI_RESET			((uint32_t)(1<<4))
-/** I2S control master/slave mode */
-#define I2S_DAI_SLAVE			((uint32_t)(1<<5))
-/** I2S word select half period minus one (9 bits)*/
-#define I2S_DAI_WS_HALFPERIOD(n)	((uint32_t)((n&0x1FF)<<6))
-/** I2S control mute mode */
-#define I2S_DAI_MUTE			((uint32_t)(1<<15))
-
-/*********************************************************************//**
- * Macro defines for STAT register (Status Feedback register)
-**********************************************************************/
-/** I2S Status Receive or Transmit Interrupt */
-#define I2S_STATE_IRQ		((uint32_t)(1))
-/** I2S Status Receive or Transmit DMA1 */
-#define I2S_STATE_DMA1		((uint32_t)(1<<1))
-/** I2S Status Receive or Transmit DMA2 */
-#define I2S_STATE_DMA2		((uint32_t)(1<<2))
-/** I2S Status Current level of the Receive FIFO (5 bits)*/
-#define I2S_STATE_RX_LEVEL(n)	((uint32_t)((n&1F)<<8))
-/** I2S Status Current level of the Transmit FIFO (5 bits)*/
-#define I2S_STATE_TX_LEVEL(n)	((uint32_t)((n&1F)<<16))
-
-/*********************************************************************//**
- * Macro defines for DMA1 register (DMA1 Configuration register)
-**********************************************************************/
-/** I2S control DMA1 for I2S receive */
-#define I2S_DMA1_RX_ENABLE		((uint32_t)(1))
-/** I2S control DMA1 for I2S transmit */
-#define I2S_DMA1_TX_ENABLE		((uint32_t)(1<<1))
-/** I2S set FIFO level that trigger a receive DMA request on DMA1 */
-#define I2S_DMA1_RX_DEPTH(n)	((uint32_t)((n&0x1F)<<8))
-/** I2S set FIFO level that trigger a transmit DMA request on DMA1 */
-#define I2S_DMA1_TX_DEPTH(n)	((uint32_t)((n&0x1F)<<16))
-
-/*********************************************************************//**
- * Macro defines for DMA2 register (DMA2 Configuration register)
-**********************************************************************/
-/** I2S control DMA2 for I2S receive */
-#define I2S_DMA2_RX_ENABLE		((uint32_t)(1))
-/** I2S control DMA1 for I2S transmit */
-#define I2S_DMA2_TX_ENABLE		((uint32_t)(1<<1))
-/** I2S set FIFO level that trigger a receive DMA request on DMA1 */
-#define I2S_DMA2_RX_DEPTH(n)	((uint32_t)((n&0x1F)<<8))
-/** I2S set FIFO level that trigger a transmit DMA request on DMA1 */
-#define I2S_DMA2_TX_DEPTH(n)	((uint32_t)((n&0x1F)<<16))
-
-/*********************************************************************//**
-* Macro defines for IRQ register (Interrupt Request Control register)
-**********************************************************************/
-/** I2S control I2S receive interrupt */
-#define I2S_IRQ_RX_ENABLE		((uint32_t)(1))
-/** I2S control I2S transmit interrupt */
-#define I2S_IRQ_TX_ENABLE		((uint32_t)(1<<1))
-/** I2S set the FIFO level on which to create an irq request */
-#define I2S_IRQ_RX_DEPTH(n)		((uint32_t)((n&0x1F)<<8))
-/** I2S set the FIFO level on which to create an irq request */
-#define I2S_IRQ_TX_DEPTH(n)		((uint32_t)((n&0x1F)<<16))
-
-/********************************************************************************//**
- * Macro defines for TXRATE/RXRATE register (Transmit/Receive Clock Rate register)
-*********************************************************************************/
-/** I2S Transmit MCLK rate denominator */
-#define I2S_TXRATE_Y_DIVIDER(n)	((uint32_t)(n&0xFF))
-/** I2S Transmit MCLK rate denominator */
-#define I2S_TXRATE_X_DIVIDER(n)	((uint32_t)((n&0xFF)<<8))
-/** I2S Receive MCLK rate denominator */
-#define I2S_RXRATE_Y_DIVIDER(n)	((uint32_t)(n&0xFF))
-/** I2S Receive MCLK rate denominator */
-#define I2S_RXRATE_X_DIVIDER(n)	((uint32_t)((n&0xFF)<<8))
-
-/*************************************************************************************//**
- * Macro defines for TXBITRATE & RXBITRATE register (Transmit/Receive Bit Rate register)
-**************************************************************************************/
-#define I2S_TXBITRATE(n)	((uint32_t)(n&0x3F))
-#define I2S_RXBITRATE(n)	((uint32_t)(n&0x3F))
-
-/**********************************************************************************//**
- * Macro defines for TXMODE/RXMODE register (Transmit/Receive Mode Control register)
-************************************************************************************/
-/** I2S Transmit select clock source (2 bits)*/
-#define I2S_TXMODE_CLKSEL(n)	((uint32_t)(n&0x03))
-/** I2S Transmit control 4-pin mode */
-#define I2S_TXMODE_4PIN_ENABLE	((uint32_t)(1<<2))
-/** I2S Transmit control the TX_MCLK output */
-#define I2S_TXMODE_MCENA		((uint32_t)(1<<3))
-/** I2S Receive select clock source */
-#define I2S_RXMODE_CLKSEL(n)	((uint32_t)(n&0x03))
-/** I2S Receive control 4-pin mode */
-#define I2S_RXMODE_4PIN_ENABLE	((uint32_t)(1<<2))
-/** I2S Receive control the TX_MCLK output */
-#define I2S_RXMODE_MCENA		((uint32_t)(1<<3))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid I2S peripheral */
-#define PARAM_I2Sx(n)	(((uint32_t *)n)==((uint32_t *)LPC_I2S))
-/** Macro to check Data to send valid */
-#define PRAM_I2S_FREQ(freq)		((freq>=16000)&&(freq <= 96000))
-/* Macro check I2S word width type */
-#define PARAM_I2S_WORDWIDTH(n)	((n==I2S_WORDWIDTH_8)||(n==I2S_WORDWIDTH_16)\
-||(n==I2S_WORDWIDTH_32))
-/* Macro check I2S channel type */
-#define PARAM_I2S_CHANNEL(n)	((n==I2S_STEREO)||(n==I2S_MONO))
-/* Macro check I2S master/slave mode */
-#define PARAM_I2S_WS_SEL(n)		((n==I2S_MASTER_MODE)||(n==I2S_SLAVE_MODE))
-/* Macro check I2S stop mode */
-#define PARAM_I2S_STOP(n)	((n==I2S_STOP_ENABLE)||(n==I2S_STOP_DISABLE))
-/* Macro check I2S reset mode */
-#define PARAM_I2S_RESET(n)	((n==I2S_RESET_ENABLE)||(n==I2S_RESET_DISABLE))
-/* Macro check I2S reset mode */
-#define PARAM_I2S_MUTE(n)	((n==I2S_MUTE_ENABLE)||(n==I2S_MUTE_DISABLE))
-/* Macro check I2S transmit/receive mode */
-#define PARAM_I2S_TRX(n) 		((n==I2S_TX_MODE)||(n==I2S_RX_MODE))
-/* Macro check I2S clock select mode */
-#define PARAM_I2S_CLKSEL(n)		((n==I2S_CLKSEL_FRDCLK)||(n==I2S_CLKSEL_MCLK))
-/* Macro check I2S 4-pin mode */
-#define PARAM_I2S_4PIN(n)	((n==I2S_4PIN_ENABLE)||(n==I2S_4PIN_DISABLE))
-/* Macro check I2S MCLK mode */
-#define PARAM_I2S_MCLK(n)	((n==I2S_MCLK_ENABLE)||(n==I2S_MCLK_DISABLE))
-/* Macro check I2S DMA mode */
-#define PARAM_I2S_DMA(n)		((n==I2S_DMA_1)||(n==I2S_DMA_2))
-/* Macro check I2S DMA depth value */
-#define PARAM_I2S_DMA_DEPTH(n)	(n<=31)
-/* Macro check I2S irq level value */
-#define PARAM_I2S_IRQ_LEVEL(n)	(n<=31)
-/* Macro check I2S half-period value */
-#define PARAM_I2S_HALFPERIOD(n)	(n<512)
-/* Macro check I2S bit-rate value */
-#define PARAM_I2S_BITRATE(n)	(n<=63)
-/**
- * @}
- */
-
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup I2S_Public_Types I2S Public Types
- * @{
- */
-
-/**
- * @brief I2S configuration structure definition
- */
-typedef struct {
-	uint8_t wordwidth;		/** the number of bytes in data as follow:
-							-I2S_WORDWIDTH_8: 8 bit data
-							-I2S_WORDWIDTH_16: 16 bit data
-							-I2S_WORDWIDTH_32: 32 bit data */
-	uint8_t	mono; 			/** Set mono/stereo mode, should be:
-							- I2S_STEREO: stereo mode
-							- I2S_MONO: mono mode */
-	uint8_t stop;			/** Disables accesses on FIFOs, should be:
-							- I2S_STOP_ENABLE: enable stop mode
-							- I2S_STOP_DISABLE: disable stop mode */
-	uint8_t reset;			/** Asynchronously reset tje transmit channel and FIFO, should be:
-							- I2S_RESET_ENABLE: enable reset mode
-							- I2S_RESET_DISABLE: disable reset mode */
-	uint8_t ws_sel;			/** Set Master/Slave mode, should be:
-							- I2S_MASTER_MODE: I2S master mode
-							- I2S_SLAVE_MODE: I2S slave mode */
-	uint8_t mute;			/** MUTE mode: when true, the transmit channel sends only zeroes, shoule be:
-							- I2S_MUTE_ENABLE: enable mute mode
-							- I2S_MUTE_DISABLE: disable mute mode */
-	uint8_t Reserved0[2];
-} I2S_CFG_Type;
-
-/**
- * @brief I2S DMA configuration structure definition
- */
-typedef struct {
-	uint8_t DMAIndex;		/** Select DMA1 or DMA2, should be:
-							- I2S_DMA_1: DMA1
-							- I2S_DMA_2: DMA2 */
-	uint8_t depth;			/** FIFO level that triggers a DMA request */
-	uint8_t Reserved0[2];
-}I2S_DMAConf_Type;
-
-/**
- * @brief I2S mode configuration structure definition
- */
-typedef struct{
-	uint8_t clksel;			/** Clock source selection, should be:
-							- I2S_CLKSEL_FRDCLK: Select the fractional rate divider clock output
-							- I2S_CLKSEL_MCLK: Select the MCLK signal as the clock source */
-	uint8_t fpin;			/** Select four pin mode, should be:
-							- I2S_4PIN_ENABLE: 4-pin enable
-							- I2S_4PIN_DISABLE: 4-pin disable */
-	uint8_t mcena;			/** Select MCLK mode, should be:
-							- I2S_MCLK_ENABLE: MCLK enable for output
-							- I2S_MCLK_DISABLE: MCLK disable for output */
-	uint8_t Reserved;
-}I2S_MODEConf_Type;
-
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup I2S_Public_Functions I2S Public Functions
- * @{
- */
-/* I2S Init/DeInit functions ---------*/
-void I2S_Init(LPC_I2S_TypeDef *I2Sx);
-void I2S_DeInit(LPC_I2S_TypeDef *I2Sx);
-
-/* I2S configuration functions --------*/
-void I2S_Config(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode, I2S_CFG_Type* ConfigStruct);
-Status I2S_FreqConfig(LPC_I2S_TypeDef *I2Sx, uint32_t Freq, uint8_t TRMode);
-void I2S_SetBitRate(LPC_I2S_TypeDef *I2Sx, uint8_t bitrate, uint8_t TRMode);
-void I2S_ModeConfig(LPC_I2S_TypeDef *I2Sx, I2S_MODEConf_Type* ModeConfig, uint8_t TRMode);
-uint8_t I2S_GetLevel(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-
-/* I2S operate functions -------------*/
-void I2S_Send(LPC_I2S_TypeDef *I2Sx, uint32_t BufferData);
-uint32_t I2S_Receive(LPC_I2S_TypeDef* I2Sx);
-void I2S_Start(LPC_I2S_TypeDef *I2Sx);
-void I2S_Pause(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-void I2S_Mute(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-void I2S_Stop(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-
-/* I2S DMA functions ----------------*/
-void I2S_DMAConfig(LPC_I2S_TypeDef *I2Sx, I2S_DMAConf_Type* DMAConfig, uint8_t TRMode);
-void I2S_DMACmd(LPC_I2S_TypeDef *I2Sx, uint8_t DMAIndex,uint8_t TRMode, FunctionalState NewState);
-
-/* I2S IRQ functions ----------------*/
-void I2S_IRQCmd(LPC_I2S_TypeDef *I2Sx,uint8_t TRMode, FunctionalState NewState);
-void I2S_IRQConfig(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode, uint8_t level);
-FunctionalState I2S_GetIRQStatus(LPC_I2S_TypeDef *I2Sx,uint8_t TRMode);
-uint8_t I2S_GetIRQDepth(LPC_I2S_TypeDef *I2Sx,uint8_t TRMode);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* LPC17XX_SSP_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_libcfg_default.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_libcfg_default.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_libcfg_default.h				2010-05-21
-*//**
-* @file		lpc17xx_libcfg_default.h
-* @brief	Default Library configuration header file
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Library Configuration group ----------------------------------------------------------- */
-/** @defgroup LIBCFG_DEFAULT LIBCFG_DEFAULT (Default Library Configuration)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_LIBCFG_DEFAULT_H_
-#define LPC17XX_LIBCFG_DEFAULT_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc_types.h"
-
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup LIBCFG_DEFAULT_Public_Macros LIBCFG_DEFAULT Public Macros
- * @{
- */
-
-/************************** DEBUG MODE DEFINITIONS *********************************/
-/* Un-comment the line below to compile the library in DEBUG mode, this will expanse
-   the "CHECK_PARAM" macro in the FW library code */
-
-//#define DEBUG
-
-
-/******************* PERIPHERAL FW LIBRARY CONFIGURATION DEFINITIONS ***********************/
-/* Comment the line below to disable the specific peripheral inclusion */
-
-/* DEBUG_FRAMWORK ------------------------------ */
-#define _DBGFWK
-
-/* GPIO ------------------------------- */
-#define _GPIO
-
-/* EXTI ------------------------------- */
-#define _EXTI
-
-/* UART ------------------------------- */
-#define _UART
-#define _UART0
-#define _UART1
-#define _UART2
-#define _UART3
-
-/* SPI ------------------------------- */
-#define _SPI
-
-/* SYSTICK --------------------------- */
-#define _SYSTICK
-
-/* SSP ------------------------------- */
-#define _SSP
-#define _SSP0
-#define _SSP1
-
-
-/* I2C ------------------------------- */
-#define _I2C
-#define _I2C0
-#define _I2C1
-#define _I2C2
-
-/* TIMER ------------------------------- */
-#define _TIM
-
-/* WDT ------------------------------- */
-#define _WDT
-
-
-/* GPDMA ------------------------------- */
-#define _GPDMA
-
-
-/* DAC ------------------------------- */
-#define _DAC
-
-/* DAC ------------------------------- */
-#define _ADC
-
-
-/* PWM ------------------------------- */
-#define _PWM
-#define _PWM1
-
-/* RTC ------------------------------- */
-#define _RTC
-
-/* I2S ------------------------------- */
-#define _I2S
-
-/* USB device ------------------------------- */
-#define _USBDEV
-#define _USB_DMA
-
-/* QEI ------------------------------- */
-#define _QEI
-
-/* MCPWM ------------------------------- */
-#define _MCPWM
-
-/* CAN--------------------------------*/
-//#define _CAN
-
-/* RIT ------------------------------- */
-#define _RIT
-
-/* EMAC ------------------------------ */
-//#define _EMAC
-
-/************************** GLOBAL/PUBLIC MACRO DEFINITIONS *********************************/
-
-#ifdef  DEBUG
-/*******************************************************************************
-* @brief		The CHECK_PARAM macro is used for function's parameters check.
-* 				It is used only if the library is compiled in DEBUG mode.
-* @param[in]	expr - If expr is false, it calls check_failed() function
-*                    	which reports the name of the source file and the source
-*                    	line number of the call that failed.
-*                    - If expr is true, it returns no value.
-* @return		None
-*******************************************************************************/
-#define CHECK_PARAM(expr) ((expr) ? (void)0 : check_failed((uint8_t *)__FILE__, __LINE__))
-#else
-#define CHECK_PARAM(expr)
-#endif /* DEBUG */
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup LIBCFG_DEFAULT_Public_Functions LIBCFG_DEFAULT Public Functions
- * @{
- */
-
-#ifdef  DEBUG
-void check_failed(uint8_t *file, uint32_t line);
-#endif
-
-/**
- * @}
- */
-
-#endif /* LPC17XX_LIBCFG_DEFAULT_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_mcpwm.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_mcpwm.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_mcpwm.h				2010-05-21
-*//**
-* @file		lpc17xx_mcpwm.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Motor Control PWM firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup MCPWM MCPWM (Motor Control PWM)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_MCPWM_H_
-#define LPC17XX_MCPWM_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup MCPWM_Public_Macros MCPWM Public Macros
- * @{
- */
-
-
-/** Edge aligned mode for channel in MCPWM */
-#define MCPWM_CHANNEL_EDGE_MODE			((uint32_t)(0))
-/** Center aligned mode for channel in MCPWM */
-#define MCPWM_CHANNEL_CENTER_MODE		((uint32_t)(1))
-
-/** Polarity of the MCOA and MCOB pins: Passive state is LOW, active state is HIGH */
-#define MCPWM_CHANNEL_PASSIVE_LO		((uint32_t)(0))
-/** Polarity of the MCOA and MCOB pins: Passive state is HIGH, active state is LOW */
-#define MCPWM_CHANNEL_PASSIVE_HI		((uint32_t)(1))
-
-/* Output Patent in 3-phase DC mode, the internal MCOA0 signal is routed to any or all of
- * the six output pins under the control of the bits in this register */
-#define MCPWM_PATENT_A0		((uint32_t)(1<<0))	/**< MCOA0 tracks internal MCOA0 */
-#define MCPWM_PATENT_B0		((uint32_t)(1<<1))	/**< MCOB0 tracks internal MCOA0 */
-#define MCPWM_PATENT_A1		((uint32_t)(1<<2))	/**< MCOA1 tracks internal MCOA0 */
-#define MCPWM_PATENT_B1		((uint32_t)(1<<3))	/**< MCOB1 tracks internal MCOA0 */
-#define MCPWM_PATENT_A2		((uint32_t)(1<<4))	/**< MCOA2 tracks internal MCOA0 */
-#define MCPWM_PATENT_B2		((uint32_t)(1<<5))	/**< MCOB2 tracks internal MCOA0 */
-
-/* Interrupt type in MCPWM */
-/** Limit interrupt for channel (0) */
-#define MCPWM_INTFLAG_LIM0	MCPWM_INT_ILIM(0)
-/** Match interrupt for channel (0) */
-#define MCPWM_INTFLAG_MAT0	MCPWM_INT_IMAT(0)
-/** Capture interrupt for channel (0) */
-#define MCPWM_INTFLAG_CAP0	MCPWM_INT_ICAP(0)
-
-/** Limit interrupt for channel (1) */
-#define MCPWM_INTFLAG_LIM1	MCPWM_INT_ILIM(1)
-/** Match interrupt for channel (1) */
-#define MCPWM_INTFLAG_MAT1	MCPWM_INT_IMAT(1)
-/** Capture interrupt for channel (1) */
-#define MCPWM_INTFLAG_CAP1	MCPWM_INT_ICAP(1)
-
-/** Limit interrupt for channel (2) */
-#define MCPWM_INTFLAG_LIM2	MCPWM_INT_ILIM(2)
-/** Match interrupt for channel (2) */
-#define MCPWM_INTFLAG_MAT2	MCPWM_INT_IMAT(2)
-/** Capture interrupt for channel (2) */
-#define MCPWM_INTFLAG_CAP2	MCPWM_INT_ICAP(2)
-
-/** Fast abort interrupt */
-#define MCPWM_INTFLAG_ABORT	MCPWM_INT_ABORT
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup MCPWM_Private_Macros MCPWM Private Macros
- * @{
- */
-
-/*********************************************************************//**
- * Macro defines for MCPWM Control register
- **********************************************************************/
-/* MCPWM Control register, these macro definitions below can be applied for these
- * register type:
- * - MCPWM Control read address
- * - MCPWM Control set address
- * - MCPWM Control clear address
- */
-#define MCPWM_CON_RUN(n)		((n<=2) ? ((uint32_t)(1UL<<((n*8)+0))) : (0))		/**< Stops/starts timer channel n */
-#define MCPWM_CON_CENTER(n)		((n<=2) ? ((uint32_t)(1UL<<((n*8)+1))) : (0))		/**< Edge/center aligned operation for channel n */
-#define MCPWM_CON_POLAR(n)		((n<=2) ? ((uint32_t)(1UL<<((n*8)+2))) : (0))		/**< Select polarity of the MCOAn and MCOBn pin */
-#define MCPWM_CON_DTE(n)		((n<=2) ? ((uint32_t)(1UL<<((n*8)+3))) : (0))		/**< Control the dead-time feature for channel n */
-#define MCPWM_CON_DISUP(n)		((n<=2) ? ((uint32_t)(1UL<<((n*8)+4))) : (0))		/**< Enable/Disable update of functional register for channel n */
-#define MCPWM_CON_INVBDC		((uint32_t)(1UL<<29))										/**< Control the polarity for all 3 channels */
-#define MCPWM_CON_ACMODE		((uint32_t)(1UL<<30))										/**< 3-phase AC mode select */
-#define MCPWM_CON_DCMODE		((uint32_t)(1UL<<31))										/**< 3-phase DC mode select */
-
-/*********************************************************************//**
- * Macro defines for MCPWM Capture Control register
- **********************************************************************/
-/* Capture Control register, these macro definitions below can be applied for these
- * register type:
- * - MCPWM Capture Control read address
- * - MCPWM Capture Control set address
- * - MCPWM Capture control clear address
- */
-/** Enables/Disable channel (cap) capture event on a rising edge on MCI(mci) */
-#define MCPWM_CAPCON_CAPMCI_RE(cap,mci)	(((cap<=2)&&(mci<=2)) ? ((uint32_t)(1<<((cap*6)+(mci*2)+0))) : (0))
-/** Enables/Disable channel (cap) capture event on a falling edge on MCI(mci) */
-#define MCPWM_CAPCON_CAPMCI_FE(cap,mci)	(((cap<=2)&&(mci<=2)) ? ((uint32_t)(1<<((cap*6)+(mci*2)+1))) : (0))
-/** TC(n) is reset by channel (n) capture event */
-#define MCPWM_CAPCON_RT(n)				((n<=2) ? ((uint32_t)(1<<(18+(n)))) : (0))
-/** Hardware noise filter: channel (n) capture events are delayed */
-#define MCPWM_CAPCON_HNFCAP(n)			((n<=2) ? ((uint32_t)(1<<(21+(n)))) : (0))
-
-/*********************************************************************//**
- * Macro defines for MCPWM Interrupt register
- **********************************************************************/
-/* Interrupt registers, these macro definitions below can be applied for these
- * register type:
- * - MCPWM Interrupt Enable read address
- * - MCPWM Interrupt Enable set address
- * - MCPWM Interrupt Enable clear address
- * - MCPWM Interrupt Flags read address
- * - MCPWM Interrupt Flags set address
- * - MCPWM Interrupt Flags clear address
- */
-/** Limit interrupt for channel (n) */
-#define MCPWM_INT_ILIM(n)	(((n>=0)&&(n<=2)) ? ((uint32_t)(1<<((n*4)+0))) : (0))
-/** Match interrupt for channel (n) */
-#define MCPWM_INT_IMAT(n)	(((n>=0)&&(n<=2)) ? ((uint32_t)(1<<((n*4)+1))) : (0))
-/** Capture interrupt for channel (n) */
-#define MCPWM_INT_ICAP(n)	(((n>=0)&&(n<=2)) ? ((uint32_t)(1<<((n*4)+2))) : (0))
-/** Fast abort interrupt */
-#define MCPWM_INT_ABORT		((uint32_t)(1<<15))
-
-/*********************************************************************//**
- * Macro defines for MCPWM Count Control register
- **********************************************************************/
-/* MCPWM Count Control register, these macro definitions below can be applied for these
- * register type:
- * - MCPWM Count Control read address
- * - MCPWM Count Control set address
- * - MCPWM Count Control clear address
- */
-/** Counter(tc) advances on a rising edge on MCI(mci) pin */
-#define MCPWM_CNTCON_TCMCI_RE(tc,mci)	(((tc<=2)&&(mci<=2)) ? ((uint32_t)(1<<((6*tc)+(2*mci)+0))) : (0))
-/** Counter(cnt) advances on a falling edge on MCI(mci) pin */
-#define MCPWM_CNTCON_TCMCI_FE(tc,mci)	(((tc<=2)&&(mci<=2)) ? ((uint32_t)(1<<((6*tc)+(2*mci)+1))) : (0))
-/** Channel (n) is in counter mode */
-#define MCPWM_CNTCON_CNTR(n)			((n<=2) ? ((uint32_t)(1<<(29+n))) : (0))
-
-/*********************************************************************//**
- * Macro defines for MCPWM Dead-time register
- **********************************************************************/
-/** Dead time value x for channel n */
-#define MCPWM_DT(n,x)		((n<=2) ? ((uint32_t)((x&0x3FF)<<(n*10))) : (0))
-
-/*********************************************************************//**
- * Macro defines for MCPWM Communication Pattern register
- **********************************************************************/
-#define MCPWM_CP_A0		((uint32_t)(1<<0))	/**< MCOA0 tracks internal MCOA0 */
-#define MCPWM_CP_B0		((uint32_t)(1<<1))	/**< MCOB0 tracks internal MCOA0 */
-#define MCPWM_CP_A1		((uint32_t)(1<<2))	/**< MCOA1 tracks internal MCOA0 */
-#define MCPWM_CP_B1		((uint32_t)(1<<3))	/**< MCOB1 tracks internal MCOA0 */
-#define MCPWM_CP_A2		((uint32_t)(1<<4))	/**< MCOA2 tracks internal MCOA0 */
-#define MCPWM_CP_B2		((uint32_t)(1<<5))	/**< MCOB2 tracks internal MCOA0 */
-
-/*********************************************************************//**
- * Macro defines for MCPWM Capture clear address register
- **********************************************************************/
-/** Clear the MCCAP (n) register */
-#define MCPWM_CAPCLR_CAP(n)		((n<=2) ? ((uint32_t)(1<<n)) : (0))
-
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup MCPWM_Public_Types MCPWM Public Types
- * @{
- */
-
-/**
- * @brief Motor Control PWM Channel Configuration structure type definition
- */
-typedef struct {
-	uint32_t channelType;					/**< Edge/center aligned mode for this channel,
-												should be:
-												- MCPWM_CHANNEL_EDGE_MODE: Channel is in Edge mode
-												- MCPWM_CHANNEL_CENTER_MODE: Channel is in Center mode
-												*/
-	uint32_t channelPolarity;				/**< Polarity of the MCOA and MCOB pins, should be:
-												- MCPWM_CHANNEL_PASSIVE_LO: Passive state is LOW, active state is HIGH
-												- MCPWM_CHANNEL_PASSIVE_HI: Passive state is HIGH, active state is LOW
-												*/
-	uint32_t channelDeadtimeEnable;			/**< Enable/Disable DeadTime function for channel, should be:
-												- ENABLE.
-												- DISABLE.
-												*/
-	uint32_t channelDeadtimeValue;			/**< DeadTime value, should be less than 0x3FF */
-	uint32_t channelUpdateEnable;			/**< Enable/Disable updates of functional registers,
-												 should be:
-												- ENABLE.
-												- DISABLE.
-												*/
-	uint32_t channelTimercounterValue;		/**< MCPWM Timer Counter value */
-	uint32_t channelPeriodValue;			/**< MCPWM Period value */
-	uint32_t channelPulsewidthValue;		/**< MCPWM Pulse Width value */
-} MCPWM_CHANNEL_CFG_Type;
-
-/**
- * @brief MCPWM Capture Configuration type definition
- */
-typedef struct {
-	uint32_t captureChannel;		/**< Capture Channel Number, should be in range from 0 to 2 */
-	uint32_t captureRising;			/**< Enable/Disable Capture on Rising Edge event, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-	uint32_t captureFalling;		/**< Enable/Disable Capture on Falling Edge event, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-	uint32_t timerReset;			/**< Enable/Disable Timer reset function an capture, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-	uint32_t hnfEnable;				/**< Enable/Disable Hardware noise filter function, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-} MCPWM_CAPTURE_CFG_Type;
-
-
-/**
- * @brief MCPWM Count Control Configuration type definition
- */
-typedef struct {
-	uint32_t counterChannel;		/**< Counter Channel Number, should be in range from 0 to 2 */
-	uint32_t countRising;			/**< Enable/Disable Capture on Rising Edge event, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-	uint32_t countFalling;		/**< Enable/Disable Capture on Falling Edge event, should be:
-										- ENABLE.
-										- DISABLE.
-										*/
-} MCPWM_COUNT_CFG_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup MCPWM_Public_Functions MCPWM Public Functions
- * @{
- */
-
-void MCPWM_Init(LPC_MCPWM_TypeDef *MCPWMx);
-void MCPWM_ConfigChannel(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-						MCPWM_CHANNEL_CFG_Type * channelSetup);
-void MCPWM_WriteToShadow(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-						MCPWM_CHANNEL_CFG_Type *channelSetup);
-void MCPWM_ConfigCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-						MCPWM_CAPTURE_CFG_Type *captureConfig);
-void MCPWM_ClearCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel);
-uint32_t MCPWM_GetCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel);
-void MCPWM_CountConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-					uint32_t countMode, MCPWM_COUNT_CFG_Type *countConfig);
-void MCPWM_Start(LPC_MCPWM_TypeDef *MCPWMx,uint32_t channel0, uint32_t channel1, uint32_t channel2);
-void MCPWM_Stop(LPC_MCPWM_TypeDef *MCPWMx,uint32_t channel0, uint32_t channel1, uint32_t channel2);
-void MCPWM_ACMode(LPC_MCPWM_TypeDef *MCPWMx,uint32_t acMode);
-void MCPWM_DCMode(LPC_MCPWM_TypeDef *MCPWMx, uint32_t dcMode,
-					uint32_t outputInvered, uint32_t outputPattern);
-void MCPWM_IntConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType, FunctionalState NewState);
-void MCPWM_IntSet(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType);
-void MCPWM_IntClear(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType);
-FlagStatus MCPWM_GetIntStatus(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_MCPWM_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_nvic.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_nvic.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_nvic.h				2010-05-21
-*//**
-* @file		lpc17xx_nvic.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Nesting Vectored Interrupt firmware library
-* 			on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup NVIC NVIC (Nested Vectored Interrupt Controller)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_NVIC_H_
-#define LPC17XX_NVIC_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup NVIC_Public_Functions NVIC Public Functions
- * @{
- */
-
-void NVIC_DeInit(void);
-void NVIC_SCBDeInit(void);
-void NVIC_SetVTOR(uint32_t offset);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_NVIC_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pinsel.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pinsel.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_pinsel.h				2010-05-21
-*//**
-* @file		lpc17xx_pinsel.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Pin connect block firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup PINSEL PINSEL (Pin Selection)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_PINSEL_H_
-#define LPC17XX_PINSEL_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup PINSEL_Public_Macros PINSEL Public Macros
- * @{
- */
-
-/*********************************************************************//**
- *!< Macros define for PORT Selection
- ***********************************************************************/
-#define PINSEL_PORT_0 	((0))	/**< PORT 0*/
-#define PINSEL_PORT_1 	((1))	/**< PORT 1*/
-#define PINSEL_PORT_2 	((2))	/**< PORT 2*/
-#define PINSEL_PORT_3 	((3))	/**< PORT 3*/
-#define PINSEL_PORT_4 	((4))	/**< PORT 4*/
-
-/***********************************************************************
- * Macros define for Pin Function selection
- **********************************************************************/
-#define PINSEL_FUNC_0	((0))	/**< default function*/
-#define PINSEL_FUNC_1	((1))	/**< first alternate function*/
-#define PINSEL_FUNC_2	((2))	/**< second alternate function*/
-#define PINSEL_FUNC_3	((3))	/**< third or reserved alternate function*/
-
-/***********************************************************************
- * Macros define for Pin Number of Port
- **********************************************************************/
-#define PINSEL_PIN_0 	((0)) 	/**< Pin 0 */
-#define PINSEL_PIN_1 	((1)) 	/**< Pin 1 */
-#define PINSEL_PIN_2 	((2)) 	/**< Pin 2 */
-#define PINSEL_PIN_3 	((3)) 	/**< Pin 3 */
-#define PINSEL_PIN_4 	((4)) 	/**< Pin 4 */
-#define PINSEL_PIN_5 	((5)) 	/**< Pin 5 */
-#define PINSEL_PIN_6 	((6)) 	/**< Pin 6 */
-#define PINSEL_PIN_7 	((7)) 	/**< Pin 7 */
-#define PINSEL_PIN_8 	((8)) 	/**< Pin 8 */
-#define PINSEL_PIN_9 	((9)) 	/**< Pin 9 */
-#define PINSEL_PIN_10 	((10)) 	/**< Pin 10 */
-#define PINSEL_PIN_11 	((11)) 	/**< Pin 11 */
-#define PINSEL_PIN_12 	((12)) 	/**< Pin 12 */
-#define PINSEL_PIN_13 	((13)) 	/**< Pin 13 */
-#define PINSEL_PIN_14 	((14)) 	/**< Pin 14 */
-#define PINSEL_PIN_15 	((15)) 	/**< Pin 15 */
-#define PINSEL_PIN_16 	((16)) 	/**< Pin 16 */
-#define PINSEL_PIN_17 	((17)) 	/**< Pin 17 */
-#define PINSEL_PIN_18 	((18)) 	/**< Pin 18 */
-#define PINSEL_PIN_19 	((19)) 	/**< Pin 19 */
-#define PINSEL_PIN_20 	((20)) 	/**< Pin 20 */
-#define PINSEL_PIN_21 	((21)) 	/**< Pin 21 */
-#define PINSEL_PIN_22 	((22)) 	/**< Pin 22 */
-#define PINSEL_PIN_23 	((23)) 	/**< Pin 23 */
-#define PINSEL_PIN_24 	((24)) 	/**< Pin 24 */
-#define PINSEL_PIN_25 	((25)) 	/**< Pin 25 */
-#define PINSEL_PIN_26 	((26)) 	/**< Pin 26 */
-#define PINSEL_PIN_27 	((27)) 	/**< Pin 27 */
-#define PINSEL_PIN_28 	((28)) 	/**< Pin 28 */
-#define PINSEL_PIN_29 	((29)) 	/**< Pin 29 */
-#define PINSEL_PIN_30 	((30)) 	/**< Pin 30 */
-#define PINSEL_PIN_31 	((31)) 	/**< Pin 31 */
-
-/***********************************************************************
- * Macros define for Pin mode
- **********************************************************************/
-#define PINSEL_PINMODE_PULLUP		((0))	/**< Internal pull-up resistor*/
-#define PINSEL_PINMODE_TRISTATE 	((2))	/**< Tri-state */
-#define PINSEL_PINMODE_PULLDOWN 	((3)) 	/**< Internal pull-down resistor */
-
-/***********************************************************************
- * Macros define for Pin mode (normal/open drain)
- **********************************************************************/
-#define	PINSEL_PINMODE_NORMAL		((0))	/**< Pin is in the normal (not open drain) mode.*/
-#define	PINSEL_PINMODE_OPENDRAIN	((1)) 	/**< Pin is in the open drain mode */
-
-/***********************************************************************
- * Macros define for I2C mode
- ***********************************************************************/
-#define	PINSEL_I2C_Normal_Mode		((0))	/**< The standard drive mode */
-#define	PINSEL_I2C_Fast_Mode		((1)) 	/**<  Fast Mode Plus drive mode */
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup PINSEL_Private_Macros PINSEL Private Macros
- * @{
- */
-
-/* Pin selection define */
-/* I2C Pin Configuration register bit description */
-#define PINSEL_I2CPADCFG_SDADRV0 	_BIT(0) /**< Drive mode control for the SDA0 pin, P0.27 */
-#define PINSEL_I2CPADCFG_SDAI2C0	_BIT(1) /**< I2C mode control for the SDA0 pin, P0.27 */
-#define PINSEL_I2CPADCFG_SCLDRV0	_BIT(2) /**< Drive mode control for the SCL0 pin, P0.28 */
-#define PINSEL_I2CPADCFG_SCLI2C0	_BIT(3) /**< I2C mode control for the SCL0 pin, P0.28 */
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup PINSEL_Public_Types PINSEL Public Types
- * @{
- */
-
-/** @brief Pin configuration structure */
-typedef struct
-{
-	uint8_t Portnum;	/**< Port Number, should be PINSEL_PORT_x,
-						where x should be in range from 0 to 4 */
-	uint8_t Pinnum;		/**< Pin Number, should be PINSEL_PIN_x,
-						where x should be in range from 0 to 31 */
-	uint8_t Funcnum;	/**< Function Number, should be PINSEL_FUNC_x,
-						where x should be in range from 0 to 3 */
-	uint8_t Pinmode;	/**< Pin Mode, should be:
-						- PINSEL_PINMODE_PULLUP: Internal pull-up resistor
-						- PINSEL_PINMODE_TRISTATE: Tri-state
-						- PINSEL_PINMODE_PULLDOWN: Internal pull-down resistor */
-	uint8_t OpenDrain;	/**< OpenDrain mode, should be:
-						- PINSEL_PINMODE_NORMAL: Pin is in the normal (not open drain) mode
-						- PINSEL_PINMODE_OPENDRAIN: Pin is in the open drain mode */
-} PINSEL_CFG_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup PINSEL_Public_Functions PINSEL Public Functions
- * @{
- */
-
-void PINSEL_ConfigPin(PINSEL_CFG_Type *PinCfg);
-void PINSEL_ConfigTraceFunc (FunctionalState NewState);
-void PINSEL_SetI2C0Pins(uint8_t i2cPinMode, FunctionalState filterSlewRateEnable);
-
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_PINSEL_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pwm.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_pwm.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_pwm.h				2011-03-31
-*//**
-* @file		lpc17xx_pwm.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for PWM firmware library on LPC17xx
-* @version	2.1
-* @date		31. Mar. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup PWM PWM (Pulse Width Modulator)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_PWM_H_
-#define LPC17XX_PWM_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup PWM_Private_Macros PWM Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/**********************************************************************
-* IR register definitions
-**********************************************************************/
-/** Interrupt flag for PWM match channel for 6 channel */
-#define PWM_IR_PWMMRn(n)    	((uint32_t)((n<4)?(1<<n):(1<<(n+4))))
-/** Interrupt flag for capture input */
-#define PWM_IR_PWMCAPn(n)		((uint32_t)(1<<(n+4)))
-/**  IR register mask */
-#define PWM_IR_BITMASK			((uint32_t)(0x0000073F))
-
-/**********************************************************************
-* TCR register definitions
-**********************************************************************/
-/** TCR register mask */
-#define PWM_TCR_BITMASK				((uint32_t)(0x0000000B))
-#define PWM_TCR_COUNTER_ENABLE      ((uint32_t)(1<<0)) /*!< PWM Counter Enable */
-#define PWM_TCR_COUNTER_RESET       ((uint32_t)(1<<1)) /*!< PWM Counter Reset */
-#define PWM_TCR_PWM_ENABLE          ((uint32_t)(1<<3)) /*!< PWM Enable */
-
-/**********************************************************************
-* CTCR register definitions
-**********************************************************************/
-/** CTCR register mask */
-#define PWM_CTCR_BITMASK			((uint32_t)(0x0000000F))
-/** PWM Counter-Timer Mode */
-#define PWM_CTCR_MODE(n)        	((uint32_t)(n&0x03))
-/** PWM Capture input select */
-#define PWM_CTCR_SELECT_INPUT(n)	((uint32_t)((n&0x03)<<2))
-
-/**********************************************************************
-* MCR register definitions
-**********************************************************************/
-/** MCR register mask */
-#define PWM_MCR_BITMASK				((uint32_t)(0x001FFFFF))
-/** generate a PWM interrupt when a MATCHn occurs */
-#define PWM_MCR_INT_ON_MATCH(n)     ((uint32_t)(1<<(((n&0x7)<<1)+(n&0x07))))
-/** reset the PWM when a MATCHn occurs */
-#define PWM_MCR_RESET_ON_MATCH(n)   ((uint32_t)(1<<(((n&0x7)<<1)+(n&0x07)+1)))
-/** stop the PWM when a MATCHn occurs */
-#define PWM_MCR_STOP_ON_MATCH(n)    ((uint32_t)(1<<(((n&0x7)<<1)+(n&0x07)+2)))
-
-/**********************************************************************
-* CCR register definitions
-**********************************************************************/
-/** CCR register mask */
-#define PWM_CCR_BITMASK				((uint32_t)(0x0000003F))
-/** PCAPn is rising edge sensitive */
-#define PWM_CCR_CAP_RISING(n) 	 	((uint32_t)(1<<(((n&0x2)<<1)+(n&0x1))))
-/** PCAPn is falling edge sensitive */
-#define PWM_CCR_CAP_FALLING(n) 		((uint32_t)(1<<(((n&0x2)<<1)+(n&0x1)+1)))
-/** PWM interrupt is generated on a PCAP event */
-#define PWM_CCR_INT_ON_CAP(n)  		((uint32_t)(1<<(((n&0x2)<<1)+(n&0x1)+2)))
-
-/**********************************************************************
-* PCR register definitions
-**********************************************************************/
-/** PCR register mask */
-#define PWM_PCR_BITMASK			(uint32_t)0x00007E7C
-/** PWM output n is a single edge controlled output */
-#define PWM_PCR_PWMSELn(n)   	((uint32_t)(((n&0x7)<2) ? 0 : (1<<n)))
-/** enable PWM output n */
-#define PWM_PCR_PWMENAn(n)   	((uint32_t)(((n&0x7)<1) ? 0 : (1<<(n+8))))
-
-/**********************************************************************
-* LER register definitions
-**********************************************************************/
-/** LER register mask*/
-#define PWM_LER_BITMASK				((uint32_t)(0x0000007F))
-/** PWM MATCHn register update control */
-#define PWM_LER_EN_MATCHn_LATCH(n)   ((uint32_t)((n<7) ? (1<<n) : 0))
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid PWM peripheral or not */
-#define PARAM_PWMx(n)	(((uint32_t *)n)==((uint32_t *)LPC_PWM1))
-
-/** Macro check PWM1 match channel value */
-#define PARAM_PWM1_MATCH_CHANNEL(n)		((n>=0) && (n<=6))
-
-/** Macro check PWM1 channel value */
-#define PARAM_PWM1_CHANNEL(n)			((n>=1) && (n<=6))
-
-/** Macro check PWM1 edge channel mode */
-#define PARAM_PWM1_EDGE_MODE_CHANNEL(n)			((n>=2) && (n<=6))
-
-/** Macro check PWM1 capture channel mode */
-#define PARAM_PWM1_CAPTURE_CHANNEL(n)	((n==0) || (n==1))
-
-/** Macro check PWM1 interrupt status type */
-#define PARAM_PWM_INTSTAT(n)	((n==PWM_INTSTAT_MR0) || (n==PWM_INTSTAT_MR1) || (n==PWM_INTSTAT_MR2) \
-|| (n==PWM_INTSTAT_MR3) || (n==PWM_INTSTAT_MR4) || (n==PWM_INTSTAT_MR5) \
-|| (n==PWM_INTSTAT_MR6) || (n==PWM_INTSTAT_CAP0) || (n==PWM_INTSTAT_CAP1))
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup PWM_Public_Types PWM Public Types
- * @{
- */
-
-/** @brief Configuration structure in PWM TIMER mode */
-typedef struct {
-
-	uint8_t PrescaleOption;		/**< Prescale option, should be:
-								- PWM_TIMER_PRESCALE_TICKVAL: Prescale in absolute value
-								- PWM_TIMER_PRESCALE_USVAL: Prescale in microsecond value
-								*/
-	uint8_t Reserved[3];
-	uint32_t PrescaleValue;		/**< Prescale value, 32-bit long, should be matched
-								with PrescaleOption
-								*/
-} PWM_TIMERCFG_Type;
-
-/** @brief Configuration structure in PWM COUNTER mode */
-typedef struct {
-
-	uint8_t CounterOption;		/**< Counter Option, should be:
-								- PWM_COUNTER_RISING: Rising Edge
-								- PWM_COUNTER_FALLING: Falling Edge
-								- PWM_COUNTER_ANY: Both rising and falling mode
-								*/
-	uint8_t CountInputSelect;	/**< Counter input select, should be:
-								- PWM_COUNTER_PCAP1_0: PWM Counter input selected is PCAP1.0 pin
-								- PWM_COUNTER_PCAP1_1: PWM Counter input selected is PCAP1.1 pin
-								*/
-	uint8_t Reserved[2];
-} PWM_COUNTERCFG_Type;
-
-/** @brief PWM Match channel configuration structure */
-typedef struct {
-	uint8_t MatchChannel;	/**< Match channel, should be in range
-							from 0..6 */
-	uint8_t IntOnMatch;		/**< Interrupt On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t StopOnMatch;	/**< Stop On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t ResetOnMatch;	/**< Reset On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-} PWM_MATCHCFG_Type;
-
-
-/** @brief PWM Capture Input configuration structure */
-typedef struct {
-	uint8_t CaptureChannel;	/**< Capture channel, should be in range
-							from 0..1 */
-	uint8_t RisingEdge;		/**< caption rising edge, should be:
-							- ENABLE: Enable rising edge.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t FallingEdge;		/**< caption falling edge, should be:
-							- ENABLE: Enable falling edge.
-							- DISABLE: Disable this function.
-								*/
-	uint8_t IntOnCaption;	/**< Interrupt On caption, should be:
-							- ENABLE: Enable interrupt function.
-							- DISABLE: Disable this function.
-							*/
-} PWM_CAPTURECFG_Type;
-
-/* Timer/Counter in PWM configuration type definition -----------------------------------*/
-
-/** @brief PMW TC mode select option */
-typedef enum {
-	PWM_MODE_TIMER = 0,		/*!< PWM using Timer mode */
-	PWM_MODE_COUNTER		/*!< PWM using Counter mode */
-} PWM_TC_MODE_OPT;
-
-#define PARAM_PWM_TC_MODE(n) ((n==PWM_MODE_TIMER) || (n==PWM_MODE_COUNTER))
-
-
-/** @brief PWM Timer/Counter prescale option */
-typedef enum
-{
-	PWM_TIMER_PRESCALE_TICKVAL = 0,			/*!< Prescale in absolute value */
-	PWM_TIMER_PRESCALE_USVAL				/*!< Prescale in microsecond value */
-} PWM_TIMER_PRESCALE_OPT;
-
-#define PARAM_PWM_TIMER_PRESCALE(n) ((n==PWM_TIMER_PRESCALE_TICKVAL) || (n==PWM_TIMER_PRESCALE_USVAL))
-
-
-/** @brief PWM Input Select in counter mode */
-typedef enum {
-	PWM_COUNTER_PCAP1_0 = 0,		/*!< PWM Counter input selected is PCAP1.0 pin */
-	PWM_COUNTER_PCAP1_1			/*!< PWM counter input selected is CAP1.1 pin */
-} PWM_COUNTER_INPUTSEL_OPT;
-
-#define PARAM_PWM_COUNTER_INPUTSEL(n) ((n==PWM_COUNTER_PCAP1_0) || (n==PWM_COUNTER_PCAP1_1))
-
-/** @brief PWM Input Edge Option in counter mode */
-typedef enum {
-    PWM_COUNTER_RISING = 1,		/*!< Rising edge mode */
-    PWM_COUNTER_FALLING = 2,	/*!< Falling edge mode */
-    PWM_COUNTER_ANY = 3			/*!< Both rising and falling mode */
-} PWM_COUNTER_EDGE_OPT;
-
-#define PARAM_PWM_COUNTER_EDGE(n)	((n==PWM_COUNTER_RISING) || (n==PWM_COUNTER_FALLING) \
-|| (n==PWM_COUNTER_ANY))
-
-
-/* PWM configuration type definition ----------------------------------------------------- */
-/** @brief PWM operating mode options */
-typedef enum {
-    PWM_CHANNEL_SINGLE_EDGE,	/*!< PWM Channel Single edge mode */
-    PWM_CHANNEL_DUAL_EDGE		/*!< PWM Channel Dual edge mode */
-} PWM_CHANNEL_EDGE_OPT;
-
-#define PARAM_PWM_CHANNEL_EDGE(n)	((n==PWM_CHANNEL_SINGLE_EDGE) || (n==PWM_CHANNEL_DUAL_EDGE))
-
-
-/** @brief PWM update type */
-typedef enum {
-	PWM_MATCH_UPDATE_NOW = 0,			/**< PWM Match Channel Update Now */
-	PWM_MATCH_UPDATE_NEXT_RST			/**< PWM Match Channel Update on next
-											PWM Counter resetting */
-} PWM_MATCH_UPDATE_OPT;
-
-#define PARAM_PWM_MATCH_UPDATE(n)	((n==PWM_MATCH_UPDATE_NOW) || (n==PWM_MATCH_UPDATE_NEXT_RST))
-
-
-/** @brief PWM interrupt status type definition ----------------------------------------------------- */
-/** @brief PWM Interrupt status type */
-typedef enum
-{
-	PWM_INTSTAT_MR0 = PWM_IR_PWMMRn(0), 	/**< Interrupt flag for PWM match channel 0 */
-	PWM_INTSTAT_MR1 = PWM_IR_PWMMRn(1),		/**< Interrupt flag for PWM match channel 1 */
-	PWM_INTSTAT_MR2 = PWM_IR_PWMMRn(2),		/**< Interrupt flag for PWM match channel 2 */
-	PWM_INTSTAT_MR3 = PWM_IR_PWMMRn(3),		/**< Interrupt flag for PWM match channel 3 */
-	PWM_INTSTAT_CAP0 = PWM_IR_PWMCAPn(0),	/**< Interrupt flag for capture input 0 */
-	PWM_INTSTAT_CAP1 = PWM_IR_PWMCAPn(1),	/**< Interrupt flag for capture input 1 */
-	PWM_INTSTAT_MR4 = PWM_IR_PWMMRn(4),		/**< Interrupt flag for PWM match channel 4 */
-	PWM_INTSTAT_MR6 = PWM_IR_PWMMRn(5),		/**< Interrupt flag for PWM match channel 5 */
-	PWM_INTSTAT_MR5 = PWM_IR_PWMMRn(6)		/**< Interrupt flag for PWM match channel 6 */
-}PWM_INTSTAT_TYPE;
-
-/** @brief Match update structure */
-typedef struct
-{
-	uint32_t Matchvalue;
-	FlagStatus Status;
-}PWM_Match_T;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup PWM_Public_Functions PWM Public Functions
- * @{
- */
-
-void PWM_PinConfig(LPC_PWM_TypeDef *PWMx, uint8_t PWM_Channel, uint8_t PinselOption);
-IntStatus PWM_GetIntStatus(LPC_PWM_TypeDef *PWMx, uint32_t IntFlag);
-void PWM_ClearIntPending(LPC_PWM_TypeDef *PWMx, uint32_t IntFlag);
-void PWM_ConfigStructInit(uint8_t PWMTimerCounterMode, void *PWM_InitStruct);
-void PWM_Init(LPC_PWM_TypeDef *PWMx, uint32_t PWMTimerCounterMode, void *PWM_ConfigStruct);
-void PWM_DeInit (LPC_PWM_TypeDef *PWMx);
-void PWM_Cmd(LPC_PWM_TypeDef *PWMx, FunctionalState NewState);
-void PWM_CounterCmd(LPC_PWM_TypeDef *PWMx, FunctionalState NewState);
-void PWM_ResetCounter(LPC_PWM_TypeDef *PWMx);
-void PWM_ConfigMatch(LPC_PWM_TypeDef *PWMx, PWM_MATCHCFG_Type *PWM_MatchConfigStruct);
-void PWM_ConfigCapture(LPC_PWM_TypeDef *PWMx, PWM_CAPTURECFG_Type *PWM_CaptureConfigStruct);
-uint32_t PWM_GetCaptureValue(LPC_PWM_TypeDef *PWMx, uint8_t CaptureChannel);
-void PWM_MatchUpdate(LPC_PWM_TypeDef *PWMx, uint8_t MatchChannel, \
-					uint32_t MatchValue, uint8_t UpdateType);
-void PWM_ChannelConfig(LPC_PWM_TypeDef *PWMx, uint8_t PWMChannel, uint8_t ModeOption);
-void PWM_ChannelCmd(LPC_PWM_TypeDef *PWMx, uint8_t PWMChannel, FunctionalState NewState);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_PWM_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_qei.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_qei.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_qei.h				2010-05-21
-*//**
-* @file		lpc17xx_qei.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for QEI firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup QEI QEI (Quadrature Encoder Interface)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_QEI_H_
-#define LPC17XX_QEI_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup QEI_Public_Macros QEI Public Macros
- * @{
- */
-
-/* QEI Reset types */
-#define QEI_RESET_POS			QEI_CON_RESP		/**< Reset position counter */
-#define QEI_RESET_POSOnIDX		QEI_CON_RESPI		/**< Reset Posistion Counter on Index */
-#define QEI_RESET_VEL			QEI_CON_RESV		/**< Reset Velocity */
-#define QEI_RESET_IDX			QEI_CON_RESI		/**< Reset Index Counter */
-
-/* QEI Direction Invert Type Option */
-#define QEI_DIRINV_NONE		((uint32_t)(0))		/**< Direction is not inverted */
-#define QEI_DIRINV_CMPL		((uint32_t)(1))		/**< Direction is complemented */
-
-/* QEI Signal Mode Option */
-#define QEI_SIGNALMODE_QUAD		((uint32_t)(0))		/**< Signal operation: Quadrature phase mode */
-#define QEI_SIGNALMODE_CLKDIR	((uint32_t)(1))		/**< Signal operation: Clock/Direction mode */
-
-/* QEI Capture Mode Option */
-#define QEI_CAPMODE_2X			((uint32_t)(0))		/**< Capture mode: Only Phase-A edges are counted (2X) */
-#define QEI_CAPMODE_4X			((uint32_t)(1))		/**< Capture mode: BOTH PhA and PhB edges are counted (4X)*/
-
-/* QEI Invert Index Signal Option */
-#define QEI_INVINX_NONE			((uint32_t)(0))		/**< Invert Index signal option: None */
-#define QEI_INVINX_EN			((uint32_t)(1))		/**< Invert Index signal option: Enable */
-
-/* QEI timer reload option */
-#define QEI_TIMERRELOAD_TICKVAL	((uint8_t)(0))	/**< Reload value in absolute value */
-#define QEI_TIMERRELOAD_USVAL	((uint8_t)(1))	/**< Reload value in microsecond value */
-
-/* QEI Flag Status type */
-#define QEI_STATUS_DIR			((uint32_t)(1<<0))	/**< Direction status */
-
-/* QEI Compare Position channel option */
-#define QEI_COMPPOS_CH_0			((uint8_t)(0))		/**< QEI compare position channel 0 */
-#define QEI_COMPPOS_CH_1			((uint8_t)(1))		/**< QEI compare position channel 1 */
-#define QEI_COMPPOS_CH_2			((uint8_t)(2))		/**< QEI compare position channel 2 */
-
-/* QEI interrupt flag type */
-#define QEI_INTFLAG_INX_Int			((uint32_t)(1<<0))	/**< index pulse was detected interrupt */
-#define QEI_INTFLAG_TIM_Int			((uint32_t)(1<<1))	/**< Velocity timer over flow interrupt */
-#define QEI_INTFLAG_VELC_Int		((uint32_t)(1<<2))	/**< Capture velocity is less than compare interrupt */
-#define QEI_INTFLAG_DIR_Int			((uint32_t)(1<<3))	/**< Change of direction interrupt */
-#define QEI_INTFLAG_ERR_Int			((uint32_t)(1<<4))	/**< An encoder phase error interrupt */
-#define QEI_INTFLAG_ENCLK_Int		((uint32_t)(1<<5))	/**< An encoder clock pulse was detected interrupt */
-#define QEI_INTFLAG_POS0_Int		((uint32_t)(1<<6))	/**< position 0 compare value is equal to the
-														current position interrupt */
-#define QEI_INTFLAG_POS1_Int		((uint32_t)(1<<7))	/**< position 1 compare value is equal to the
-														current position interrupt */
-#define QEI_INTFLAG_POS2_Int		((uint32_t)(1<<8))	/**< position 2 compare value is equal to the
-														current position interrupt */
-#define QEI_INTFLAG_REV_Int			((uint32_t)(1<<9))	/**< Index compare value is equal to the current
-														index count interrupt */
-#define QEI_INTFLAG_POS0REV_Int		((uint32_t)(1<<10))	/**< Combined position 0 and revolution count interrupt */
-#define QEI_INTFLAG_POS1REV_Int		((uint32_t)(1<<11))	/**< Combined position 1 and revolution count interrupt */
-#define QEI_INTFLAG_POS2REV_Int		((uint32_t)(1<<12))	/**< Combined position 2 and revolution count interrupt */
-
-/**
- * @}
- */
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup QEI_Private_Macros QEI Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/* Quadrature Encoder Interface Control Register Definition --------------------- */
-/*********************************************************************//**
- * Macro defines for QEI Control register
- **********************************************************************/
-#define QEI_CON_RESP		((uint32_t)(1<<0))		/**< Reset position counter */
-#define QEI_CON_RESPI		((uint32_t)(1<<1))		/**< Reset Posistion Counter on Index */
-#define QEI_CON_RESV		((uint32_t)(1<<2))		/**< Reset Velocity */
-#define QEI_CON_RESI		((uint32_t)(1<<3))		/**< Reset Index Counter */
-#define QEI_CON_BITMASK		((uint32_t)(0x0F))		/**< QEI Control register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Configuration register
- **********************************************************************/
-#define QEI_CONF_DIRINV		((uint32_t)(1<<0))		/**< Direction Invert */
-#define QEI_CONF_SIGMODE	((uint32_t)(1<<1))		/**< Signal mode */
-#define QEI_CONF_CAPMODE	((uint32_t)(1<<2))		/**< Capture mode */
-#define QEI_CONF_INVINX		((uint32_t)(1<<3))		/**< Invert index */
-#define QEI_CONF_BITMASK	((uint32_t)(0x0F))		/**< QEI Configuration register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Status register
- **********************************************************************/
-#define QEI_STAT_DIR		((uint32_t)(1<<0))		/**< Direction bit */
-#define QEI_STAT_BITMASK	((uint32_t)(1<<0))		/**< QEI status register bit-mask */
-
-/* Quadrature Encoder Interface Interrupt registers definitions --------------------- */
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Status register
- **********************************************************************/
-#define QEI_INTSTAT_INX_Int			((uint32_t)(1<<0))	/**< Indicates that an index pulse was detected */
-#define QEI_INTSTAT_TIM_Int			((uint32_t)(1<<1))	/**< Indicates that a velocity timer overflow occurred */
-#define QEI_INTSTAT_VELC_Int		((uint32_t)(1<<2))	/**< Indicates that capture velocity is less than compare velocity */
-#define QEI_INTSTAT_DIR_Int			((uint32_t)(1<<3))	/**< Indicates that a change of direction was detected */
-#define QEI_INTSTAT_ERR_Int			((uint32_t)(1<<4))	/**< Indicates that an encoder phase error was detected */
-#define QEI_INTSTAT_ENCLK_Int		((uint32_t)(1<<5))	/**< Indicates that and encoder clock pulse was detected */
-#define QEI_INTSTAT_POS0_Int		((uint32_t)(1<<6))	/**< Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_INTSTAT_POS1_Int		((uint32_t)(1<<7))	/**< Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_INTSTAT_POS2_Int		((uint32_t)(1<<8))	/**< Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_INTSTAT_REV_Int			((uint32_t)(1<<9))	/**< Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_INTSTAT_POS0REV_Int		((uint32_t)(1<<10))	/**< Combined position 0 and revolution count interrupt. Set when
-														both the POS0_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_POS1REV_Int		((uint32_t)(1<<11))	/**< Combined position 1 and revolution count interrupt. Set when
-														both the POS1_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_POS2REV_Int		((uint32_t)(1<<12))	/**< Combined position 2 and revolution count interrupt. Set when
-														both the POS2_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Status register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Set register
- **********************************************************************/
-#define QEI_INTSET_INX_Int			((uint32_t)(1<<0))	/**< Set Bit Indicates that an index pulse was detected */
-#define QEI_INTSET_TIM_Int			((uint32_t)(1<<1))	/**< Set Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTSET_VELC_Int			((uint32_t)(1<<2))	/**< Set Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTSET_DIR_Int			((uint32_t)(1<<3))	/**< Set Bit Indicates that a change of direction was detected */
-#define QEI_INTSET_ERR_Int			((uint32_t)(1<<4))	/**< Set Bit Indicates that an encoder phase error was detected */
-#define QEI_INTSET_ENCLK_Int		((uint32_t)(1<<5))	/**< Set Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTSET_POS0_Int			((uint32_t)(1<<6))	/**< Set Bit Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_INTSET_POS1_Int			((uint32_t)(1<<7))	/**< Set Bit Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_INTSET_POS2_Int			((uint32_t)(1<<8))	/**< Set Bit Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_INTSET_REV_Int			((uint32_t)(1<<9))	/**< Set Bit Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_INTSET_POS0REV_Int		((uint32_t)(1<<10))	/**< Set Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTSET_POS1REV_Int		((uint32_t)(1<<11))	/**< Set Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTSET_POS2REV_Int		((uint32_t)(1<<12))	/**< Set Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTSET_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Set register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Clear register
- **********************************************************************/
-#define QEI_INTCLR_INX_Int			((uint32_t)(1<<0))	/**< Clear Bit Indicates that an index pulse was detected */
-#define QEI_INTCLR_TIM_Int			((uint32_t)(1<<1))	/**< Clear Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTCLR_VELC_Int			((uint32_t)(1<<2))	/**< Clear Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTCLR_DIR_Int			((uint32_t)(1<<3))	/**< Clear Bit Indicates that a change of direction was detected */
-#define QEI_INTCLR_ERR_Int			((uint32_t)(1<<4))	/**< Clear Bit Indicates that an encoder phase error was detected */
-#define QEI_INTCLR_ENCLK_Int		((uint32_t)(1<<5))	/**< Clear Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTCLR_POS0_Int			((uint32_t)(1<<6))	/**< Clear Bit Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_INTCLR_POS1_Int			((uint32_t)(1<<7))	/**< Clear Bit Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_INTCLR_POS2_Int			((uint32_t)(1<<8))	/**< Clear Bit Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_INTCLR_REV_Int			((uint32_t)(1<<9))	/**< Clear Bit Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_INTCLR_POS0REV_Int		((uint32_t)(1<<10))	/**< Clear Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTCLR_POS1REV_Int		((uint32_t)(1<<11))	/**< Clear Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTCLR_POS2REV_Int		((uint32_t)(1<<12))	/**< Clear Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTCLR_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Clear register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Enable register
- **********************************************************************/
-#define QEI_INTEN_INX_Int			((uint32_t)(1<<0))	/**< Enabled Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_INTEN_TIM_Int			((uint32_t)(1<<1))	/**< Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTEN_VELC_Int			((uint32_t)(1<<2))	/**< Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTEN_DIR_Int			((uint32_t)(1<<3))	/**< Enabled Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_INTEN_ERR_Int			((uint32_t)(1<<4))	/**< Enabled Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_INTEN_ENCLK_Int			((uint32_t)(1<<5))	/**< Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTEN_POS0_Int			((uint32_t)(1<<6))	/**< Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_INTEN_POS1_Int			((uint32_t)(1<<7))	/**< Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_INTEN_POS2_Int			((uint32_t)(1<<8))	/**< Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_INTEN_REV_Int			((uint32_t)(1<<9))	/**< Enabled Interrupt Bit Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_INTEN_POS0REV_Int		((uint32_t)(1<<10))	/**< Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTEN_POS1REV_Int		((uint32_t)(1<<11))	/**< Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTEN_POS2REV_Int		((uint32_t)(1<<12))	/**< Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTEN_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Enable register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Enable Set register
- **********************************************************************/
-#define QEI_IESET_INX_Int			((uint32_t)(1<<0))	/**< Set Enable Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_IESET_TIM_Int			((uint32_t)(1<<1))	/**< Set Enable Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_IESET_VELC_Int			((uint32_t)(1<<2))	/**< Set Enable Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_IESET_DIR_Int			((uint32_t)(1<<3))	/**< Set Enable Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_IESET_ERR_Int			((uint32_t)(1<<4))	/**< Set Enable Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_IESET_ENCLK_Int			((uint32_t)(1<<5))	/**< Set Enable Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_IESET_POS0_Int			((uint32_t)(1<<6))	/**< Set Enable Interrupt Bit Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_IESET_POS1_Int			((uint32_t)(1<<7))	/**< Set Enable Interrupt Bit Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_IESET_POS2_Int			((uint32_t)(1<<8))	/**< Set Enable Interrupt Bit Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_IESET_REV_Int			((uint32_t)(1<<9))	/**< Set Enable Interrupt Bit Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_IESET_POS0REV_Int		((uint32_t)(1<<10))	/**< Set Enable Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_IESET_POS1REV_Int		((uint32_t)(1<<11))	/**< Set Enable Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_IESET_POS2REV_Int		((uint32_t)(1<<12))	/**< Set Enable Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_IESET_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Enable Set register bit-mask */
-
-/*********************************************************************//**
- * Macro defines for QEI Interrupt Enable Clear register
- **********************************************************************/
-#define QEI_IECLR_INX_Int			((uint32_t)(1<<0))	/**< Clear Enabled Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_IECLR_TIM_Int			((uint32_t)(1<<1))	/**< Clear Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_IECLR_VELC_Int			((uint32_t)(1<<2))	/**< Clear Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_IECLR_DIR_Int			((uint32_t)(1<<3))	/**< Clear Enabled Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_IECLR_ERR_Int			((uint32_t)(1<<4))	/**< Clear Enabled Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_IECLR_ENCLK_Int			((uint32_t)(1<<5))	/**< Clear Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_IECLR_POS0_Int			((uint32_t)(1<<6))	/**< Clear Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
-														current position */
-#define QEI_IECLR_POS1_Int			((uint32_t)(1<<7))	/**< Clear Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
-														current position */
-#define QEI_IECLR_POS2_Int			((uint32_t)(1<<8))	/**< Clear Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
-														current position */
-#define QEI_IECLR_REV_Int			((uint32_t)(1<<9))	/**< Clear Enabled Interrupt Bit Indicates that the index compare value is equal to the current
-														index count */
-#define QEI_IECLR_POS0REV_Int		((uint32_t)(1<<10))	/**< Clear Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_IECLR_POS1REV_Int		((uint32_t)(1<<11))	/**< Clear Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_IECLR_POS2REV_Int		((uint32_t)(1<<12))	/**< Clear Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_IECLR_BITMASK			((uint32_t)(0x1FFF))	/**< QEI Interrupt Enable Clear register bit-mask */
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/* Macro check QEI peripheral */
-#define PARAM_QEIx(n)	((n==LPC_QEI))
-
-/* Macro check QEI reset type */
-#define PARAM_QEI_RESET(n)	((n==QEI_CON_RESP) \
-|| (n==QEI_RESET_POSOnIDX) \
-|| (n==QEI_RESET_VEL) \
-|| (n==QEI_RESET_IDX))
-
-/* Macro check QEI Direction invert mode */
-#define PARAM_QEI_DIRINV(n)	((n==QEI_DIRINV_NONE) || (n==QEI_DIRINV_CMPL))
-
-/* Macro check QEI signal mode */
-#define PARAM_QEI_SIGNALMODE(n)	((n==QEI_SIGNALMODE_QUAD) || (n==QEI_SIGNALMODE_CLKDIR))
-
-/* Macro check QEI Capture mode */
-#define PARAM_QEI_CAPMODE(n)	((n==QEI_CAPMODE_2X) || (n==QEI_CAPMODE_4X))
-
-/* Macro check QEI Invert index mode */
-#define PARAM_QEI_INVINX(n)		((n==QEI_INVINX_NONE) || (n==QEI_INVINX_EN))
-
-/* Macro check QEI Direction invert mode */
-#define PARAM_QEI_TIMERRELOAD(n)	((n==QEI_TIMERRELOAD_TICKVAL) || (n==QEI_TIMERRELOAD_USVAL))
-
-/* Macro check QEI status type */
-#define PARAM_QEI_STATUS(n)		((n==QEI_STATUS_DIR))
-
-/* Macro check QEI combine position type */
-#define PARAM_QEI_COMPPOS_CH(n)		((n==QEI_COMPPOS_CH_0) || (n==QEI_COMPPOS_CH_1) || (n==QEI_COMPPOS_CH_2))
-
-/* Macro check QEI interrupt flag type */
-#define PARAM_QEI_INTFLAG(n)	((n==QEI_INTFLAG_INX_Int) \
-|| (n==QEI_INTFLAG_TIM_Int) \
-|| (n==QEI_INTFLAG_VELC_Int) \
-|| (n==QEI_INTFLAG_DIR_Int) \
-|| (n==QEI_INTFLAG_ERR_Int) \
-|| (n==QEI_INTFLAG_ENCLK_Int) \
-|| (n==QEI_INTFLAG_POS0_Int) \
-|| (n==QEI_INTFLAG_POS1_Int) \
-|| (n==QEI_INTFLAG_POS2_Int) \
-|| (n==QEI_INTFLAG_REV_Int) \
-|| (n==QEI_INTFLAG_POS0REV_Int) \
-|| (n==QEI_INTFLAG_POS1REV_Int) \
-|| (n==QEI_INTFLAG_POS2REV_Int))
-/**
- * @}
- */
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup QEI_Public_Types QEI Public Types
- * @{
- */
-
-/**
- * @brief QEI Configuration structure type definition
- */
-typedef struct {
-	uint32_t DirectionInvert	:1; 	/**< Direction invert option:
-										- QEI_DIRINV_NONE: QEI Direction is normal
-										- QEI_DIRINV_CMPL: QEI Direction is complemented
-										*/
-	uint32_t SignalMode			:1; 	/**< Signal mode Option:
-										- QEI_SIGNALMODE_QUAD: Signal is in Quadrature phase mode
-										- QEI_SIGNALMODE_CLKDIR: Signal is in Clock/Direction mode
-										*/
-	uint32_t CaptureMode		:1;		/**< Capture Mode Option:
-										- QEI_CAPMODE_2X: Only Phase-A edges are counted (2X)
-										- QEI_CAPMODE_4X: BOTH Phase-A and Phase-B edges are counted (4X)
-										*/
-	uint32_t InvertIndex		:1; 	/**< Invert Index Option:
-										- QEI_INVINX_NONE: the sense of the index input is normal
-										- QEI_INVINX_EN: inverts the sense of the index input
-										*/
-} QEI_CFG_Type;
-
-/**
- * @brief Timer Reload Configuration structure type definition
- */
-typedef struct {
-
-	uint8_t ReloadOption;		/**< Velocity Timer Reload Option, should be:
-								- QEI_TIMERRELOAD_TICKVAL: Reload value in absolute value
-								- QEI_TIMERRELOAD_USVAL: Reload value in microsecond value
-								*/
-	uint8_t Reserved[3];
-	uint32_t ReloadValue;		/**< Velocity Timer Reload Value, 32-bit long, should be matched
-								with Velocity Timer Reload Option
-								*/
-} QEI_RELOADCFG_Type;
-
-/**
- * @}
- */
-
-
-
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup QEI_Public_Functions QEI Public Functions
- * @{
- */
-
-void QEI_Reset(LPC_QEI_TypeDef *QEIx, uint32_t ulResetType);
-void QEI_Init(LPC_QEI_TypeDef *QEIx, QEI_CFG_Type *QEI_ConfigStruct);
-void QEI_ConfigStructInit(QEI_CFG_Type *QIE_InitStruct);
-void QEI_DeInit(LPC_QEI_TypeDef *QEIx);
-FlagStatus QEI_GetStatus(LPC_QEI_TypeDef *QEIx, uint32_t ulFlagType);
-uint32_t QEI_GetPosition(LPC_QEI_TypeDef *QEIx);
-void QEI_SetMaxPosition(LPC_QEI_TypeDef *QEIx, uint32_t ulMaxPos);
-void QEI_SetPositionComp(LPC_QEI_TypeDef *QEIx, uint8_t bPosCompCh, uint32_t ulPosComp);
-uint32_t QEI_GetIndex(LPC_QEI_TypeDef *QEIx);
-void QEI_SetIndexComp(LPC_QEI_TypeDef *QEIx, uint32_t ulIndexComp);
-void QEI_SetTimerReload(LPC_QEI_TypeDef *QEIx, QEI_RELOADCFG_Type *QEIReloadStruct);
-uint32_t QEI_GetTimer(LPC_QEI_TypeDef *QEIx);
-uint32_t QEI_GetVelocity(LPC_QEI_TypeDef *QEIx);
-uint32_t QEI_GetVelocityCap(LPC_QEI_TypeDef *QEIx);
-void QEI_SetVelocityComp(LPC_QEI_TypeDef *QEIx, uint32_t ulVelComp);
-void QEI_SetDigiFilter(LPC_QEI_TypeDef *QEIx, uint32_t ulSamplingPulse);
-FlagStatus QEI_GetIntStatus(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType);
-void QEI_IntCmd(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType, FunctionalState NewState);
-void QEI_IntSet(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType);
-void QEI_IntClear(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType);
-uint32_t QEI_CalculateRPM(LPC_QEI_TypeDef *QEIx, uint32_t ulVelCapValue, uint32_t ulPPR);
-
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_QEI_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rit.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rit.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_rit.h				2010-05-21
-*//**
-* @file		lpc17xx_rit.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for RIT firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup RIT RIT (Repetitive Interrupt Timer)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_RIT_H_
-#define LPC17XX_RIT_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup RIT_Private_Macros RIT Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for RIT control register
- **********************************************************************/
-/**	Set interrupt flag when the counter value equals the masked compare value */
-#define RIT_CTRL_INTEN	((uint32_t) (1))
-/** Set timer enable clear to 0 when the counter value equals the masked compare value  */
-#define RIT_CTRL_ENCLR 	((uint32_t) _BIT(1))
-/** Set timer enable on debug */
-#define RIT_CTRL_ENBR	((uint32_t) _BIT(2))
-/** Set timer enable */
-#define RIT_CTRL_TEN	((uint32_t) _BIT(3))
-
-/** Macro to determine if it is valid RIT peripheral */
-#define PARAM_RITx(n)	(((uint32_t *)n)==((uint32_t *)LPC_RIT))
-/**
- * @}
- */
-
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup RIT_Public_Functions RIT Public Functions
- * @{
- */
-/* RIT Init/DeInit functions */
-void RIT_Init(LPC_RIT_TypeDef *RITx);
-void RIT_DeInit(LPC_RIT_TypeDef *RITx);
-
-/* RIT config timer functions */
-void RIT_TimerConfig(LPC_RIT_TypeDef *RITx, uint32_t time_interval);
-
-/* Enable/Disable RIT functions */
-void RIT_TimerClearCmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState);
-void RIT_Cmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState);
-void RIT_TimerDebugCmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState);
-
-/* RIT Interrupt functions */
-IntStatus RIT_GetIntStatus(LPC_RIT_TypeDef *RITx);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_RIT_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rtc.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_rtc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,308 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_rtc.h				2010-05-21
-*//**
-* @file		lpc17xx_rtc.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for RTC firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup RTC RTC (Real Time Clock)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_RTC_H_
-#define LPC17XX_RTC_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup RTC_Private_Macros RTC Private Macros
- * @{
- */
-
-/* ----------------------- BIT DEFINITIONS ----------------------------------- */
-/* Miscellaneous register group --------------------------------------------- */
-/**********************************************************************
-* ILR register definitions
-**********************************************************************/
-/** ILR register mask */
-#define RTC_ILR_BITMASK			((0x00000003))
-/** Bit inform the source interrupt is counter increment*/
-#define RTC_IRL_RTCCIF			((1<<0))
-/** Bit inform the source interrupt is alarm match*/
-#define RTC_IRL_RTCALF			((1<<1))
-
-/**********************************************************************
-* CCR register definitions
-**********************************************************************/
-/** CCR register mask */
-#define RTC_CCR_BITMASK			((0x00000013))
-/** Clock enable */
-#define RTC_CCR_CLKEN			((1<<0))
-/** Clock reset */
-#define RTC_CCR_CTCRST			((1<<1))
-/** Calibration counter enable */
-#define RTC_CCR_CCALEN			((1<<4))
-
-/**********************************************************************
-* CIIR register definitions
-**********************************************************************/
-/** Counter Increment Interrupt bit for second */
-#define RTC_CIIR_IMSEC			((1<<0))
-/** Counter Increment Interrupt bit for minute */
-#define RTC_CIIR_IMMIN			((1<<1))
-/** Counter Increment Interrupt bit for hour */
-#define RTC_CIIR_IMHOUR			((1<<2))
-/** Counter Increment Interrupt bit for day of month */
-#define RTC_CIIR_IMDOM			((1<<3))
-/** Counter Increment Interrupt bit for day of week */
-#define RTC_CIIR_IMDOW			((1<<4))
-/** Counter Increment Interrupt bit for day of year */
-#define RTC_CIIR_IMDOY			((1<<5))
-/** Counter Increment Interrupt bit for month */
-#define RTC_CIIR_IMMON			((1<<6))
-/** Counter Increment Interrupt bit for year */
-#define RTC_CIIR_IMYEAR			((1<<7))
-/** CIIR bit mask */
-#define RTC_CIIR_BITMASK		((0xFF))
-
-/**********************************************************************
-* AMR register definitions
-**********************************************************************/
-/** Counter Increment Select Mask bit for second */
-#define RTC_AMR_AMRSEC			((1<<0))
-/** Counter Increment Select Mask bit for minute */
-#define RTC_AMR_AMRMIN			((1<<1))
-/** Counter Increment Select Mask bit for hour */
-#define RTC_AMR_AMRHOUR			((1<<2))
-/** Counter Increment Select Mask bit for day of month */
-#define RTC_AMR_AMRDOM			((1<<3))
-/** Counter Increment Select Mask bit for day of week */
-#define RTC_AMR_AMRDOW			((1<<4))
-/** Counter Increment Select Mask bit for day of year */
-#define RTC_AMR_AMRDOY			((1<<5))
-/** Counter Increment Select Mask bit for month */
-#define RTC_AMR_AMRMON			((1<<6))
-/** Counter Increment Select Mask bit for year */
-#define RTC_AMR_AMRYEAR			((1<<7))
-/** AMR bit mask */
-#define RTC_AMR_BITMASK			((0xFF))
-
-/**********************************************************************
-* RTC_AUX register definitions
-**********************************************************************/
-/** RTC Oscillator Fail detect flag */
-#define RTC_AUX_RTC_OSCF		((1<<4))
-
-/**********************************************************************
-* RTC_AUXEN register definitions
-**********************************************************************/
-/** Oscillator Fail Detect interrupt enable*/
-#define RTC_AUXEN_RTC_OSCFEN	((1<<4))
-
-/* Consolidated time register group ----------------------------------- */
-/**********************************************************************
-* Consolidated Time Register 0 definitions
-**********************************************************************/
-#define RTC_CTIME0_SECONDS_MASK		((0x3F))
-#define RTC_CTIME0_MINUTES_MASK		((0x3F00))
-#define RTC_CTIME0_HOURS_MASK		((0x1F0000))
-#define RTC_CTIME0_DOW_MASK			((0x7000000))
-
-/**********************************************************************
-* Consolidated Time Register 1 definitions
-**********************************************************************/
-#define RTC_CTIME1_DOM_MASK			((0x1F))
-#define RTC_CTIME1_MONTH_MASK		((0xF00))
-#define RTC_CTIME1_YEAR_MASK		((0xFFF0000))
-
-/**********************************************************************
-* Consolidated Time Register 2 definitions
-**********************************************************************/
-#define RTC_CTIME2_DOY_MASK			((0xFFF))
-
-/**********************************************************************
-* Time Counter Group and Alarm register group
-**********************************************************************/
-/** SEC register mask */
-#define RTC_SEC_MASK			(0x0000003F)
-/** MIN register mask */
-#define RTC_MIN_MASK			(0x0000003F)
-/** HOUR register mask */
-#define RTC_HOUR_MASK			(0x0000001F)
-/** DOM register mask */
-#define RTC_DOM_MASK			(0x0000001F)
-/** DOW register mask */
-#define RTC_DOW_MASK			(0x00000007)
-/** DOY register mask */
-#define RTC_DOY_MASK			(0x000001FF)
-/** MONTH register mask */
-#define RTC_MONTH_MASK			(0x0000000F)
-/** YEAR register mask */
-#define RTC_YEAR_MASK			(0x00000FFF)
-
-#define RTC_SECOND_MAX		59 /*!< Maximum value of second */
-#define RTC_MINUTE_MAX		59 /*!< Maximum value of minute*/
-#define RTC_HOUR_MAX		23 /*!< Maximum value of hour*/
-#define RTC_MONTH_MIN		1 /*!< Minimum value of month*/
-#define RTC_MONTH_MAX		12 /*!< Maximum value of month*/
-#define RTC_DAYOFMONTH_MIN 	1 /*!< Minimum value of day of month*/
-#define RTC_DAYOFMONTH_MAX 	31 /*!< Maximum value of day of month*/
-#define RTC_DAYOFWEEK_MAX	6 /*!< Maximum value of day of week*/
-#define RTC_DAYOFYEAR_MIN	1 /*!< Minimum value of day of year*/
-#define RTC_DAYOFYEAR_MAX	366 /*!< Maximum value of day of year*/
-#define RTC_YEAR_MAX		4095 /*!< Maximum value of year*/
-
-/**********************************************************************
-* Calibration register
-**********************************************************************/
-/* Calibration register */
-/** Calibration value */
-#define RTC_CALIBRATION_CALVAL_MASK		((0x1FFFF))
-/** Calibration direction */
-#define RTC_CALIBRATION_LIBDIR			((1<<17))
-/** Calibration max value */
-#define RTC_CALIBRATION_MAX				((0x20000))
-/** Calibration definitions */
-#define RTC_CALIB_DIR_FORWARD			((uint8_t)(0))
-#define RTC_CALIB_DIR_BACKWARD			((uint8_t)(1))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid RTC peripheral */
-#define PARAM_RTCx(x)	(((uint32_t *)x)==((uint32_t *)LPC_RTC))
-
-/* Macro check RTC interrupt type */
-#define PARAM_RTC_INT(n)	((n==RTC_INT_COUNTER_INCREASE) || (n==RTC_INT_ALARM))
-
-/* Macro check RTC time type */
-#define PARAM_RTC_TIMETYPE(n)	((n==RTC_TIMETYPE_SECOND) || (n==RTC_TIMETYPE_MINUTE) \
-|| (n==RTC_TIMETYPE_HOUR) || (n==RTC_TIMETYPE_DAYOFWEEK) \
-|| (n==RTC_TIMETYPE_DAYOFMONTH) || (n==RTC_TIMETYPE_DAYOFYEAR) \
-|| (n==RTC_TIMETYPE_MONTH) || (n==RTC_TIMETYPE_YEAR))
-
-/* Macro check RTC calibration type */
-#define PARAM_RTC_CALIB_DIR(n)	((n==RTC_CALIB_DIR_FORWARD) || (n==RTC_CALIB_DIR_BACKWARD))
-
-/* Macro check RTC GPREG type */
-#define PARAM_RTC_GPREG_CH(n)	((n>=0) && (n<=4))
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup RTC_Public_Types RTC Public Types
- * @{
- */
-
-/** @brief Time structure definitions for easy manipulate the data */
-typedef struct {
-	uint32_t SEC; 		/*!< Seconds Register */
-	uint32_t MIN; 		/*!< Minutes Register */
-	uint32_t HOUR; 		/*!< Hours Register */
-	uint32_t DOM;		/*!< Day of Month Register */
-	uint32_t DOW; 		/*!< Day of Week Register */
-	uint32_t DOY; 		/*!< Day of Year Register */
-	uint32_t MONTH; 	/*!< Months Register */
-	uint32_t YEAR; 		/*!< Years Register */
-} RTC_TIME_Type;
-
-/** @brief RTC interrupt source */
-typedef enum {
-	RTC_INT_COUNTER_INCREASE = RTC_IRL_RTCCIF, 	/*!<  Counter Increment Interrupt */
-	RTC_INT_ALARM = RTC_IRL_RTCALF 				/*!< The alarm interrupt */
-} RTC_INT_OPT;
-
-
-/** @brief RTC time type option */
-typedef enum {
-	RTC_TIMETYPE_SECOND = 0, 		/*!< Second */
-	RTC_TIMETYPE_MINUTE = 1, 		/*!< Month */
-	RTC_TIMETYPE_HOUR = 2, 			/*!< Hour */
-	RTC_TIMETYPE_DAYOFWEEK = 3, 	/*!< Day of week */
-	RTC_TIMETYPE_DAYOFMONTH = 4, 	/*!< Day of month */
-	RTC_TIMETYPE_DAYOFYEAR = 5, 	/*!< Day of year */
-	RTC_TIMETYPE_MONTH = 6, 		/*!< Month */
-	RTC_TIMETYPE_YEAR = 7 			/*!< Year */
-} RTC_TIMETYPE_Num;
-
-/**
- * @}
- */
-
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup RTC_Public_Functions RTC Public Functions
- * @{
- */
-
-void RTC_Init (LPC_RTC_TypeDef *RTCx);
-void RTC_DeInit(LPC_RTC_TypeDef *RTCx);
-void RTC_ResetClockTickCounter(LPC_RTC_TypeDef *RTCx);
-void RTC_Cmd (LPC_RTC_TypeDef *RTCx, FunctionalState NewState);
-void RTC_CntIncrIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t CntIncrIntType, \
-								FunctionalState NewState);
-void RTC_AlarmIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t AlarmTimeType, \
-								FunctionalState NewState);
-void RTC_SetTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t TimeValue);
-uint32_t RTC_GetTime(LPC_RTC_TypeDef *RTCx, uint32_t Timetype);
-void RTC_SetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime);
-void RTC_GetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime);
-void RTC_SetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t ALValue);
-uint32_t RTC_GetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype);
-void RTC_SetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime);
-void RTC_GetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime);
-IntStatus RTC_GetIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType);
-void RTC_ClearIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType);
-void RTC_CalibCounterCmd(LPC_RTC_TypeDef *RTCx, FunctionalState NewState);
-void RTC_CalibConfig(LPC_RTC_TypeDef *RTCx, uint32_t CalibValue, uint8_t CalibDir);
-void RTC_WriteGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel, uint32_t Value);
-uint32_t RTC_ReadGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_RTC_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_spi.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_spi.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,322 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_spi.h				2010-05-21
-*//**
-* @file		lpc17xx_spi.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for SPI firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup SPI SPI (Serial Peripheral Interface)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_SPI_H_
-#define LPC17XX_SPI_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup SPI_Public_Macros SPI Public Macros
- * @{
- */
-
-/*********************************************************************//**
- * SPI configuration parameter defines
- **********************************************************************/
-/** Clock phase control bit */
-#define SPI_CPHA_FIRST			((uint32_t)(0))
-#define SPI_CPHA_SECOND			((uint32_t)(1<<3))
-
-/** Clock polarity control bit */
-#define SPI_CPOL_HI				((uint32_t)(0))
-#define SPI_CPOL_LO				((uint32_t)(1<<4))
-
-/** SPI master mode enable */
-#define SPI_SLAVE_MODE			((uint32_t)(0))
-#define SPI_MASTER_MODE			((uint32_t)(1<<5))
-
-/** LSB enable bit */
-#define SPI_DATA_MSB_FIRST		((uint32_t)(0))
-#define SPI_DATA_LSB_FIRST		((uint32_t)(1<<6))
-
-/** SPI data bit number defines */
-#define SPI_DATABIT_16		SPI_SPCR_BITS(0)		/*!< Databit number = 16 */
-#define SPI_DATABIT_8		SPI_SPCR_BITS(0x08) 	/*!< Databit number = 8 */
-#define SPI_DATABIT_9		SPI_SPCR_BITS(0x09) 	/*!< Databit number = 9 */
-#define SPI_DATABIT_10		SPI_SPCR_BITS(0x0A) 	/*!< Databit number = 10 */
-#define SPI_DATABIT_11		SPI_SPCR_BITS(0x0B) 	/*!< Databit number = 11 */
-#define SPI_DATABIT_12		SPI_SPCR_BITS(0x0C) 	/*!< Databit number = 12 */
-#define SPI_DATABIT_13		SPI_SPCR_BITS(0x0D) 	/*!< Databit number = 13 */
-#define SPI_DATABIT_14		SPI_SPCR_BITS(0x0E) 	/*!< Databit number = 14 */
-#define SPI_DATABIT_15		SPI_SPCR_BITS(0x0F) 	/*!< Databit number = 15 */
-
-/*********************************************************************//**
- * SPI Status Flag defines
- **********************************************************************/
-/** Slave abort */
-#define SPI_STAT_ABRT		SPI_SPSR_ABRT
-/** Mode fault */
-#define SPI_STAT_MODF		SPI_SPSR_MODF
-/** Read overrun */
-#define SPI_STAT_ROVR		SPI_SPSR_ROVR
-/** Write collision */
-#define SPI_STAT_WCOL		SPI_SPSR_WCOL
-/** SPI transfer complete flag */
-#define SPI_STAT_SPIF		SPI_SPSR_SPIF
-
-/* SPI Status Implementation definitions */
-#define SPI_STAT_DONE		(1UL<<8)		/**< Done */
-#define SPI_STAT_ERROR		(1UL<<9)		/**< Error */
-
-/**
- * @}
- */
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup SPI_Private_Macros SPI Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for SPI Control Register
- **********************************************************************/
-/** Bit enable, the SPI controller sends and receives the number
- * of bits selected by bits 11:8 */
-#define SPI_SPCR_BIT_EN			((uint32_t)(1<<2))
-/** Clock phase control bit */
-#define SPI_SPCR_CPHA_SECOND	((uint32_t)(1<<3))
-/** Clock polarity control bit */
-#define SPI_SPCR_CPOL_LOW 		((uint32_t)(1<<4))
-/** SPI master mode enable */
-#define SPI_SPCR_MSTR		 	((uint32_t)(1<<5))
-/** LSB enable bit */
-#define SPI_SPCR_LSBF			((uint32_t)(1<<6))
-/** SPI interrupt enable bit */
-#define SPI_SPCR_SPIE			((uint32_t)(1<<7))
-/**  When bit 2 of this register is 1, this field controls the
-number of bits per transfer */
-#define SPI_SPCR_BITS(n)		((n==0) ? ((uint32_t)0) : ((uint32_t)((n&0x0F)<<8)))
-/** SPI Control bit mask */
-#define SPI_SPCR_BITMASK		((uint32_t)(0xFFC))
-
-/*********************************************************************//**
- * Macro defines for  SPI Status Register
- **********************************************************************/
-/** Slave abort */
-#define SPI_SPSR_ABRT		((uint32_t)(1<<3))
-/** Mode fault */
-#define SPI_SPSR_MODF		((uint32_t)(1<<4))
-/** Read overrun */
-#define SPI_SPSR_ROVR		((uint32_t)(1<<5))
-/** Write collision */
-#define SPI_SPSR_WCOL		((uint32_t)(1<<6))
-/** SPI transfer complete flag */
-#define SPI_SPSR_SPIF 		((uint32_t)(1<<7))
-/** SPI Status bit mask */
-#define SPI_SPSR_BITMASK	((uint32_t)(0xF8))
-
-/*********************************************************************//**
- * Macro defines for SPI Data Register
- **********************************************************************/
-/** SPI Data low bit-mask */
-#define SPI_SPDR_LO_MASK	((uint32_t)(0xFF))
-/** SPI Data high bit-mask */
-#define SPI_SPDR_HI_MASK	((uint32_t)(0xFF00))
-/** SPI Data bit-mask */
-#define SPI_SPDR_BITMASK	((uint32_t)(0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for SPI Clock Counter Register
- **********************************************************************/
-/** SPI clock counter setting */
-#define SPI_SPCCR_COUNTER(n) 	((uint32_t)(n&0xFF))
-/** SPI clock counter bit-mask */
-#define SPI_SPCCR_BITMASK		((uint32_t)(0xFF))
-
-/***********************************************************************
- * Macro defines for SPI Test Control Register
- **********************************************************************/
-/** SPI Test bit */
-#define SPI_SPTCR_TEST_MASK	((uint32_t)(0xFE))
-/** SPI Test register bit mask */
-#define SPI_SPTCR_BITMASK	((uint32_t)(0xFE))
-
-/*********************************************************************//**
- * Macro defines for SPI Test Status Register
- **********************************************************************/
-/** Slave abort */
-#define SPI_SPTSR_ABRT		((uint32_t)(1<<3))
-/** Mode fault */
-#define SPI_SPTSR_MODF		((uint32_t)(1<<4))
-/** Read overrun */
-#define SPI_SPTSR_ROVR		((uint32_t)(1<<5))
-/** Write collision */
-#define SPI_SPTSR_WCOL		((uint32_t)(1<<6))
-/** SPI transfer complete flag */
-#define SPI_SPTSR_SPIF 		((uint32_t)(1<<7))
-/** SPI Status bit mask */
-#define SPI_SPTSR_MASKBIT	((uint32_t)(0xF8))
-
-/*********************************************************************//**
- * Macro defines for SPI Interrupt Register
- **********************************************************************/
-/** SPI interrupt flag */
-#define SPI_SPINT_INTFLAG 	((uint32_t)(1<<0))
-/** SPI interrupt register bit mask */
-#define SPI_SPINT_BITMASK 	((uint32_t)(0x01))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid SPI port number */
-#define PARAM_SPIx(n)	(((uint32_t *)n)==((uint32_t *)LPC_SPI))
-
-/** Macro check Clock phase control mode */
-#define PARAM_SPI_CPHA(n) 	((n==SPI_CPHA_FIRST) || (n==SPI_CPHA_SECOND))
-
-/** Macro check Clock polarity control mode */
-#define PARAM_SPI_CPOL(n)	((n==SPI_CPOL_HI) || (n==SPI_CPOL_LO))
-
-/** Macro check master/slave mode */
-#define PARAM_SPI_MODE(n)	((n==SPI_SLAVE_MODE) || (n==SPI_MASTER_MODE))
-
-/** Macro check LSB/MSB mode */
-#define PARAM_SPI_DATA_ORDER(n) ((n==SPI_DATA_MSB_FIRST) || (n==SPI_DATA_LSB_FIRST))
-
-/** Macro check databit value */
-#define PARAM_SPI_DATABIT(n)	((n==SPI_DATABIT_16) || (n==SPI_DATABIT_8) \
-|| (n==SPI_DATABIT_9) || (n==SPI_DATABIT_10) \
-|| (n==SPI_DATABIT_11) || (n==SPI_DATABIT_12) \
-|| (n==SPI_DATABIT_13) || (n==SPI_DATABIT_14) \
-|| (n==SPI_DATABIT_15))
-
-/** Macro check status flag */
-#define PARAM_SPI_STAT(n)	((n==SPI_STAT_ABRT) || (n==SPI_STAT_MODF) \
-|| (n==SPI_STAT_ROVR) || (n==SPI_STAT_WCOL) \
-|| (n==SPI_STAT_SPIF))
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup SPI_Public_Types SPI Public Types
- * @{
- */
-
-/** @brief SPI configuration structure */
-typedef struct {
-	uint32_t Databit; 		/** Databit number, should be SPI_DATABIT_x,
-							where x is in range from 8 - 16 */
-	uint32_t CPHA;			/** Clock phase, should be:
-							- SPI_CPHA_FIRST: first clock edge
-							- SPI_CPHA_SECOND: second clock edge */
-	uint32_t CPOL;			/** Clock polarity, should be:
-							- SPI_CPOL_HI: high level
-							- SPI_CPOL_LO: low level */
-	uint32_t Mode;			/** SPI mode, should be:
-							- SPI_MASTER_MODE: Master mode
-							- SPI_SLAVE_MODE: Slave mode */
-	uint32_t DataOrder;		/** Data order, should be:
-							- SPI_DATA_MSB_FIRST: MSB first
-							- SPI_DATA_LSB_FIRST: LSB first */
-	uint32_t ClockRate;		/** Clock rate,in Hz, should not exceed
-							(SPI peripheral clock)/8 */
-} SPI_CFG_Type;
-
-
-/**
- * @brief SPI Transfer Type definitions
- */
-typedef enum {
-	SPI_TRANSFER_POLLING = 0,	/**< Polling transfer */
-	SPI_TRANSFER_INTERRUPT		/**< Interrupt transfer */
-} SPI_TRANSFER_Type;
-
-/**
- * @brief SPI Data configuration structure definitions
- */
-typedef struct {
-	void *tx_data;				/**< Pointer to transmit data */
-	void *rx_data;				/**< Pointer to transmit data */
-	uint32_t length;			/**< Length of transfer data */
-	uint32_t counter;			/**< Data counter index */
-	uint32_t status;			/**< Current status of SPI activity */
-} SPI_DATA_SETUP_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup SPI_Public_Functions SPI Public Functions
- * @{
- */
-
-/* SPI Init/DeInit functions ---------*/
-void SPI_Init(LPC_SPI_TypeDef *SPIx, SPI_CFG_Type *SPI_ConfigStruct);
-void SPI_DeInit(LPC_SPI_TypeDef *SPIx);
-void SPI_SetClock (LPC_SPI_TypeDef *SPIx, uint32_t target_clock);
-void SPI_ConfigStructInit(SPI_CFG_Type *SPI_InitStruct);
-
-/* SPI transfer functions ------------*/
-void SPI_SendData(LPC_SPI_TypeDef *SPIx, uint16_t Data);
-uint16_t SPI_ReceiveData(LPC_SPI_TypeDef *SPIx);
-int32_t SPI_ReadWrite (LPC_SPI_TypeDef *SPIx, SPI_DATA_SETUP_Type *dataCfg, SPI_TRANSFER_Type xfType);
-
-/* SPI Interrupt functions ---------*/
-void SPI_IntCmd(LPC_SPI_TypeDef *SPIx, FunctionalState NewState);
-IntStatus SPI_GetIntStatus (LPC_SPI_TypeDef *SPIx);
-void SPI_ClearIntPending(LPC_SPI_TypeDef *SPIx);
-
-/* SPI get information functions-----*/
-uint8_t SPI_GetDataSize (LPC_SPI_TypeDef *SPIx);
-uint32_t SPI_GetStatus(LPC_SPI_TypeDef *SPIx);
-FlagStatus SPI_CheckStatus (uint32_t inputSPIStatus,  uint8_t SPIStatus);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_SPI_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_ssp.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_ssp.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_ssp.h				2010-06-18
-*//**
-* @file		lpc17xx_ssp.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for SSP firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup SSP SSP (Synchronous Serial Port)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_SSP_H_
-#define LPC17XX_SSP_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup SSP_Public_Macros SSP Public Macros
- * @{
- */
-
-/*********************************************************************//**
- * SSP configuration parameter defines
- **********************************************************************/
-/** Clock phase control bit */
-#define SSP_CPHA_FIRST			((uint32_t)(0))
-#define SSP_CPHA_SECOND			SSP_CR0_CPHA_SECOND
-
-
-/** Clock polarity control bit */
-/* There's no bug here!!!
- * - If bit[6] in SSPnCR0 is 0: SSP controller maintains the bus clock low between frames.
- * That means the active clock is in HI state.
- * - If bit[6] in SSPnCR0 is 1 (SSP_CR0_CPOL_HI): SSP controller maintains the bus clock
- * high between frames. That means the active clock is in LO state.
- */
-#define SSP_CPOL_HI				((uint32_t)(0))
-#define SSP_CPOL_LO				SSP_CR0_CPOL_HI
-
-/** SSP master mode enable */
-#define SSP_SLAVE_MODE			SSP_CR1_SLAVE_EN
-#define SSP_MASTER_MODE			((uint32_t)(0))
-
-/** SSP data bit number defines */
-#define SSP_DATABIT_4		SSP_CR0_DSS(4) 			/*!< Databit number = 4 */
-#define SSP_DATABIT_5		SSP_CR0_DSS(5) 			/*!< Databit number = 5 */
-#define SSP_DATABIT_6		SSP_CR0_DSS(6) 			/*!< Databit number = 6 */
-#define SSP_DATABIT_7		SSP_CR0_DSS(7) 			/*!< Databit number = 7 */
-#define SSP_DATABIT_8		SSP_CR0_DSS(8) 			/*!< Databit number = 8 */
-#define SSP_DATABIT_9		SSP_CR0_DSS(9) 			/*!< Databit number = 9 */
-#define SSP_DATABIT_10		SSP_CR0_DSS(10) 		/*!< Databit number = 10 */
-#define SSP_DATABIT_11		SSP_CR0_DSS(11) 		/*!< Databit number = 11 */
-#define SSP_DATABIT_12		SSP_CR0_DSS(12) 		/*!< Databit number = 12 */
-#define SSP_DATABIT_13		SSP_CR0_DSS(13) 		/*!< Databit number = 13 */
-#define SSP_DATABIT_14		SSP_CR0_DSS(14) 		/*!< Databit number = 14 */
-#define SSP_DATABIT_15		SSP_CR0_DSS(15) 		/*!< Databit number = 15 */
-#define SSP_DATABIT_16		SSP_CR0_DSS(16) 		/*!< Databit number = 16 */
-
-/** SSP Frame Format definition */
-/** Motorola SPI mode */
-#define SSP_FRAME_SPI		SSP_CR0_FRF_SPI
-/** TI synchronous serial mode */
-#define SSP_FRAME_TI		SSP_CR0_FRF_TI
-/** National Micro-wire mode */
-#define SSP_FRAME_MICROWIRE	SSP_CR0_FRF_MICROWIRE
-
-/*********************************************************************//**
- * SSP Status defines
- **********************************************************************/
-/** SSP status TX FIFO Empty bit */
-#define SSP_STAT_TXFIFO_EMPTY		SSP_SR_TFE
-/** SSP status TX FIFO not full bit */
-#define SSP_STAT_TXFIFO_NOTFULL		SSP_SR_TNF
-/** SSP status RX FIFO not empty bit */
-#define SSP_STAT_RXFIFO_NOTEMPTY	SSP_SR_RNE
-/** SSP status RX FIFO full bit */
-#define SSP_STAT_RXFIFO_FULL		SSP_SR_RFF
-/** SSP status SSP Busy bit */
-#define SSP_STAT_BUSY				SSP_SR_BSY
-
-/*********************************************************************//**
- * SSP Interrupt Configuration defines
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_INTCFG_ROR		SSP_IMSC_ROR
-/** Receive TimeOut */
-#define SSP_INTCFG_RT		SSP_IMSC_RT
-/** Rx FIFO is at least half full */
-#define SSP_INTCFG_RX		SSP_IMSC_RX
-/** Tx FIFO is at least half empty */
-#define SSP_INTCFG_TX		SSP_IMSC_TX
-
-/*********************************************************************//**
- * SSP Configured Interrupt Status defines
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_INTSTAT_ROR		SSP_MIS_ROR
-/** Receive TimeOut */
-#define SSP_INTSTAT_RT		SSP_MIS_RT
-/** Rx FIFO is at least half full */
-#define SSP_INTSTAT_RX		SSP_MIS_RX
-/** Tx FIFO is at least half empty */
-#define SSP_INTSTAT_TX		SSP_MIS_TX
-
-/*********************************************************************//**
- * SSP Raw Interrupt Status defines
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_INTSTAT_RAW_ROR		SSP_RIS_ROR
-/** Receive TimeOut */
-#define SSP_INTSTAT_RAW_RT		SSP_RIS_RT
-/** Rx FIFO is at least half full */
-#define SSP_INTSTAT_RAW_RX		SSP_RIS_RX
-/** Tx FIFO is at least half empty */
-#define SSP_INTSTAT_RAW_TX		SSP_RIS_TX
-
-/*********************************************************************//**
- * SSP Interrupt Clear defines
- **********************************************************************/
-/** Writing a 1 to this bit clears the "frame was received when
- * RxFIFO was full" interrupt */
-#define SSP_INTCLR_ROR		SSP_ICR_ROR
-/** Writing a 1 to this bit clears the "Rx FIFO was not empty and
- * has not been read for a timeout period" interrupt */
-#define SSP_INTCLR_RT		SSP_ICR_RT
-
-/*********************************************************************//**
- * SSP DMA defines
- **********************************************************************/
-/** SSP bit for enabling RX DMA */
-#define SSP_DMA_RX		SSP_DMA_RXDMA_EN
-/** SSP bit for enabling TX DMA */
-#define SSP_DMA_TX		SSP_DMA_TXDMA_EN
-
-/* SSP Status Implementation definitions */
-#define SSP_STAT_DONE		(1UL<<8)		/**< Done */
-#define SSP_STAT_ERROR		(1UL<<9)		/**< Error */
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup SSP_Private_Macros SSP Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for CR0 register
- **********************************************************************/
-/** SSP data size select, must be 4 bits to 16 bits */
-#define SSP_CR0_DSS(n)   		((uint32_t)((n-1)&0xF))
-/** SSP control 0 Motorola SPI mode */
-#define SSP_CR0_FRF_SPI  		((uint32_t)(0<<4))
-/** SSP control 0 TI synchronous serial mode */
-#define SSP_CR0_FRF_TI   		((uint32_t)(1<<4))
-/** SSP control 0 National Micro-wire mode */
-#define SSP_CR0_FRF_MICROWIRE  	((uint32_t)(2<<4))
-/** SPI clock polarity bit (used in SPI mode only), (1) = maintains the
-   bus clock high between frames, (0) = low */
-#define SSP_CR0_CPOL_HI		((uint32_t)(1<<6))
-/** SPI clock out phase bit (used in SPI mode only), (1) = captures data
-   on the second clock transition of the frame, (0) = first */
-#define SSP_CR0_CPHA_SECOND	((uint32_t)(1<<7))
-/** SSP serial clock rate value load macro, divider rate is
-   PERIPH_CLK / (cpsr * (SCR + 1)) */
-#define SSP_CR0_SCR(n)   	((uint32_t)((n&0xFF)<<8))
-/** SSP CR0 bit mask */
-#define SSP_CR0_BITMASK		((uint32_t)(0xFFFF))
-
-/*********************************************************************//**
- * Macro defines for CR1 register
- **********************************************************************/
-/** SSP control 1 loopback mode enable bit */
-#define SSP_CR1_LBM_EN		((uint32_t)(1<<0))
-/** SSP control 1 enable bit */
-#define SSP_CR1_SSP_EN		((uint32_t)(1<<1))
-/** SSP control 1 slave enable */
-#define SSP_CR1_SLAVE_EN	((uint32_t)(1<<2))
-/** SSP control 1 slave out disable bit, disables transmit line in slave
-   mode */
-#define SSP_CR1_SO_DISABLE	((uint32_t)(1<<3))
-/** SSP CR1 bit mask */
-#define SSP_CR1_BITMASK		((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro defines for DR register
- **********************************************************************/
-/** SSP data bit mask */
-#define SSP_DR_BITMASK(n)   ((n)&0xFFFF)
-
-/*********************************************************************//**
- * Macro defines for SR register
- **********************************************************************/
-/** SSP status TX FIFO Empty bit */
-#define SSP_SR_TFE      ((uint32_t)(1<<0))
-/** SSP status TX FIFO not full bit */
-#define SSP_SR_TNF      ((uint32_t)(1<<1))
-/** SSP status RX FIFO not empty bit */
-#define SSP_SR_RNE      ((uint32_t)(1<<2))
-/** SSP status RX FIFO full bit */
-#define SSP_SR_RFF      ((uint32_t)(1<<3))
-/** SSP status SSP Busy bit */
-#define SSP_SR_BSY      ((uint32_t)(1<<4))
-/** SSP SR bit mask */
-#define SSP_SR_BITMASK	((uint32_t)(0x1F))
-
-/*********************************************************************//**
- * Macro defines for CPSR register
- **********************************************************************/
-/** SSP clock prescaler */
-#define SSP_CPSR_CPDVSR(n) 	((uint32_t)(n&0xFF))
-/** SSP CPSR bit mask */
-#define SSP_CPSR_BITMASK	((uint32_t)(0xFF))
-
-/*********************************************************************//**
- * Macro define for (IMSC) Interrupt Mask Set/Clear registers
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_IMSC_ROR	((uint32_t)(1<<0))
-/** Receive TimeOut */
-#define SSP_IMSC_RT		((uint32_t)(1<<1))
-/** Rx FIFO is at least half full */
-#define SSP_IMSC_RX		((uint32_t)(1<<2))
-/** Tx FIFO is at least half empty */
-#define SSP_IMSC_TX		((uint32_t)(1<<3))
-/** IMSC bit mask */
-#define SSP_IMSC_BITMASK	((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro define for (RIS) Raw Interrupt Status registers
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_RIS_ROR		((uint32_t)(1<<0))
-/** Receive TimeOut */
-#define SSP_RIS_RT		((uint32_t)(1<<1))
-/** Rx FIFO is at least half full */
-#define SSP_RIS_RX		((uint32_t)(1<<2))
-/** Tx FIFO is at least half empty */
-#define SSP_RIS_TX		((uint32_t)(1<<3))
-/** RIS bit mask */
-#define SSP_RIS_BITMASK	((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro define for (MIS) Masked Interrupt Status registers
- **********************************************************************/
-/** Receive Overrun */
-#define SSP_MIS_ROR		((uint32_t)(1<<0))
-/** Receive TimeOut */
-#define SSP_MIS_RT		((uint32_t)(1<<1))
-/** Rx FIFO is at least half full */
-#define SSP_MIS_RX		((uint32_t)(1<<2))
-/** Tx FIFO is at least half empty */
-#define SSP_MIS_TX		((uint32_t)(1<<3))
-/** MIS bit mask */
-#define SSP_MIS_BITMASK	((uint32_t)(0x0F))
-
-/*********************************************************************//**
- * Macro define for (ICR) Interrupt Clear registers
- **********************************************************************/
-/** Writing a 1 to this bit clears the "frame was received when
- * RxFIFO was full" interrupt */
-#define SSP_ICR_ROR		((uint32_t)(1<<0))
-/** Writing a 1 to this bit clears the "Rx FIFO was not empty and
- * has not been read for a timeout period" interrupt */
-#define SSP_ICR_RT		((uint32_t)(1<<1))
-/** ICR bit mask */
-#define SSP_ICR_BITMASK	((uint32_t)(0x03))
-
-/*********************************************************************//**
- * Macro defines for DMACR register
- **********************************************************************/
-/** SSP bit for enabling RX DMA */
-#define SSP_DMA_RXDMA_EN  	((uint32_t)(1<<0))
-/** SSP bit for enabling TX DMA */
-#define SSP_DMA_TXDMA_EN  	((uint32_t)(1<<1))
-/** DMACR	bit mask */
-#define SSP_DMA_BITMASK		((uint32_t)(0x03))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid SSP port number */
-#define PARAM_SSPx(n)	((((uint32_t *)n)==((uint32_t *)LPC_SSP0)) \
-|| (((uint32_t *)n)==((uint32_t *)LPC_SSP1)))
-
-/** Macro check clock phase control mode */
-#define PARAM_SSP_CPHA(n) 		((n==SSP_CPHA_FIRST) || (n==SSP_CPHA_SECOND))
-
-/** Macro check clock polarity mode */
-#define PARAM_SSP_CPOL(n)		((n==SSP_CPOL_HI) || (n==SSP_CPOL_LO))
-
-/* Macro check master/slave mode */
-#define PARAM_SSP_MODE(n)		((n==SSP_SLAVE_MODE) || (n==SSP_MASTER_MODE))
-
-/* Macro check databit value */
-#define PARAM_SSP_DATABIT(n) 	((n==SSP_DATABIT_4) || (n==SSP_DATABIT_5) \
-|| (n==SSP_DATABIT_6) || (n==SSP_DATABIT_16) \
-|| (n==SSP_DATABIT_7) || (n==SSP_DATABIT_8) \
-|| (n==SSP_DATABIT_9) || (n==SSP_DATABIT_10) \
-|| (n==SSP_DATABIT_11) || (n==SSP_DATABIT_12) \
-|| (n==SSP_DATABIT_13) || (n==SSP_DATABIT_14) \
-|| (n==SSP_DATABIT_15))
-
-/* Macro check frame type */
-#define PARAM_SSP_FRAME(n) ((n==SSP_FRAME_SPI) || (n==SSP_FRAME_TI)\
-|| (n==SSP_FRAME_MICROWIRE))
-
-/* Macro check SSP status */
-#define PARAM_SSP_STAT(n) ((n==SSP_STAT_TXFIFO_EMPTY) || (n==SSP_STAT_TXFIFO_NOTFULL) \
-|| (n==SSP_STAT_RXFIFO_NOTEMPTY) || (n==SSP_STAT_RXFIFO_FULL) \
-|| (n==SSP_STAT_BUSY))
-
-/* Macro check interrupt configuration */
-#define PARAM_SSP_INTCFG(n)	((n==SSP_INTCFG_ROR) || (n==SSP_INTCFG_RT) \
-|| (n==SSP_INTCFG_RX) || (n==SSP_INTCFG_TX))
-
-/* Macro check interrupt status value */
-#define PARAM_SSP_INTSTAT(n) ((n==SSP_INTSTAT_ROR) || (n==SSP_INTSTAT_RT) \
-|| (n==SSP_INTSTAT_RX) || (n==SSP_INTSTAT_TX))
-
-/* Macro check interrupt status raw value */
-#define PARAM_SSP_INTSTAT_RAW(n)	((n==SSP_INTSTAT_RAW_ROR) || (n==SSP_INTSTAT_RAW_RT) \
-|| (n==SSP_INTSTAT_RAW_RX) || (n==SSP_INTSTAT_RAW_TX))
-
-/* Macro check interrupt clear mode */
-#define PARAM_SSP_INTCLR(n)	((n==SSP_INTCLR_ROR) || (n==SSP_INTCLR_RT))
-
-/* Macro check DMA mode */
-#define PARAM_SSP_DMA(n)	((n==SSP_DMA_TX) || (n==SSP_DMA_RX))
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup SSP_Public_Types SSP Public Types
- * @{
- */
-
-/** @brief SSP configuration structure */
-typedef struct {
-	uint32_t Databit; 		/** Databit number, should be SSP_DATABIT_x,
-							where x is in range from 4 - 16 */
-	uint32_t CPHA;			/** Clock phase, should be:
-							- SSP_CPHA_FIRST: first clock edge
-							- SSP_CPHA_SECOND: second clock edge */
-	uint32_t CPOL;			/** Clock polarity, should be:
-							- SSP_CPOL_HI: high level
-							- SSP_CPOL_LO: low level */
-	uint32_t Mode;			/** SSP mode, should be:
-							- SSP_MASTER_MODE: Master mode
-							- SSP_SLAVE_MODE: Slave mode */
-	uint32_t FrameFormat;	/** Frame Format:
-							- SSP_FRAME_SPI: Motorola SPI frame format
-							- SSP_FRAME_TI: TI frame format
-							- SSP_FRAME_MICROWIRE: National Microwire frame format */
-	uint32_t ClockRate;		/** Clock rate,in Hz */
-} SSP_CFG_Type;
-
-/**
- * @brief SSP Transfer Type definitions
- */
-typedef enum {
-	SSP_TRANSFER_POLLING = 0,	/**< Polling transfer */
-	SSP_TRANSFER_INTERRUPT		/**< Interrupt transfer */
-} SSP_TRANSFER_Type;
-
-/**
- * @brief SPI Data configuration structure definitions
- */
-typedef struct {
-	void *tx_data;				/**< Pointer to transmit data */
-	uint32_t tx_cnt;			/**< Transmit counter */
-	void *rx_data;				/**< Pointer to transmit data */
-	uint32_t rx_cnt;			/**< Receive counter */
-	uint32_t length;			/**< Length of transfer data */
-	uint32_t status;			/**< Current status of SSP activity */
-} SSP_DATA_SETUP_Type;
-
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup SSP_Public_Functions SSP Public Functions
- * @{
- */
-
-/* SSP Init/DeInit functions --------------------------------------------------*/
-void SSP_Init(LPC_SSP_TypeDef *SSPx, SSP_CFG_Type *SSP_ConfigStruct);
-void SSP_DeInit(LPC_SSP_TypeDef* SSPx);
-
-/* SSP configure functions ----------------------------------------------------*/
-void SSP_ConfigStructInit(SSP_CFG_Type *SSP_InitStruct);
-
-/* SSP enable/disable functions -----------------------------------------------*/
-void SSP_Cmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState);
-void SSP_LoopBackCmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState);
-void SSP_SlaveOutputCmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState);
-void SSP_DMACmd(LPC_SSP_TypeDef *SSPx, uint32_t DMAMode, FunctionalState NewState);
-
-/* SSP get information functions ----------------------------------------------*/
-FlagStatus SSP_GetStatus(LPC_SSP_TypeDef* SSPx, uint32_t FlagType);
-uint8_t SSP_GetDataSize(LPC_SSP_TypeDef* SSPx);
-IntStatus SSP_GetRawIntStatus(LPC_SSP_TypeDef *SSPx, uint32_t RawIntType);
-uint32_t SSP_GetRawIntStatusReg(LPC_SSP_TypeDef *SSPx);
-IntStatus SSP_GetIntStatus (LPC_SSP_TypeDef *SSPx, uint32_t IntType);
-
-/* SSP transfer data functions ------------------------------------------------*/
-void SSP_SendData(LPC_SSP_TypeDef* SSPx, uint16_t Data);
-uint16_t SSP_ReceiveData(LPC_SSP_TypeDef* SSPx);
-int32_t SSP_ReadWrite (LPC_SSP_TypeDef *SSPx, SSP_DATA_SETUP_Type *dataCfg, \
-						SSP_TRANSFER_Type xfType);
-
-/* SSP IRQ function ------------------------------------------------------------*/
-void SSP_IntConfig(LPC_SSP_TypeDef *SSPx, uint32_t IntType, FunctionalState NewState);
-void SSP_ClearIntPending(LPC_SSP_TypeDef *SSPx, uint32_t IntType);
-
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_SSP_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_systick.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_systick.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_systick.h				2010-05-21
-*//**
-* @file		lpc17xx_systick.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for SYSTICK firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup SYSTICK SYSTICK (System Tick)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_SYSTICK_H_
-#define LPC17XX_SYSTICK_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup SYSTICK_Private_Macros SYSTICK Private Macros
- * @{
- */
-/*********************************************************************//**
- * Macro defines for System Timer Control and status (STCTRL) register
- **********************************************************************/
-#define ST_CTRL_ENABLE		((uint32_t)(1<<0))
-#define ST_CTRL_TICKINT		((uint32_t)(1<<1))
-#define ST_CTRL_CLKSOURCE	((uint32_t)(1<<2))
-#define ST_CTRL_COUNTFLAG	((uint32_t)(1<<16))
-
-/*********************************************************************//**
- * Macro defines for System Timer Reload value (STRELOAD) register
- **********************************************************************/
-#define ST_RELOAD_RELOAD(n)		((uint32_t)(n & 0x00FFFFFF))
-
-/*********************************************************************//**
- * Macro defines for System Timer Current value (STCURRENT) register
- **********************************************************************/
-#define ST_RELOAD_CURRENT(n)	((uint32_t)(n & 0x00FFFFFF))
-
-/*********************************************************************//**
- * Macro defines for System Timer Calibration value (STCALIB) register
- **********************************************************************/
-#define ST_CALIB_TENMS(n)		((uint32_t)(n & 0x00FFFFFF))
-#define ST_CALIB_SKEW			((uint32_t)(1<<30))
-#define ST_CALIB_NOREF			((uint32_t)(1<<31))
-
-#define CLKSOURCE_EXT			((uint32_t)(0))
-#define CLKSOURCE_CPU			((uint32_t)(1))
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup SYSTICK_Public_Functions SYSTICK Public Functions
- * @{
- */
-
-void SYSTICK_InternalInit(uint32_t time);
-void SYSTICK_ExternalInit(uint32_t freq, uint32_t time);
-
-void SYSTICK_Cmd(FunctionalState NewState);
-void SYSTICK_IntCmd(FunctionalState NewState);
-uint32_t SYSTICK_GetCurrentValue(void);
-void SYSTICK_ClearCounterFlag(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* LPC17XX_SYSTICK_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_timer.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_timer.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_timer.h				2010-05-21
-*//**
-* @file		lpc17xx_timer.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for Timer firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup TIM TIM (Timer)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef __LPC17XX_TIMER_H_
-#define __LPC17XX_TIMER_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup TIM_Private_Macros TIM Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/**********************************************************************
-** Interrupt information
-**********************************************************************/
-/** Macro to clean interrupt pending */
-#define TIM_IR_CLR(n) _BIT(n)
-
-/**********************************************************************
-** Timer interrupt register definitions
-**********************************************************************/
-/** Macro for getting a timer match interrupt bit */
-#define TIM_MATCH_INT(n)		(_BIT(n & 0x0F))
-/** Macro for getting a capture event interrupt bit */
-#define TIM_CAP_INT(n)     (_BIT(((n & 0x0F) + 4)))
-
-/**********************************************************************
-* Timer control register definitions
-**********************************************************************/
-/** Timer/counter enable bit */
-#define TIM_ENABLE			((uint32_t)(1<<0))
-/** Timer/counter reset bit */
-#define TIM_RESET			((uint32_t)(1<<1))
-/** Timer control bit mask */
-#define TIM_TCR_MASKBIT		((uint32_t)(3))
-
-/**********************************************************************
-* Timer match control register definitions
-**********************************************************************/
-/** Bit location for interrupt on MRx match, n = 0 to 3 */
-#define TIM_INT_ON_MATCH(n)      	(_BIT((n * 3)))
-/** Bit location for reset on MRx match, n = 0 to 3 */
-#define TIM_RESET_ON_MATCH(n)    	(_BIT(((n * 3) + 1)))
-/** Bit location for stop on MRx match, n = 0 to 3 */
-#define TIM_STOP_ON_MATCH(n)     	(_BIT(((n * 3) + 2)))
-/** Timer Match control bit mask */
-#define TIM_MCR_MASKBIT			   ((uint32_t)(0x0FFF))
-/** Timer Match control bit mask for specific channel*/
-#define	TIM_MCR_CHANNEL_MASKBIT(n)		((uint32_t)(7<<(n*3)))
-
-/**********************************************************************
-* Timer capture control register definitions
-**********************************************************************/
-/** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */
-#define TIM_CAP_RISING(n)   	(_BIT((n * 3)))
-/** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */
-#define TIM_CAP_FALLING(n)   	(_BIT(((n * 3) + 1)))
-/** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */
-#define TIM_INT_ON_CAP(n)    	(_BIT(((n * 3) + 2)))
-/** Mask bit for rising and falling edge bit */
-#define TIM_EDGE_MASK(n)		(_SBF((n * 3), 0x03))
-/** Timer capture control bit mask */
-#define TIM_CCR_MASKBIT			((uint32_t)(0x3F))
-/** Timer Capture control bit mask for specific channel*/
-#define	TIM_CCR_CHANNEL_MASKBIT(n)		((uint32_t)(7<<(n*3)))
-
-/**********************************************************************
-* Timer external match register definitions
-**********************************************************************/
-/** Bit location for output state change of MAT.n when external match
-   happens, n = 0 to 3 */
-#define TIM_EM(n)    			_BIT(n)
-/** Output state change of MAT.n when external match happens: no change */
-#define TIM_EM_NOTHING    	((uint8_t)(0x0))
-/** Output state change of MAT.n when external match happens: low */
-#define TIM_EM_LOW         	((uint8_t)(0x1))
-/** Output state change of MAT.n when external match happens: high */
-#define TIM_EM_HIGH        	((uint8_t)(0x2))
-/** Output state change of MAT.n when external match happens: toggle */
-#define TIM_EM_TOGGLE      	((uint8_t)(0x3))
-/** Macro for setting for the MAT.n change state bits */
-#define TIM_EM_SET(n,s) 	(_SBF(((n << 1) + 4), (s & 0x03)))
-/** Mask for the MAT.n change state bits */
-#define TIM_EM_MASK(n) 		(_SBF(((n << 1) + 4), 0x03))
-/** Timer external match bit mask */
-#define TIM_EMR_MASKBIT	0x0FFF
-
-/**********************************************************************
-* Timer Count Control Register definitions
-**********************************************************************/
-/** Mask to get the Counter/timer mode bits */
-#define TIM_CTCR_MODE_MASK  0x3
-/** Mask to get the count input select bits */
-#define TIM_CTCR_INPUT_MASK 0xC
-/** Timer Count control bit mask */
-#define TIM_CTCR_MASKBIT	0xF
-#define TIM_COUNTER_MODE ((uint8_t)(1))
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/** Macro to determine if it is valid TIMER peripheral */
-#define PARAM_TIMx(n)	((((uint32_t *)n)==((uint32_t *)LPC_TIM0)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM1)) \
-|| (((uint32_t *)n)==((uint32_t *)LPC_TIM2)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM3)))
-
-/* Macro check interrupt type */
-#define PARAM_TIM_INT_TYPE(TYPE)	((TYPE ==TIM_MR0_INT)||(TYPE ==TIM_MR1_INT)\
-||(TYPE ==TIM_MR2_INT)||(TYPE ==TIM_MR3_INT)\
-||(TYPE ==TIM_CR0_INT)||(TYPE ==TIM_CR1_INT))
-
-/* Macro check TIMER mode */
-#define PARAM_TIM_MODE_OPT(MODE)	((MODE == TIM_TIMER_MODE)||(MODE == TIM_COUNTER_RISING_MODE)\
-|| (MODE == TIM_COUNTER_RISING_MODE)||(MODE == TIM_COUNTER_RISING_MODE))
-
-/* Macro check TIMER prescale value */
-#define PARAM_TIM_PRESCALE_OPT(OPT)	((OPT == TIM_PRESCALE_TICKVAL)||(OPT == TIM_PRESCALE_USVAL))
-
-/* Macro check TIMER counter intput mode */
-#define PARAM_TIM_COUNTER_INPUT_OPT(OPT)	((OPT == TIM_COUNTER_INCAP0)||(OPT == TIM_COUNTER_INCAP1))
-
-/* Macro check TIMER external match mode */
-#define PARAM_TIM_EXTMATCH_OPT(OPT)	((OPT == TIM_EXTMATCH_NOTHING)||(OPT == TIM_EXTMATCH_LOW)\
-||(OPT == TIM_EXTMATCH_HIGH)||(OPT == TIM_EXTMATCH_TOGGLE))
-
-/* Macro check TIMER external match mode */
-#define PARAM_TIM_CAP_MODE_OPT(OPT)	((OPT == TIM_CAPTURE_NONE)||(OPT == TIM_CAPTURE_RISING) \
-||(OPT == TIM_CAPTURE_FALLING)||(OPT == TIM_CAPTURE_ANY))
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup TIM_Public_Types TIM Public Types
- * @{
- */
-
-/***********************************************************************
- * Timer device enumeration
-**********************************************************************/
-/** @brief interrupt type */
-typedef enum
-{
-	TIM_MR0_INT =0, /*!< interrupt for Match channel 0*/
-	TIM_MR1_INT =1, /*!< interrupt for Match channel 1*/
-	TIM_MR2_INT =2, /*!< interrupt for Match channel 2*/
-	TIM_MR3_INT =3, /*!< interrupt for Match channel 3*/
-	TIM_CR0_INT =4, /*!< interrupt for Capture channel 0*/
-	TIM_CR1_INT =5 /*!< interrupt for Capture channel 1*/
-}TIM_INT_TYPE;
-
-/** @brief Timer/counter operating mode */
-typedef enum
-{
-	TIM_TIMER_MODE = 0,				/*!< Timer mode */
-	TIM_COUNTER_RISING_MODE,		/*!< Counter rising mode */
-	TIM_COUNTER_FALLING_MODE,		/*!< Counter falling mode */
-	TIM_COUNTER_ANY_MODE			/*!< Counter on both edges */
-} TIM_MODE_OPT;
-
-/** @brief Timer/Counter prescale option */
-typedef enum
-{
-	TIM_PRESCALE_TICKVAL = 0,		/*!< Prescale in absolute value */
-	TIM_PRESCALE_USVAL				/*!< Prescale in microsecond value */
-} TIM_PRESCALE_OPT;
-
-/** @brief Counter input option */
-typedef enum
-{
-	TIM_COUNTER_INCAP0 = 0,			/*!< CAPn.0 input pin for TIMERn */
-	TIM_COUNTER_INCAP1,				/*!< CAPn.1 input pin for TIMERn */
-} TIM_COUNTER_INPUT_OPT;
-
-/** @brief Timer/Counter external match option */
-typedef enum
-{
-	TIM_EXTMATCH_NOTHING = 0,		/*!< Do nothing for external output pin if match */
-	TIM_EXTMATCH_LOW,				/*!< Force external output pin to low if match */
-	TIM_EXTMATCH_HIGH,				/*!< Force external output pin to high if match */
-	TIM_EXTMATCH_TOGGLE				/*!< Toggle external output pin if match */
-}TIM_EXTMATCH_OPT;
-
-/** @brief Timer/counter capture mode options */
-typedef enum {
-	TIM_CAPTURE_NONE = 0,	/*!< No Capture */
-	TIM_CAPTURE_RISING,		/*!< Rising capture mode */
-	TIM_CAPTURE_FALLING,	/*!< Falling capture mode */
-	TIM_CAPTURE_ANY			/*!< On both edges */
-} TIM_CAP_MODE_OPT;
-
-/** @brief Configuration structure in TIMER mode */
-typedef struct
-{
-
-	uint8_t PrescaleOption;		/**< Timer Prescale option, should be:
-									- TIM_PRESCALE_TICKVAL: Prescale in absolute value
-									- TIM_PRESCALE_USVAL: Prescale in microsecond value
-									*/
-	uint8_t Reserved[3];		/**< Reserved */
-	uint32_t PrescaleValue;		/**< Prescale value */
-} TIM_TIMERCFG_Type;
-
-/** @brief Configuration structure in COUNTER mode */
-typedef struct {
-
-	uint8_t CounterOption;		/**< Counter Option, should be:
-								- TIM_COUNTER_INCAP0: CAPn.0 input pin for TIMERn
-								- TIM_COUNTER_INCAP1: CAPn.1 input pin for TIMERn
-								*/
-	uint8_t CountInputSelect;
-	uint8_t Reserved[2];
-} TIM_COUNTERCFG_Type;
-
-/** @brief Match channel configuration structure */
-typedef struct {
-	uint8_t MatchChannel;	/**< Match channel, should be in range
-							from 0..3 */
-	uint8_t IntOnMatch;		/**< Interrupt On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t StopOnMatch;	/**< Stop On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t ResetOnMatch;	/**< Reset On match, should be:
-							- ENABLE: Enable this function.
-							- DISABLE: Disable this function.
-							*/
-
-	uint8_t ExtMatchOutputType;	/**< External Match Output type, should be:
-							 -	 TIM_EXTMATCH_NOTHING:	Do nothing for external output pin if match
-							 -   TIM_EXTMATCH_LOW:	Force external output pin to low if match
-							 - 	 TIM_EXTMATCH_HIGH: Force external output pin to high if match
-							 -   TIM_EXTMATCH_TOGGLE: Toggle external output pin if match.
-							*/
-	uint8_t Reserved[3];	/** Reserved */
-	uint32_t MatchValue;	/** Match value */
-} TIM_MATCHCFG_Type;
-
-/** @brief Capture Input configuration structure */
-typedef struct {
-	uint8_t CaptureChannel;	/**< Capture channel, should be in range
-							from 0..1 */
-	uint8_t RisingEdge;		/**< caption rising edge, should be:
-							- ENABLE: Enable rising edge.
-							- DISABLE: Disable this function.
-							*/
-	uint8_t FallingEdge;		/**< caption falling edge, should be:
-							- ENABLE: Enable falling edge.
-							- DISABLE: Disable this function.
-								*/
-	uint8_t IntOnCaption;	/**< Interrupt On caption, should be:
-							- ENABLE: Enable interrupt function.
-							- DISABLE: Disable this function.
-							*/
-
-} TIM_CAPTURECFG_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup TIM_Public_Functions TIM Public Functions
- * @{
- */
-/* Init/DeInit TIM functions -----------*/
-void TIM_Init(LPC_TIM_TypeDef *TIMx, TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct);
-void TIM_DeInit(LPC_TIM_TypeDef *TIMx);
-
-/* TIM interrupt functions -------------*/
-void TIM_ClearIntPending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
-void TIM_ClearIntCapturePending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
-FlagStatus TIM_GetIntStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
-FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
-
-/* TIM configuration functions --------*/
-void TIM_ConfigStructInit(TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct);
-void TIM_ConfigMatch(LPC_TIM_TypeDef *TIMx, TIM_MATCHCFG_Type *TIM_MatchConfigStruct);
-void TIM_UpdateMatchValue(LPC_TIM_TypeDef *TIMx,uint8_t MatchChannel, uint32_t MatchValue);
-void TIM_SetMatchExt(LPC_TIM_TypeDef *TIMx,TIM_EXTMATCH_OPT ext_match );
-void TIM_ConfigCapture(LPC_TIM_TypeDef *TIMx, TIM_CAPTURECFG_Type *TIM_CaptureConfigStruct);
-void TIM_Cmd(LPC_TIM_TypeDef *TIMx, FunctionalState NewState);
-
-uint32_t TIM_GetCaptureValue(LPC_TIM_TypeDef *TIMx, TIM_COUNTER_INPUT_OPT CaptureChannel);
-void TIM_ResetCounter(LPC_TIM_TypeDef *TIMx);
-
-/**
- * @}
- */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LPC17XX_TIMER_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_uart.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_uart.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,650 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_uart.h				2010-06-18
-*//**
-* @file		lpc17xx_uart.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for UART firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup UART UART (Universal Asynchronous Receiver/Transmitter)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef __LPC17XX_UART_H
-#define __LPC17XX_UART_H
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup UART_Public_Macros  UART Public Macros
- * @{
- */
-
-/** UART time-out definitions in case of using Read() and Write function
- * with Blocking Flag mode
- */
-#define UART_BLOCKING_TIMEOUT			(0xFFFFFFFFUL)
-
-/**
- * @}
- */
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup UART_Private_Macros UART Private Macros
- * @{
- */
-
-/* Accepted Error baud rate value (in percent unit) */
-#define UART_ACCEPTED_BAUDRATE_ERROR	(3)			/*!< Acceptable UART baudrate error */
-
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/*********************************************************************//**
- * Macro defines for Macro defines for UARTn Receiver Buffer Register
- **********************************************************************/
-#define UART_RBR_MASKBIT   	((uint8_t)0xFF) 		/*!< UART Received Buffer mask bit (8 bits) */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UARTn Transmit Holding Register
- **********************************************************************/
-#define UART_THR_MASKBIT   	((uint8_t)0xFF) 		/*!< UART Transmit Holding mask bit (8 bits) */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UARTn Divisor Latch LSB register
- **********************************************************************/
-#define UART_LOAD_DLL(div)	((div) & 0xFF)	/**< Macro for loading least significant halfs of divisors */
-#define UART_DLL_MASKBIT	((uint8_t)0xFF)	/*!< Divisor latch LSB bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UARTn Divisor Latch MSB register
- **********************************************************************/
-#define UART_DLM_MASKBIT	((uint8_t)0xFF)			/*!< Divisor latch MSB bit mask */
-#define UART_LOAD_DLM(div)  (((div) >> 8) & 0xFF)	/**< Macro for loading most significant halfs of divisors */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART interrupt enable register
- **********************************************************************/
-#define UART_IER_RBRINT_EN		((uint32_t)(1<<0)) 	/*!< RBR Interrupt enable*/
-#define UART_IER_THREINT_EN		((uint32_t)(1<<1)) 	/*!< THR Interrupt enable*/
-#define UART_IER_RLSINT_EN		((uint32_t)(1<<2)) 	/*!< RX line status interrupt enable*/
-#define UART1_IER_MSINT_EN		((uint32_t)(1<<3))	/*!< Modem status interrupt enable */
-#define UART1_IER_CTSINT_EN		((uint32_t)(1<<7))	/*!< CTS1 signal transition interrupt enable */
-#define UART_IER_ABEOINT_EN		((uint32_t)(1<<8)) 	/*!< Enables the end of auto-baud interrupt */
-#define UART_IER_ABTOINT_EN		((uint32_t)(1<<9)) 	/*!< Enables the auto-baud time-out interrupt */
-#define UART_IER_BITMASK		((uint32_t)(0x307)) /*!< UART interrupt enable register bit mask */
-#define UART1_IER_BITMASK		((uint32_t)(0x38F)) /*!< UART1 interrupt enable register bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART interrupt identification register
- **********************************************************************/
-#define UART_IIR_INTSTAT_PEND	((uint32_t)(1<<0))	/*!<Interrupt Status - Active low */
-#define UART_IIR_INTID_RLS		((uint32_t)(3<<1)) 	/*!<Interrupt identification: Receive line status*/
-#define UART_IIR_INTID_RDA		((uint32_t)(2<<1)) 	/*!<Interrupt identification: Receive data available*/
-#define UART_IIR_INTID_CTI		((uint32_t)(6<<1)) 	/*!<Interrupt identification: Character time-out indicator*/
-#define UART_IIR_INTID_THRE		((uint32_t)(1<<1)) 	/*!<Interrupt identification: THRE interrupt*/
-#define UART1_IIR_INTID_MODEM	((uint32_t)(0<<1)) 	/*!<Interrupt identification: Modem interrupt*/
-#define UART_IIR_INTID_MASK		((uint32_t)(7<<1))	/*!<Interrupt identification: Interrupt ID mask */
-#define UART_IIR_FIFO_EN		((uint32_t)(3<<6)) 	/*!<These bits are equivalent to UnFCR[0] */
-#define UART_IIR_ABEO_INT		((uint32_t)(1<<8)) 	/*!< End of auto-baud interrupt */
-#define UART_IIR_ABTO_INT		((uint32_t)(1<<9)) 	/*!< Auto-baud time-out interrupt */
-#define UART_IIR_BITMASK		((uint32_t)(0x3CF))	/*!< UART interrupt identification register bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART FIFO control register
- **********************************************************************/
-#define UART_FCR_FIFO_EN		((uint8_t)(1<<0)) 	/*!< UART FIFO enable */
-#define UART_FCR_RX_RS			((uint8_t)(1<<1)) 	/*!< UART FIFO RX reset */
-#define UART_FCR_TX_RS			((uint8_t)(1<<2)) 	/*!< UART FIFO TX reset */
-#define UART_FCR_DMAMODE_SEL 	((uint8_t)(1<<3)) 	/*!< UART DMA mode selection */
-#define UART_FCR_TRG_LEV0		((uint8_t)(0)) 		/*!< UART FIFO trigger level 0: 1 character */
-#define UART_FCR_TRG_LEV1		((uint8_t)(1<<6)) 	/*!< UART FIFO trigger level 1: 4 character */
-#define UART_FCR_TRG_LEV2		((uint8_t)(2<<6)) 	/*!< UART FIFO trigger level 2: 8 character */
-#define UART_FCR_TRG_LEV3		((uint8_t)(3<<6)) 	/*!< UART FIFO trigger level 3: 14 character */
-#define UART_FCR_BITMASK		((uint8_t)(0xCF))	/*!< UART FIFO control bit mask */
-#define UART_TX_FIFO_SIZE		(16)
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART line control register
- **********************************************************************/
-#define UART_LCR_WLEN5     		((uint8_t)(0))   		/*!< UART 5 bit data mode */
-#define UART_LCR_WLEN6     		((uint8_t)(1<<0))   	/*!< UART 6 bit data mode */
-#define UART_LCR_WLEN7     		((uint8_t)(2<<0))   	/*!< UART 7 bit data mode */
-#define UART_LCR_WLEN8     		((uint8_t)(3<<0))   	/*!< UART 8 bit data mode */
-#define UART_LCR_STOPBIT_SEL	((uint8_t)(1<<2))   	/*!< UART Two Stop Bits Select */
-#define UART_LCR_PARITY_EN		((uint8_t)(1<<3))		/*!< UART Parity Enable */
-#define UART_LCR_PARITY_ODD		((uint8_t)(0))         	/*!< UART Odd Parity Select */
-#define UART_LCR_PARITY_EVEN	((uint8_t)(1<<4))		/*!< UART Even Parity Select */
-#define UART_LCR_PARITY_F_1		((uint8_t)(2<<4))		/*!< UART force 1 stick parity */
-#define UART_LCR_PARITY_F_0		((uint8_t)(3<<4))		/*!< UART force 0 stick parity */
-#define UART_LCR_BREAK_EN		((uint8_t)(1<<6))		/*!< UART Transmission Break enable */
-#define UART_LCR_DLAB_EN		((uint8_t)(1<<7))    	/*!< UART Divisor Latches Access bit enable */
-#define UART_LCR_BITMASK		((uint8_t)(0xFF))		/*!< UART line control bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART1 Modem Control Register
- **********************************************************************/
-#define UART1_MCR_DTR_CTRL		((uint8_t)(1<<0))		/*!< Source for modem output pin DTR */
-#define UART1_MCR_RTS_CTRL		((uint8_t)(1<<1))		/*!< Source for modem output pin RTS */
-#define UART1_MCR_LOOPB_EN		((uint8_t)(1<<4))		/*!< Loop back mode select */
-#define UART1_MCR_AUTO_RTS_EN	((uint8_t)(1<<6))		/*!< Enable Auto RTS flow-control */
-#define UART1_MCR_AUTO_CTS_EN	((uint8_t)(1<<7))		/*!< Enable Auto CTS flow-control */
-#define UART1_MCR_BITMASK		((uint8_t)(0x0F3))		/*!< UART1 bit mask value */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART line status register
- **********************************************************************/
-#define UART_LSR_RDR		((uint8_t)(1<<0)) 	/*!<Line status register: Receive data ready*/
-#define UART_LSR_OE			((uint8_t)(1<<1)) 	/*!<Line status register: Overrun error*/
-#define UART_LSR_PE			((uint8_t)(1<<2)) 	/*!<Line status register: Parity error*/
-#define UART_LSR_FE			((uint8_t)(1<<3)) 	/*!<Line status register: Framing error*/
-#define UART_LSR_BI			((uint8_t)(1<<4)) 	/*!<Line status register: Break interrupt*/
-#define UART_LSR_THRE		((uint8_t)(1<<5)) 	/*!<Line status register: Transmit holding register empty*/
-#define UART_LSR_TEMT		((uint8_t)(1<<6)) 	/*!<Line status register: Transmitter empty*/
-#define UART_LSR_RXFE		((uint8_t)(1<<7)) 	/*!<Error in RX FIFO*/
-#define UART_LSR_BITMASK	((uint8_t)(0xFF)) 	/*!<UART Line status bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART Modem (UART1 only) status register
- **********************************************************************/
-#define UART1_MSR_DELTA_CTS		((uint8_t)(1<<0))	/*!< Set upon state change of input CTS */
-#define UART1_MSR_DELTA_DSR		((uint8_t)(1<<1))	/*!< Set upon state change of input DSR */
-#define UART1_MSR_LO2HI_RI		((uint8_t)(1<<2))	/*!< Set upon low to high transition of input RI */
-#define UART1_MSR_DELTA_DCD		((uint8_t)(1<<3))	/*!< Set upon state change of input DCD */
-#define UART1_MSR_CTS			((uint8_t)(1<<4))	/*!< Clear To Send State */
-#define UART1_MSR_DSR			((uint8_t)(1<<5))	/*!< Data Set Ready State */
-#define UART1_MSR_RI			((uint8_t)(1<<6))	/*!< Ring Indicator State */
-#define UART1_MSR_DCD			((uint8_t)(1<<7))	/*!< Data Carrier Detect State */
-#define UART1_MSR_BITMASK		((uint8_t)(0xFF))	/*!< MSR register bit-mask value */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART Scratch Pad Register
- **********************************************************************/
-#define UART_SCR_BIMASK		((uint8_t)(0xFF))	/*!< UART Scratch Pad bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART Auto baudrate control register
- **********************************************************************/
-#define UART_ACR_START				((uint32_t)(1<<0))	/**< UART Auto-baud start */
-#define UART_ACR_MODE				((uint32_t)(1<<1))	/**< UART Auto baudrate Mode 1 */
-#define UART_ACR_AUTO_RESTART		((uint32_t)(1<<2))	/**< UART Auto baudrate restart */
-#define UART_ACR_ABEOINT_CLR		((uint32_t)(1<<8))	/**< UART End of auto-baud interrupt clear */
-#define UART_ACR_ABTOINT_CLR		((uint32_t)(1<<9))	/**< UART Auto-baud time-out interrupt clear */
-#define UART_ACR_BITMASK			((uint32_t)(0x307))	/**< UART Auto Baudrate register bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART IrDA control register
- **********************************************************************/
-#define UART_ICR_IRDAEN			((uint32_t)(1<<0))			/**< IrDA mode enable */
-#define UART_ICR_IRDAINV		((uint32_t)(1<<1))			/**< IrDA serial input inverted */
-#define UART_ICR_FIXPULSE_EN	((uint32_t)(1<<2))			/**< IrDA fixed pulse width mode */
-#define UART_ICR_PULSEDIV(n)	((uint32_t)((n&0x07)<<3))	/**< PulseDiv - Configures the pulse when FixPulseEn = 1 */
-#define UART_ICR_BITMASK		((uint32_t)(0x3F))			/*!< UART IRDA bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART Fractional divider register
- **********************************************************************/
-#define UART_FDR_DIVADDVAL(n)	((uint32_t)(n&0x0F))		/**< Baud-rate generation pre-scaler divisor */
-#define UART_FDR_MULVAL(n)		((uint32_t)((n<<4)&0xF0))	/**< Baud-rate pre-scaler multiplier value */
-#define UART_FDR_BITMASK		((uint32_t)(0xFF))			/**< UART Fractional Divider register bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART Tx Enable register
- **********************************************************************/
-#define UART_TER_TXEN			((uint8_t)(1<<7)) 		/*!< Transmit enable bit */
-#define UART_TER_BITMASK		((uint8_t)(0x80))		/**< UART Transmit Enable Register bit mask */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART1 RS485 Control register
- **********************************************************************/
-#define UART1_RS485CTRL_NMM_EN		((uint32_t)(1<<0))	/*!< RS-485/EIA-485 Normal Multi-drop Mode (NMM)
-														is disabled */
-#define UART1_RS485CTRL_RX_DIS		((uint32_t)(1<<1))	/*!< The receiver is disabled */
-#define UART1_RS485CTRL_AADEN		((uint32_t)(1<<2))	/*!< Auto Address Detect (AAD) is enabled */
-#define UART1_RS485CTRL_SEL_DTR		((uint32_t)(1<<3))	/*!< If direction control is enabled
-														(bit DCTRL = 1), pin DTR is used for direction control */
-#define UART1_RS485CTRL_DCTRL_EN	((uint32_t)(1<<4))	/*!< Enable Auto Direction Control */
-#define UART1_RS485CTRL_OINV_1		((uint32_t)(1<<5))	/*!< This bit reverses the polarity of the direction
-														control signal on the RTS (or DTR) pin. The direction control pin
-														will be driven to logic "1" when the transmitter has data to be sent */
-#define UART1_RS485CTRL_BITMASK		((uint32_t)(0x3F))	/**< RS485 control bit-mask value */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART1 RS-485 Address Match register
- **********************************************************************/
-#define UART1_RS485ADRMATCH_BITMASK ((uint8_t)(0xFF)) 	/**< Bit mask value */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART1 RS-485 Delay value register
- **********************************************************************/
-/* Macro defines for UART1 RS-485 Delay value register */
-#define UART1_RS485DLY_BITMASK		((uint8_t)(0xFF)) 	/** Bit mask value */
-
-/*********************************************************************//**
- * Macro defines for Macro defines for UART FIFO Level register
- **********************************************************************/
-#define UART_FIFOLVL_RXFIFOLVL(n)	((uint32_t)(n&0x0F))		/**< Reflects the current level of the UART receiver FIFO */
-#define UART_FIFOLVL_TXFIFOLVL(n)	((uint32_t)((n>>8)&0x0F))	/**< Reflects the current level of the UART transmitter FIFO */
-#define UART_FIFOLVL_BITMASK		((uint32_t)(0x0F0F))		/**< UART FIFO Level Register bit mask */
-
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-
-/** Macro to check the input UART_DATABIT parameters */
-#define PARAM_UART_DATABIT(databit)	((databit==UART_DATABIT_5) || (databit==UART_DATABIT_6)\
-|| (databit==UART_DATABIT_7) || (databit==UART_DATABIT_8))
-
-/** Macro to check the input UART_STOPBIT parameters */
-#define PARAM_UART_STOPBIT(stopbit)	((stopbit==UART_STOPBIT_1) || (stopbit==UART_STOPBIT_2))
-
-/** Macro to check the input UART_PARITY parameters */
-#define PARAM_UART_PARITY(parity)	((parity==UART_PARITY_NONE) || (parity==UART_PARITY_ODD) \
-|| (parity==UART_PARITY_EVEN) || (parity==UART_PARITY_SP_1) \
-|| (parity==UART_PARITY_SP_0))
-
-/** Macro to check the input UART_FIFO parameters */
-#define PARAM_UART_FIFO_LEVEL(fifo)	((fifo==UART_FIFO_TRGLEV0) \
-|| (fifo==UART_FIFO_TRGLEV1) || (fifo==UART_FIFO_TRGLEV2) \
-|| (fifo==UART_FIFO_TRGLEV3))
-
-/** Macro to check the input UART_INTCFG parameters */
-#define PARAM_UART_INTCFG(IntCfg)	((IntCfg==UART_INTCFG_RBR) || (IntCfg==UART_INTCFG_THRE) \
-|| (IntCfg==UART_INTCFG_RLS) || (IntCfg==UART_INTCFG_ABEO) \
-|| (IntCfg==UART_INTCFG_ABTO))
-
-/** Macro to check the input UART1_INTCFG parameters - expansion input parameter for UART1 */
-#define PARAM_UART1_INTCFG(IntCfg)	((IntCfg==UART1_INTCFG_MS) || (IntCfg==UART1_INTCFG_CTS))
-
-/** Macro to check the input UART_AUTOBAUD_MODE parameters */
-#define PARAM_UART_AUTOBAUD_MODE(ABmode)	((ABmode==UART_AUTOBAUD_MODE0) || (ABmode==UART_AUTOBAUD_MODE1))
-
-/** Macro to check the input UART_AUTOBAUD_INTSTAT parameters */
-#define PARAM_UART_AUTOBAUD_INTSTAT(ABIntStat)	((ABIntStat==UART_AUTOBAUD_INTSTAT_ABEO) || \
-		(ABIntStat==UART_AUTOBAUD_INTSTAT_ABTO))
-
-/** Macro to check the input UART_IrDA_PULSEDIV parameters */
-#define PARAM_UART_IrDA_PULSEDIV(PulseDiv)	((PulseDiv==UART_IrDA_PULSEDIV2) || (PulseDiv==UART_IrDA_PULSEDIV4) \
-|| (PulseDiv==UART_IrDA_PULSEDIV8) || (PulseDiv==UART_IrDA_PULSEDIV16) \
-|| (PulseDiv==UART_IrDA_PULSEDIV32) || (PulseDiv==UART_IrDA_PULSEDIV64) \
-|| (PulseDiv==UART_IrDA_PULSEDIV128) || (PulseDiv==UART_IrDA_PULSEDIV256))
-
-/* Macro to check the input UART1_SignalState parameters */
-#define PARAM_UART1_SIGNALSTATE(x) ((x==INACTIVE) || (x==ACTIVE))
-
-/** Macro to check the input PARAM_UART1_MODEM_PIN parameters */
-#define PARAM_UART1_MODEM_PIN(x) ((x==UART1_MODEM_PIN_DTR) || (x==UART1_MODEM_PIN_RTS))
-
-/** Macro to check the input PARAM_UART1_MODEM_MODE parameters */
-#define PARAM_UART1_MODEM_MODE(x) ((x==UART1_MODEM_MODE_LOOPBACK) || (x==UART1_MODEM_MODE_AUTO_RTS) \
-|| (x==UART1_MODEM_MODE_AUTO_CTS))
-
-/** Macro to check the direction control pin type */
-#define PARAM_UART_RS485_DIRCTRL_PIN(x)	((x==UART1_RS485_DIRCTRL_RTS) || (x==UART1_RS485_DIRCTRL_DTR))
-
-/* Macro to determine if it is valid UART port number */
-#define PARAM_UARTx(x)	((((uint32_t *)x)==((uint32_t *)LPC_UART0)) \
-|| (((uint32_t *)x)==((uint32_t *)LPC_UART1)) \
-|| (((uint32_t *)x)==((uint32_t *)LPC_UART2)) \
-|| (((uint32_t *)x)==((uint32_t *)LPC_UART3)))
-#define PARAM_UART_IrDA(x) (((uint32_t *)x)==((uint32_t *)LPC_UART3))
-#define PARAM_UART1_MODEM(x) (((uint32_t *)x)==((uint32_t *)LPC_UART1))
-
-/** Macro to check the input value for UART1_RS485_CFG_MATCHADDRVALUE parameter */
-#define PARAM_UART1_RS485_CFG_MATCHADDRVALUE(x) ((x<0xFF))
-
-/** Macro to check the input value for UART1_RS485_CFG_DELAYVALUE parameter */
-#define PARAM_UART1_RS485_CFG_DELAYVALUE(x) ((x<0xFF))
-
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup UART_Public_Types UART Public Types
- * @{
- */
-
-/**
- * @brief UART Databit type definitions
- */
-typedef enum {
-	UART_DATABIT_5		= 0,     		/*!< UART 5 bit data mode */
-	UART_DATABIT_6,		     			/*!< UART 6 bit data mode */
-	UART_DATABIT_7,		     			/*!< UART 7 bit data mode */
-	UART_DATABIT_8		     			/*!< UART 8 bit data mode */
-} UART_DATABIT_Type;
-
-/**
- * @brief UART Stop bit type definitions
- */
-typedef enum {
-	UART_STOPBIT_1		= (0),   					/*!< UART 1 Stop Bits Select */
-	UART_STOPBIT_2		 							/*!< UART Two Stop Bits Select */
-} UART_STOPBIT_Type;
-
-/**
- * @brief UART Parity type definitions
- */
-typedef enum {
-	UART_PARITY_NONE 	= 0,					/*!< No parity */
-	UART_PARITY_ODD,	 						/*!< Odd parity */
-	UART_PARITY_EVEN, 							/*!< Even parity */
-	UART_PARITY_SP_1, 							/*!< Forced "1" stick parity */
-	UART_PARITY_SP_0 							/*!< Forced "0" stick parity */
-} UART_PARITY_Type;
-
-/**
- * @brief FIFO Level type definitions
- */
-typedef enum {
-	UART_FIFO_TRGLEV0 = 0,	/*!< UART FIFO trigger level 0: 1 character */
-	UART_FIFO_TRGLEV1, 		/*!< UART FIFO trigger level 1: 4 character */
-	UART_FIFO_TRGLEV2,		/*!< UART FIFO trigger level 2: 8 character */
-	UART_FIFO_TRGLEV3		/*!< UART FIFO trigger level 3: 14 character */
-} UART_FITO_LEVEL_Type;
-
-/********************************************************************//**
-* @brief UART Interrupt Type definitions
-**********************************************************************/
-typedef enum {
-	UART_INTCFG_RBR = 0,	/*!< RBR Interrupt enable*/
-	UART_INTCFG_THRE,		/*!< THR Interrupt enable*/
-	UART_INTCFG_RLS,		/*!< RX line status interrupt enable*/
-	UART1_INTCFG_MS,		/*!< Modem status interrupt enable (UART1 only) */
-	UART1_INTCFG_CTS,		/*!< CTS1 signal transition interrupt enable (UART1 only) */
-	UART_INTCFG_ABEO,		/*!< Enables the end of auto-baud interrupt */
-	UART_INTCFG_ABTO		/*!< Enables the auto-baud time-out interrupt */
-} UART_INT_Type;
-
-/**
- * @brief UART Line Status Type definition
- */
-typedef enum {
-	UART_LINESTAT_RDR	= UART_LSR_RDR,			/*!<Line status register: Receive data ready*/
-	UART_LINESTAT_OE	= UART_LSR_OE,			/*!<Line status register: Overrun error*/
-	UART_LINESTAT_PE	= UART_LSR_PE,			/*!<Line status register: Parity error*/
-	UART_LINESTAT_FE	= UART_LSR_FE,			/*!<Line status register: Framing error*/
-	UART_LINESTAT_BI	= UART_LSR_BI,			/*!<Line status register: Break interrupt*/
-	UART_LINESTAT_THRE	= UART_LSR_THRE,		/*!<Line status register: Transmit holding register empty*/
-	UART_LINESTAT_TEMT	= UART_LSR_TEMT,		/*!<Line status register: Transmitter empty*/
-	UART_LINESTAT_RXFE	= UART_LSR_RXFE			/*!<Error in RX FIFO*/
-} UART_LS_Type;
-
-/**
- * @brief UART Auto-baudrate mode type definition
- */
-typedef enum {
-	UART_AUTOBAUD_MODE0				= 0,			/**< UART Auto baudrate Mode 0 */
-	UART_AUTOBAUD_MODE1							/**< UART Auto baudrate Mode 1 */
-} UART_AB_MODE_Type;
-
-/**
- * @brief Auto Baudrate mode configuration type definition
- */
-typedef struct {
-	UART_AB_MODE_Type	ABMode;			/**< Autobaudrate mode */
-	FunctionalState		AutoRestart;	/**< Auto Restart state */
-} UART_AB_CFG_Type;
-
-/**
- * @brief UART End of Auto-baudrate type definition
- */
-typedef enum {
-	UART_AUTOBAUD_INTSTAT_ABEO		= UART_IIR_ABEO_INT,		/**< UART End of auto-baud interrupt  */
-	UART_AUTOBAUD_INTSTAT_ABTO		= UART_IIR_ABTO_INT			/**< UART Auto-baud time-out interrupt  */
-}UART_ABEO_Type;
-
-/**
- * UART IrDA Control type Definition
- */
-typedef enum {
-	UART_IrDA_PULSEDIV2		= 0,		/**< Pulse width = 2 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV4,				/**< Pulse width = 4 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV8,				/**< Pulse width = 8 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV16,				/**< Pulse width = 16 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV32,				/**< Pulse width = 32 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV64,				/**< Pulse width = 64 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV128,				/**< Pulse width = 128 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-	UART_IrDA_PULSEDIV256				/**< Pulse width = 256 * Tpclk
-										- Configures the pulse when FixPulseEn = 1 */
-} UART_IrDA_PULSE_Type;
-
-/********************************************************************//**
-* @brief UART1 Full modem -  Signal states definition
-**********************************************************************/
-typedef enum {
-	INACTIVE = 0,			/* In-active state */
-	ACTIVE = !INACTIVE 		/* Active state */
-}UART1_SignalState;
-
-/**
- * @brief UART modem status type definition
- */
-typedef enum {
-	UART1_MODEM_STAT_DELTA_CTS	= UART1_MSR_DELTA_CTS,		/*!< Set upon state change of input CTS */
-	UART1_MODEM_STAT_DELTA_DSR	= UART1_MSR_DELTA_DSR,		/*!< Set upon state change of input DSR */
-	UART1_MODEM_STAT_LO2HI_RI	= UART1_MSR_LO2HI_RI,		/*!< Set upon low to high transition of input RI */
-	UART1_MODEM_STAT_DELTA_DCD	= UART1_MSR_DELTA_DCD,		/*!< Set upon state change of input DCD */
-	UART1_MODEM_STAT_CTS		= UART1_MSR_CTS,			/*!< Clear To Send State */
-	UART1_MODEM_STAT_DSR		= UART1_MSR_DSR,			/*!< Data Set Ready State */
-	UART1_MODEM_STAT_RI			= UART1_MSR_RI,				/*!< Ring Indicator State */
-	UART1_MODEM_STAT_DCD		= UART1_MSR_DCD				/*!< Data Carrier Detect State */
-} UART_MODEM_STAT_type;
-
-/**
- * @brief Modem output pin type definition
- */
-typedef enum {
-	UART1_MODEM_PIN_DTR			= 0,		/*!< Source for modem output pin DTR */
-	UART1_MODEM_PIN_RTS						/*!< Source for modem output pin RTS */
-} UART_MODEM_PIN_Type;
-
-/**
- * @brief UART Modem mode type definition
- */
-typedef enum {
-	UART1_MODEM_MODE_LOOPBACK	= 0,		/*!< Loop back mode select */
-	UART1_MODEM_MODE_AUTO_RTS,				/*!< Enable Auto RTS flow-control */
-	UART1_MODEM_MODE_AUTO_CTS 				/*!< Enable Auto CTS flow-control */
-} UART_MODEM_MODE_Type;
-
-/**
- * @brief UART Direction Control Pin type definition
- */
-typedef enum {
-	UART1_RS485_DIRCTRL_RTS = 0,	/**< Pin RTS is used for direction control */
-	UART1_RS485_DIRCTRL_DTR			/**< Pin DTR is used for direction control */
-} UART_RS485_DIRCTRL_PIN_Type;
-
-/********************************************************************//**
-* @brief UART Configuration Structure definition
-**********************************************************************/
-typedef struct {
-  uint32_t Baud_rate;   		/**< UART baud rate */
-  UART_PARITY_Type Parity;    	/**< Parity selection, should be:
-							   - UART_PARITY_NONE: No parity
-							   - UART_PARITY_ODD: Odd parity
-							   - UART_PARITY_EVEN: Even parity
-							   - UART_PARITY_SP_1: Forced "1" stick parity
-							   - UART_PARITY_SP_0: Forced "0" stick parity
-							   */
-  UART_DATABIT_Type Databits;   /**< Number of data bits, should be:
-							   - UART_DATABIT_5: UART 5 bit data mode
-							   - UART_DATABIT_6: UART 6 bit data mode
-							   - UART_DATABIT_7: UART 7 bit data mode
-							   - UART_DATABIT_8: UART 8 bit data mode
-							   */
-  UART_STOPBIT_Type Stopbits;   /**< Number of stop bits, should be:
-							   - UART_STOPBIT_1: UART 1 Stop Bits Select
-							   - UART_STOPBIT_2: UART 2 Stop Bits Select
-							   */
-} UART_CFG_Type;
-
-/********************************************************************//**
-* @brief UART FIFO Configuration Structure definition
-**********************************************************************/
-
-typedef struct {
-	FunctionalState FIFO_ResetRxBuf;	/**< Reset Rx FIFO command state , should be:
-										 - ENABLE: Reset Rx FIFO in UART
-										 - DISABLE: Do not reset Rx FIFO  in UART
-										 */
-	FunctionalState FIFO_ResetTxBuf;	/**< Reset Tx FIFO command state , should be:
-										 - ENABLE: Reset Tx FIFO in UART
-										 - DISABLE: Do not reset Tx FIFO  in UART
-										 */
-	FunctionalState FIFO_DMAMode;		/**< DMA mode, should be:
-										 - ENABLE: Enable DMA mode in UART
-										 - DISABLE: Disable DMA mode in UART
-										 */
-	UART_FITO_LEVEL_Type FIFO_Level;	/**< Rx FIFO trigger level, should be:
-										- UART_FIFO_TRGLEV0: UART FIFO trigger level 0: 1 character
-										- UART_FIFO_TRGLEV1: UART FIFO trigger level 1: 4 character
-										- UART_FIFO_TRGLEV2: UART FIFO trigger level 2: 8 character
-										- UART_FIFO_TRGLEV3: UART FIFO trigger level 3: 14 character
-										*/
-} UART_FIFO_CFG_Type;
-
-/********************************************************************//**
-* @brief UART1 Full modem -  RS485 Control configuration type
-**********************************************************************/
-typedef struct {
-	FunctionalState NormalMultiDropMode_State; /*!< Normal MultiDrop mode State:
-													- ENABLE: Enable this function.
-													- DISABLE: Disable this function. */
-	FunctionalState Rx_State;					/*!< Receiver State:
-													- ENABLE: Enable Receiver.
-													- DISABLE: Disable Receiver. */
-	FunctionalState AutoAddrDetect_State;		/*!< Auto Address Detect mode state:
-												- ENABLE: ENABLE this function.
-												- DISABLE: Disable this function. */
-	FunctionalState AutoDirCtrl_State;			/*!< Auto Direction Control State:
-												- ENABLE: Enable this function.
-												- DISABLE: Disable this function. */
-	UART_RS485_DIRCTRL_PIN_Type DirCtrlPin;		/*!< If direction control is enabled, state:
-												- UART1_RS485_DIRCTRL_RTS:
-												pin RTS is used for direction control.
-												- UART1_RS485_DIRCTRL_DTR:
-												pin DTR is used for direction control. */
-	 SetState DirCtrlPol_Level;					/*!< Polarity of the direction control signal on
-												the RTS (or DTR) pin:
-												- RESET: The direction control pin will be driven
-												to logic "0" when the transmitter has data to be sent.
-												- SET: The direction control pin will be driven
-												to logic "1" when the transmitter has data to be sent. */
-	uint8_t MatchAddrValue;					/*!< address match value for RS-485/EIA-485 mode, 8-bit long */
-	uint8_t DelayValue;						/*!< delay time is in periods of the baud clock, 8-bit long */
-} UART1_RS485_CTRLCFG_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup UART_Public_Functions UART Public Functions
- * @{
- */
-/* UART Init/DeInit functions --------------------------------------------------*/
-void UART_Init(LPC_UART_TypeDef *UARTx, UART_CFG_Type *UART_ConfigStruct);
-void UART_DeInit(LPC_UART_TypeDef* UARTx);
-void UART_ConfigStructInit(UART_CFG_Type *UART_InitStruct);
-
-/* UART Send/Receive functions -------------------------------------------------*/
-void UART_SendByte(LPC_UART_TypeDef* UARTx, uint8_t Data);
-uint8_t UART_ReceiveByte(LPC_UART_TypeDef* UARTx);
-uint32_t UART_Send(LPC_UART_TypeDef *UARTx, uint8_t *txbuf,
-		uint32_t buflen, TRANSFER_BLOCK_Type flag);
-uint32_t UART_Receive(LPC_UART_TypeDef *UARTx, uint8_t *rxbuf, \
-		uint32_t buflen, TRANSFER_BLOCK_Type flag);
-
-/* UART FIFO functions ----------------------------------------------------------*/
-void UART_FIFOConfig(LPC_UART_TypeDef *UARTx, UART_FIFO_CFG_Type *FIFOCfg);
-void UART_FIFOConfigStructInit(UART_FIFO_CFG_Type *UART_FIFOInitStruct);
-
-/* UART get information functions -----------------------------------------------*/
-uint32_t UART_GetIntId(LPC_UART_TypeDef* UARTx);
-uint8_t UART_GetLineStatus(LPC_UART_TypeDef* UARTx);
-
-/* UART operate functions -------------------------------------------------------*/
-void UART_IntConfig(LPC_UART_TypeDef *UARTx, UART_INT_Type UARTIntCfg, \
-				FunctionalState NewState);
-void UART_TxCmd(LPC_UART_TypeDef *UARTx, FunctionalState NewState);
-FlagStatus UART_CheckBusy(LPC_UART_TypeDef *UARTx);
-void UART_ForceBreak(LPC_UART_TypeDef* UARTx);
-
-/* UART Auto-baud functions -----------------------------------------------------*/
-void UART_ABClearIntPending(LPC_UART_TypeDef *UARTx, UART_ABEO_Type ABIntType);
-void UART_ABCmd(LPC_UART_TypeDef *UARTx, UART_AB_CFG_Type *ABConfigStruct, \
-				FunctionalState NewState);
-
-/* UART1 FullModem functions ----------------------------------------------------*/
-void UART_FullModemForcePinState(LPC_UART1_TypeDef *UARTx, UART_MODEM_PIN_Type Pin, \
-							UART1_SignalState NewState);
-void UART_FullModemConfigMode(LPC_UART1_TypeDef *UARTx, UART_MODEM_MODE_Type Mode, \
-							FunctionalState NewState);
-uint8_t UART_FullModemGetStatus(LPC_UART1_TypeDef *UARTx);
-
-/* UART RS485 functions ----------------------------------------------------------*/
-void UART_RS485Config(LPC_UART1_TypeDef *UARTx, \
-		UART1_RS485_CTRLCFG_Type *RS485ConfigStruct);
-void UART_RS485ReceiverCmd(LPC_UART1_TypeDef *UARTx, FunctionalState NewState);
-void UART_RS485SendSlvAddr(LPC_UART1_TypeDef *UARTx, uint8_t SlvAddr);
-uint32_t UART_RS485SendData(LPC_UART1_TypeDef *UARTx, uint8_t *pData, uint32_t size);
-
-/* UART IrDA functions-------------------------------------------------------------*/
-void UART_IrDAInvtInputCmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState);
-void UART_IrDACmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState);
-void UART_IrDAPulseDivConfig(LPC_UART_TypeDef *UARTx, UART_IrDA_PULSE_Type PulseDiv);
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __LPC17XX_UART_H */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc17xx_wdt.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc17xx_wdt.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/**********************************************************************
-* $Id$		lpc17xx_wdt.h				2010-05-21
-*//**
-* @file		lpc17xx_wdt.h
-* @brief	Contains all macro definitions and function prototypes
-* 			support for WDT firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @defgroup WDT WDT (Watch-Dog Timer)
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC17XX_WDT_H_
-#define LPC17XX_WDT_H_
-
-/* Includes ------------------------------------------------------------------- */
-#include "LPC17xx.h"
-#include "lpc_types.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @defgroup WDT_Private_Macros WDT Private Macros
- * @{
- */
-
-/* --------------------- BIT DEFINITIONS -------------------------------------- */
-/** WDT interrupt enable bit */
-#define WDT_WDMOD_WDEN			    ((uint32_t)(1<<0))
-/** WDT interrupt enable bit */
-#define WDT_WDMOD_WDRESET			((uint32_t)(1<<1))
-/** WDT time out flag bit */
-#define WDT_WDMOD_WDTOF				((uint32_t)(1<<2))
-/** WDT Time Out flag bit */
-#define WDT_WDMOD_WDINT				((uint32_t)(1<<3))
-/** WDT Mode */
-#define WDT_WDMOD(n)				((uint32_t)(1<<1))
-
-/** Define divider index for microsecond ( us ) */
-#define WDT_US_INDEX	((uint32_t)(1000000))
-/** WDT Time out minimum value */
-#define WDT_TIMEOUT_MIN	((uint32_t)(0xFF))
-/** WDT Time out maximum value */
-#define WDT_TIMEOUT_MAX	((uint32_t)(0xFFFFFFFF))
-
-/** Watchdog mode register mask */
-#define WDT_WDMOD_MASK			(uint8_t)(0x02)
-/** Watchdog timer constant register mask */
-#define WDT_WDTC_MASK			(uint8_t)(0xFFFFFFFF)
-/** Watchdog feed sequence register mask */
-#define WDT_WDFEED_MASK 		(uint8_t)(0x000000FF)
-/** Watchdog timer value register mask */
-#define WDT_WDCLKSEL_MASK 		(uint8_t)(0x03)
-/** Clock selected from internal RC */
-#define WDT_WDCLKSEL_RC			(uint8_t)(0x00)
-/** Clock selected from PCLK */
-#define WDT_WDCLKSEL_PCLK		(uint8_t)(0x01)
-/** Clock selected from external RTC */
-#define WDT_WDCLKSEL_RTC		(uint8_t)(0x02)
-
-/* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
-/* Macro check clock source selection  */
-#define PARAM_WDT_CLK_OPT(OPTION)  ((OPTION ==WDT_CLKSRC_IRC)||(OPTION ==WDT_CLKSRC_IRC)\
-||(OPTION ==WDT_CLKSRC_IRC))
-
-/* Macro check WDT mode */
-#define PARAM_WDT_MODE_OPT(OPTION)  ((OPTION ==WDT_MODE_INT_ONLY)||(OPTION ==WDT_MODE_RESET))
-/**
- * @}
- */
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup WDT_Public_Types WDT Public Types
- * @{
- */
-
-/** @brief Clock source option for WDT */
-typedef enum {
-	WDT_CLKSRC_IRC = 0, /*!< Clock source from Internal RC oscillator */
-	WDT_CLKSRC_PCLK = 1, /*!< Selects the APB peripheral clock (PCLK) */
-	WDT_CLKSRC_RTC = 2 /*!< Selects the RTC oscillator */
-} WDT_CLK_OPT;
-
-/** @brief WDT operation mode */
-typedef enum {
-	WDT_MODE_INT_ONLY = 0, /*!< Use WDT to generate interrupt only */
-	WDT_MODE_RESET = 1    /*!< Use WDT to generate interrupt and reset MCU */
-} WDT_MODE_OPT;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @defgroup WDT_Public_Functions WDT Public Functions
- * @{
- */
-
-void WDT_Init (WDT_CLK_OPT ClkSrc, WDT_MODE_OPT WDTMode);
-void WDT_Start(uint32_t TimeOut);
-void WDT_Feed (void);
-void WDT_UpdateTimeOut ( uint32_t TimeOut);
-FlagStatus WDT_ReadTimeOutFlag (void);
-void WDT_ClrTimeOutFlag (void);
-uint32_t WDT_GetCurrentCount(void);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LPC17XX_WDT_H_ */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/inc/lpc_types.h
--- a/libs/LPC17xx/LPC17xxLib/inc/lpc_types.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/**********************************************************************
-* $Id$		lpc_types.h		2008-07-27
-*//**
-* @file		lpc_types.h
-* @brief	Contains the NXP ABL typedefs for C standard types.
-*     		It is intended to be used in ISO C conforming development
-*     		environments and checks for this insofar as it is possible
-*     		to do so.
-* @version	2.0
-* @date		27 Jul. 2008
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2008, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Type group ----------------------------------------------------------- */
-/** @defgroup LPC_Types LPC_Types
- * @ingroup LPC1700CMSIS_FwLib_Drivers
- * @{
- */
-
-#ifndef LPC_TYPES_H
-#define LPC_TYPES_H
-
-/* Includes ------------------------------------------------------------------- */
-#include <stdint.h>
-
-
-/* Public Types --------------------------------------------------------------- */
-/** @defgroup LPC_Types_Public_Types LPC_Types Public Types
- * @{
- */
-
-/**
- * @brief Boolean Type definition
- */
-typedef enum {FALSE = 0, TRUE = !FALSE} Bool;
-
-/**
- * @brief Flag Status and Interrupt Flag Status type definition
- */
-typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;
-#define PARAM_SETSTATE(State) ((State==RESET) || (State==SET))
-
-/**
- * @brief Functional State Definition
- */
-typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
-#define PARAM_FUNCTIONALSTATE(State) ((State==DISABLE) || (State==ENABLE))
-
-/**
- * @ Status type definition
- */
-typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;
-
-
-/**
- * Read/Write transfer type mode (Block or non-block)
- */
-typedef enum
-{
-	NONE_BLOCKING = 0,		/**< None Blocking type */
-	BLOCKING				/**< Blocking type */
-} TRANSFER_BLOCK_Type;
-
-
-/** Pointer to Function returning Void (any number of parameters) */
-typedef void (*PFV)();
-
-/** Pointer to Function returning int32_t (any number of parameters) */
-typedef int32_t(*PFI)();
-
-/**
- * @}
- */
-
-
-/* Public Macros -------------------------------------------------------------- */
-/** @defgroup LPC_Types_Public_Macros  LPC_Types Public Macros
- * @{
- */
-
-/* _BIT(n) sets the bit at position "n"
- * _BIT(n) is intended to be used in "OR" and "AND" expressions:
- * e.g., "(_BIT(3) | _BIT(7))".
- */
-#undef _BIT
-/* Set bit macro */
-#define _BIT(n)	(1<<n)
-
-/* _SBF(f,v) sets the bit field starting at position "f" to value "v".
- * _SBF(f,v) is intended to be used in "OR" and "AND" expressions:
- * e.g., "((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)"
- */
-#undef _SBF
-/* Set bit field macro */
-#define _SBF(f,v) (v<<f)
-
-/* _BITMASK constructs a symbol with 'field_width' least significant
- * bits set.
- * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF
- * The symbol is intended to be used to limit the bit field width
- * thusly:
- * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.
- * If "any_expression" results in a value that is larger than can be
- * contained in 'x' bits, the bits above 'x - 1' are masked off.  When
- * used with the _SBF example above, the example would be written:
- * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))
- * This ensures that the value written to a_reg is no wider than
- * 16 bits, and makes the code easier to read and understand.
- */
-#undef _BITMASK
-/* Bitmask creation macro */
-#define _BITMASK(field_width) ( _BIT(field_width) - 1)
-
-/* NULL pointer */
-#ifndef NULL
-#define NULL ((void*) 0)
-#endif
-
-/* Number of elements in an array */
-#define NELEMENTS(array)  (sizeof (array) / sizeof (array[0]))
-
-/* Static data/function define */
-#define STATIC static
-/* External data/function define */
-#define EXTERN extern
-
-#if !defined(MAX)
-#define MAX(a, b) (((a) > (b)) ? (a) : (b))
-#endif
-#if !defined(MIN)
-#define MIN(a, b) (((a) < (b)) ? (a) : (b))
-#endif
-
-/**
- * @}
- */
-
-
-/* Old Type Definition compatibility ------------------------------------------ */
-/** @addtogroup LPC_Types_Public_Types LPC_Types Public Types
- * @{
- */
-
-/** SMA type for character type */
-typedef char CHAR;
-
-/** SMA type for 8 bit unsigned value */
-typedef uint8_t UNS_8;
-
-/** SMA type for 8 bit signed value */
-typedef int8_t INT_8;
-
-/** SMA type for 16 bit unsigned value */
-typedef	uint16_t UNS_16;
-
-/** SMA type for 16 bit signed value */
-typedef	int16_t INT_16;
-
-/** SMA type for 32 bit unsigned value */
-typedef	uint32_t UNS_32;
-
-/** SMA type for 32 bit signed value */
-typedef	int32_t INT_32;
-
-/** SMA type for 64 bit signed value */
-typedef int64_t INT_64;
-
-/** SMA type for 64 bit unsigned value */
-typedef uint64_t UNS_64;
-
-/** 32 bit boolean type */
-typedef Bool BOOL_32;
-
-/** 16 bit boolean type */
-typedef Bool BOOL_16;
-
-/** 8 bit boolean type */
-typedef Bool BOOL_8;
-
-/**
- * @}
- */
-
-
-#endif /* LPC_TYPES_H */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_adc.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_adc.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,350 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_adc.c				2010-06-18
-*//**
-* @file		lpc17xx_adc.c
-* @brief	Contains all functions support for ADC firmware library on LPC17xx
-* @version	3.1
-* @date		26. July. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup ADC
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_adc.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _ADC
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup ADC_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Initial for ADC
- * 					+ Set bit PCADC
- * 					+ Set clock for ADC
- * 					+ Set Clock Frequency
- * @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
- * @param[in]	rate ADC conversion rate, should be <=200KHz
- * @return 		None
- **********************************************************************/
-void ADC_Init(LPC_ADC_TypeDef *ADCx, uint32_t rate)
-{
-	uint32_t ADCPClk, temp, tmp;
-
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_RATE(rate));
-
-	// Turn on power and clock
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCAD, ENABLE);
-
-	ADCx->ADCR = 0;
-
-	//Enable PDN bit
-	tmp = ADC_CR_PDN;
-	// Set clock frequency
-	ADCPClk = CLKPWR_GetPCLK(CLKPWR_PCLKSEL_ADC);
-	/* The APB clock (PCLK_ADC0) is divided by (CLKDIV+1) to produce the clock for
-	 * A/D converter, which should be less than or equal to 13MHz.
-	 * A fully conversion requires 65 of these clocks.
-	 * ADC clock = PCLK_ADC0 / (CLKDIV + 1);
-	 * ADC rate = ADC clock / 65;
-	 */
-	temp = rate * 65;
-	temp = (ADCPClk * 2 + temp)/(2 * temp) - 1; //get the round value by fomular: (2*A + B)/(2*B)
-	tmp |=  ADC_CR_CLKDIV(temp);
-
-	ADCx->ADCR = tmp;
-}
-
-
-/*********************************************************************//**
-* @brief 		Close ADC
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @return 		None
-**********************************************************************/
-void ADC_DeInit(LPC_ADC_TypeDef *ADCx)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-
-	// Clear PDN bit
-	ADCx->ADCR &= ~ADC_CR_PDN;
-	// Turn on power and clock
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCAD, DISABLE);
-}
-
-
-/*********************************************************************//**
-* @brief 		Get Result conversion from A/D data register
-* @param[in]	channel number which want to read back the result
-* @return 		Result of conversion
-*********************************************************************/
-uint32_t ADC_GetData(uint32_t channel)
-{
-	uint32_t adc_value;
-
-	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
-
-	adc_value = *(const volatile uint32_t *)((&LPC_ADC->ADDR0) + channel);
-	return ADC_GDR_RESULT(adc_value);
-}
-
-/*********************************************************************//**
-* @brief 		Set start mode for ADC
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	start_mode Start mode choose one of modes in
-* 				'ADC_START_OPT' enumeration type definition, should be:
-* 				- ADC_START_CONTINUOUS
-* 				- ADC_START_NOW
-* 				- ADC_START_ON_EINT0
-* 				- ADC_START_ON_CAP01
-*				- ADC_START_ON_MAT01
-*				- ADC_START_ON_MAT03
-*				- ADC_START_ON_MAT10
-*				- ADC_START_ON_MAT11
-* @return 		None
-*********************************************************************/
-void ADC_StartCmd(LPC_ADC_TypeDef *ADCx, uint8_t start_mode)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_START_OPT(start_mode));
-
-	ADCx->ADCR &= ~ADC_CR_START_MASK;
-	ADCx->ADCR |=ADC_CR_START_MODE_SEL((uint32_t)start_mode);
-}
-
-
-/*********************************************************************//**
-* @brief 		ADC Burst mode setting
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	NewState
-* 				-	1: Set Burst mode
-* 				-	0: reset Burst mode
-* @return 		None
-**********************************************************************/
-void ADC_BurstCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-
-	ADCx->ADCR &= ~ADC_CR_BURST;
-	if (NewState){
-		ADCx->ADCR |= ADC_CR_BURST;
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Set AD conversion in power mode
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	NewState
-* 				-	1: AD converter is optional
-* 				-	0: AD Converter is in power down mode
-* @return 		None
-**********************************************************************/
-void ADC_PowerdownCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-
-	ADCx->ADCR &= ~ADC_CR_PDN;
-	if (NewState){
-		ADCx->ADCR |= ADC_CR_PDN;
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Set Edge start configuration
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	EdgeOption is ADC_START_ON_RISING and ADC_START_ON_FALLING
-* 					0:ADC_START_ON_RISING
-* 					1:ADC_START_ON_FALLING
-* @return 		None
-**********************************************************************/
-void ADC_EdgeStartConfig(LPC_ADC_TypeDef *ADCx, uint8_t EdgeOption)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_START_ON_EDGE_OPT(EdgeOption));
-
-	ADCx->ADCR &= ~ADC_CR_EDGE;
-	if (EdgeOption){
-		ADCx->ADCR |= ADC_CR_EDGE;
-	}
-}
-
-/*********************************************************************//**
-* @brief 		ADC interrupt configuration
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	IntType: type of interrupt, should be:
-* 				- ADC_ADINTEN0: Interrupt channel 0
-* 				- ADC_ADINTEN1: Interrupt channel 1
-* 				...
-* 				- ADC_ADINTEN7: Interrupt channel 7
-* 				- ADC_ADGINTEN: Individual channel/global flag done generate an interrupt
-* @param[in]	NewState:
-* 					- SET : enable ADC interrupt
-* 					- RESET: disable ADC interrupt
-* @return 		None
-**********************************************************************/
-void ADC_IntConfig (LPC_ADC_TypeDef *ADCx, ADC_TYPE_INT_OPT IntType, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_TYPE_INT_OPT(IntType));
-
-	ADCx->ADINTEN &= ~ADC_INTEN_CH(IntType);
-	if (NewState){
-		ADCx->ADINTEN |= ADC_INTEN_CH(IntType);
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Enable/Disable ADC channel number
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	Channel channel number
-* @param[in]	NewState Enable or Disable
-*
-* @return 		None
-**********************************************************************/
-void ADC_ChannelCmd (LPC_ADC_TypeDef *ADCx, uint8_t Channel, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(Channel));
-
-	if (NewState == ENABLE) {
-		ADCx->ADCR |= ADC_CR_CH_SEL(Channel);
-	} else {
-		ADCx->ADCR &= ~ADC_CR_CH_SEL(Channel);
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Get ADC result
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	channel: channel number, should be 0...7
-* @return 		Data conversion
-**********************************************************************/
-uint16_t ADC_ChannelGetData(LPC_ADC_TypeDef *ADCx, uint8_t channel)
-{
-	uint32_t adc_value;
-
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
-
-	adc_value = *(const volatile uint32_t *) ((&ADCx->ADDR0) + channel);
-	return ADC_DR_RESULT(adc_value);
-}
-
-/*********************************************************************//**
-* @brief 		Get ADC Chanel status from ADC data register
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]	channel: channel number, should be 0..7
-* @param[in]  	StatusType
-*              		 	0:Burst status
-*               		1:Done 	status
-* @return 		SET / RESET
-**********************************************************************/
-FlagStatus ADC_ChannelGetStatus(LPC_ADC_TypeDef *ADCx, uint8_t channel, uint32_t StatusType)
-{
-	uint32_t temp;
-
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
-	CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));
-
-	temp =  *(const volatile uint32_t *) ((&ADCx->ADDR0) + channel);
-	if (StatusType) {
-		temp &= ADC_DR_DONE_FLAG;
-	}else{
-		temp &= ADC_DR_OVERRUN_FLAG;
-	}
-	if (temp) {
-		return SET;
-	} else {
-		return RESET;
-	}
-
-}
-
-/*********************************************************************//**
-* @brief 		Get ADC Data from AD Global register
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @return 		Result of conversion
-**********************************************************************/
-uint32_t ADC_GlobalGetData(LPC_ADC_TypeDef *ADCx)
-{
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-
-	return ((uint32_t)(ADCx->ADGDR));
-}
-
-/*********************************************************************//**
-* @brief 		Get ADC Chanel status from AD global data register
-* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
-* @param[in]  	StatusType
-*              		 	0:Burst status
-*               		1:Done 	status
-* @return 		SET / RESET
-**********************************************************************/
-FlagStatus	ADC_GlobalGetStatus(LPC_ADC_TypeDef *ADCx, uint32_t StatusType)
-{
-	uint32_t temp;
-
-	CHECK_PARAM(PARAM_ADCx(ADCx));
-	CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));
-
-	temp =  ADCx->ADGDR;
-	if (StatusType){
-		temp &= ADC_DR_DONE_FLAG;
-	}else{
-		temp &= ADC_DR_OVERRUN_FLAG;
-	}
-	if (temp){
-		return SET;
-	}else{
-		return RESET;
-	}
-}
-
-/**
- * @}
- */
-
-#endif /* _ADC */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_can.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_can.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1937 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_can.c				2011-03-09
-*//**
-* @file		lpc17xx_can.c
-* @brief	Contains all functions support for CAN firmware library on LPC17xx
-* @version	3.3
-* @date		09. March. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup CAN
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_can.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _CAN
-
-/* Private Variables ---------------------------------------------------------- */
-/** @defgroup CAN_Private_Variables CAN Private Variables
- * @{
- */
-
-FunctionalState FULLCAN_ENABLE;
-
-
-/* Counts number of filters (CAN message objects) used */
-uint16_t CANAF_FullCAN_cnt = 0;
-uint16_t CANAF_std_cnt = 0;
-uint16_t CANAF_gstd_cnt = 0;
-uint16_t CANAF_ext_cnt = 0;
-uint16_t CANAF_gext_cnt = 0;
-
-/* End of Private Variables ----------------------------------------------------*/
-/**
- * @}
- */
-
-/* Private Variables ---------------------------------------------------------- */
-static void can_SetBaudrate (LPC_CAN_TypeDef *CANx, uint32_t baudrate);
-
-/*********************************************************************//**
- * @brief 		Setting CAN baud rate (bps)
- * @param[in] 	CANx point to LPC_CAN_TypeDef object, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	baudrate: is the baud rate value will be set
- * @return 		None
- ***********************************************************************/
-static void can_SetBaudrate (LPC_CAN_TypeDef *CANx, uint32_t baudrate)
-{
-	uint32_t result = 0;
-	uint8_t NT, TSEG1, TSEG2, BRFail;
-	uint32_t CANPclk = 0;
-	uint32_t BRP;
-	CHECK_PARAM(PARAM_CANx(CANx));
-
-	if (CANx == LPC_CAN1)
-	{
-		CANPclk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_CAN1);
-	}
-	else
-	{
-		CANPclk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_CAN2);
-	}
-	result = CANPclk / baudrate;
-	/* Calculate suitable nominal time value
-	 * NT (nominal time) = (TSEG1 + TSEG2 + 3)
-	 * NT <= 24
-	 * TSEG1 >= 2*TSEG2
-	 */
-	BRFail = 1;
-	for(NT=24;NT>0;NT=NT-2)
-	{
-		if ((result%NT)==0)
-		{
-			BRP = result / NT - 1;
-			NT--;
-			TSEG2 = (NT/3) - 1;
-			TSEG1 = NT -(NT/3) - 1;
-			BRFail = 0;
-			break;
-		}
-	}
-	if(BRFail)
-		while(1); // Failed to calculate exact CAN baud rate
-	/* Enter reset mode */
-	CANx->MOD = 0x01;
-	/* Set bit timing
-	 * Default: SAM = 0x00;
-	 *          SJW = 0x03;
-	 */
-	CANx->BTR  = (TSEG2<<20)|(TSEG1<<16)|(3<<14)|BRP;
-	/* Return to normal operating */
-	CANx->MOD = 0;
-}
-/* End of Private Functions ----------------------------------------------------*/
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup CAN_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief		Initialize CAN peripheral with given baudrate
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	baudrate: the value of CAN baudrate will be set (bps)
- * @return 		None
- *********************************************************************/
-void CAN_Init(LPC_CAN_TypeDef *CANx, uint32_t baudrate)
-{
-	volatile uint32_t temp;
-	uint16_t i;
-	CHECK_PARAM(PARAM_CANx(CANx));
-
-	if(CANx == LPC_CAN1)
-	{
-		/* Turn on power and clock for CAN1 */
-		CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCAN1, ENABLE);
-		/* Set clock divide for CAN1 */
-	}
-	else
-	{
-		/* Turn on power and clock for CAN1 */
-		CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCAN2, ENABLE);
-		/* Set clock divide for CAN2 */
-	}
-	CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_CAN1, CLKPWR_PCLKSEL_CCLK_DIV_2);
-	CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_CAN2, CLKPWR_PCLKSEL_CCLK_DIV_2);
-	CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_ACF, CLKPWR_PCLKSEL_CCLK_DIV_2);
-
-	CANx->MOD = 1; // Enter Reset Mode
-	CANx->IER = 0; // Disable All CAN Interrupts
-	CANx->GSR = 0;
-	/* Request command to release Rx, Tx buffer and clear data overrun */
-	//CANx->CMR = CAN_CMR_AT | CAN_CMR_RRB | CAN_CMR_CDO;
-	CANx->CMR = (1<<1)|(1<<2)|(1<<3);
-	/* Read to clear interrupt pending in interrupt capture register */
-	temp = CANx->ICR;
-	CANx->MOD = 0;// Return Normal operating
-
-	//Reset CANAF value
-	LPC_CANAF->AFMR = 0x01;
-
-	//clear ALUT RAM
-	for (i = 0; i < 512; i++) {
-		LPC_CANAF_RAM->mask[i] = 0x00;
-	}
-
-	LPC_CANAF->SFF_sa = 0x00;
-	LPC_CANAF->SFF_GRP_sa = 0x00;
-	LPC_CANAF->EFF_sa = 0x00;
-	LPC_CANAF->EFF_GRP_sa = 0x00;
-	LPC_CANAF->ENDofTable = 0x00;
-
-	LPC_CANAF->AFMR = 0x00;
-	/* Set baudrate */
-	can_SetBaudrate (CANx, baudrate);
-}
-
-/********************************************************************//**
- * @brief		CAN deInit
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @return 		None
- *********************************************************************/
-void CAN_DeInit(LPC_CAN_TypeDef *CANx)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-
-	if(CANx == LPC_CAN1)
-	{
-		/* Turn on power and clock for CAN1 */
-		CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCAN1, DISABLE);
-	}
-	else
-	{
-		/* Turn on power and clock for CAN1 */
-		CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCAN2, DISABLE);
-	}
-}
-
-/********************************************************************//**
- * @brief		Setup Acceptance Filter Look-Up Table
- * @param[in]	CANAFx	pointer to LPC_CANAF_TypeDef
- * 				Should be: LPC_CANAF
- * @param[in]	AFSection	the pointer to AF_SectionDef structure
- * 				It contain information about 5 sections will be install in AFLUT
- * @return 		CAN Error	could be:
- * 				- CAN_OBJECTS_FULL_ERROR: No more rx or tx objects available
- * 				- CAN_AF_ENTRY_ERROR: table error-violation of ascending numerical order
- * 				- CAN_OK: ID is added into table successfully
- *********************************************************************/
-CAN_ERROR CAN_SetupAFLUT(LPC_CANAF_TypeDef* CANAFx, AF_SectionDef* AFSection)
-{
-	uint8_t ctrl1,ctrl2;
-	uint8_t dis1, dis2;
-	uint16_t SID, ID_temp,i, count = 0;
-	uint32_t EID, entry, buf;
-	uint16_t lowerSID, upperSID;
-	uint32_t lowerEID, upperEID;
-
-	CHECK_PARAM(PARAM_CANAFx(CANAFx));
-	CANAFx->AFMR = 0x01;
-
-/***** setup FullCAN Table *****/
-	if(AFSection->FullCAN_Sec == NULL)
-	{
-		FULLCAN_ENABLE = DISABLE;
-	}
-	else
-	{
-		FULLCAN_ENABLE = ENABLE;
-		for(i=0;i<(AFSection->FC_NumEntry);i++)
-		{
-			if(count + 1 > 64)
-			{
-				return CAN_OBJECTS_FULL_ERROR;
-			}
-			ctrl1 = AFSection->FullCAN_Sec->controller;
-			SID = AFSection->FullCAN_Sec->id_11;
-			dis1 = AFSection->FullCAN_Sec->disable;
-
-			CHECK_PARAM(PARAM_CTRL(ctrl1));
-			CHECK_PARAM(PARAM_ID_11(SID));
-			CHECK_PARAM(PARAM_MSG_DISABLE(dis1));
-			entry = 0x00; //reset entry value
-			if((CANAF_FullCAN_cnt & 0x00000001)==0)
-			{
-				if(count!=0x00)
-				{
-					buf = LPC_CANAF_RAM->mask[count-1];
-					ID_temp = (buf & 0xE7FF); //mask controller & identifier bits
-					if(ID_temp > ((ctrl1<<13)|SID))
-					{
-						return CAN_AF_ENTRY_ERROR;
-					}
-				}
-				entry = (ctrl1<<29)|(dis1<<28)|(SID<<16)|(1<<27);
-				LPC_CANAF_RAM->mask[count] &= 0x0000FFFF;
-				LPC_CANAF_RAM->mask[count] |= entry;
-				CANAF_FullCAN_cnt++;
-				if(CANAF_FullCAN_cnt == AFSection->FC_NumEntry) //this is the lastest FullCAN entry
-					count++;
-			}
-			else
-			{
-				buf = LPC_CANAF_RAM->mask[count];
-				ID_temp = (buf >>16) & 0xE7FF;
-				if(ID_temp > ((ctrl1<<13)|SID))
-				{
-					return CAN_AF_ENTRY_ERROR;
-				}
-				entry = (ctrl1<<13)|(dis1<<12)|(SID<<0)|(1<<11);
-				LPC_CANAF_RAM->mask[count] &= 0xFFFF0000;
-				LPC_CANAF_RAM->mask[count]|= entry;
-				count++;
-				CANAF_FullCAN_cnt++;
-			}
-			AFSection->FullCAN_Sec = (FullCAN_Entry *)((uint32_t)(AFSection->FullCAN_Sec)+ sizeof(FullCAN_Entry));
-		}
-	}
-
-/***** Setup Explicit Standard Frame Format Section *****/
-	if(AFSection->SFF_Sec != NULL)
-	{
-		for(i=0;i<(AFSection->SFF_NumEntry);i++)
-		{
-			if(count + 1 > 512)
-			{
-				return CAN_OBJECTS_FULL_ERROR;
-			}
-			ctrl1 = AFSection->SFF_Sec->controller;
-			SID = AFSection->SFF_Sec->id_11;
-			dis1 = AFSection->SFF_Sec->disable;
-
-			//check parameter
-			CHECK_PARAM(PARAM_CTRL(ctrl1));
-			CHECK_PARAM(PARAM_ID_11(SID));
-			CHECK_PARAM(PARAM_MSG_DISABLE(dis1));
-
-			entry = 0x00; //reset entry value
-			if((CANAF_std_cnt & 0x00000001)==0)
-			{
-				if(CANAF_std_cnt !=0 )
-				{
-					buf = LPC_CANAF_RAM->mask[count-1];
-					ID_temp = (buf & 0xE7FF); //mask controller & identifier bits
-					if(ID_temp > ((ctrl1<<13)|SID))
-					{
-						return CAN_AF_ENTRY_ERROR;
-					}
-				}
-				entry = (ctrl1<<29)|(dis1<<28)|(SID<<16);
-				LPC_CANAF_RAM->mask[count] &= 0x0000FFFF;
-				LPC_CANAF_RAM->mask[count] |= entry;
-				CANAF_std_cnt++;
-				if(CANAF_std_cnt == AFSection->SFF_NumEntry)//if this is the last SFF entry
-					count++;
-			}
-			else
-			{
-				buf = LPC_CANAF_RAM->mask[count];
-				ID_temp = (buf >>16) & 0xE7FF;
-				if(ID_temp > ((ctrl1<<13)|SID))
-				{
-					return CAN_AF_ENTRY_ERROR;
-				}
-				entry = (ctrl1<<13)|(dis1<<12)|(SID<<0);
-				LPC_CANAF_RAM->mask[count] &= 0xFFFF0000;
-				LPC_CANAF_RAM->mask[count] |= entry;
-				count++;
-				CANAF_std_cnt++;
-			}
-			AFSection->SFF_Sec = (SFF_Entry *)((uint32_t)(AFSection->SFF_Sec)+ sizeof(SFF_Entry));
-		}
-	}
-
-/***** Setup Group of Standard Frame Format Identifier Section *****/
-	if(AFSection->SFF_GPR_Sec != NULL)
-	{
-		for(i=0;i<(AFSection->SFF_GPR_NumEntry);i++)
-		{
-			if(count + 1 > 512)
-			{
-				return CAN_OBJECTS_FULL_ERROR;
-			}
-			ctrl1 = AFSection->SFF_GPR_Sec->controller1;
-			ctrl2 = AFSection->SFF_GPR_Sec->controller2;
-			dis1 = AFSection->SFF_GPR_Sec->disable1;
-			dis2 = AFSection->SFF_GPR_Sec->disable2;
-			lowerSID = AFSection->SFF_GPR_Sec->lowerID;
-			upperSID = AFSection->SFF_GPR_Sec->upperID;
-
-			/* check parameter */
-			CHECK_PARAM(PARAM_CTRL(ctrl1));
-			CHECK_PARAM(PARAM_CTRL(ctrl2));
-			CHECK_PARAM(PARAM_MSG_DISABLE(dis1));
-			CHECK_PARAM(PARAM_MSG_DISABLE(dis2));
-			CHECK_PARAM(PARAM_ID_11(lowerSID));
-			CHECK_PARAM(PARAM_ID_11(upperSID));
-
-			entry = 0x00;
-			if(CANAF_gstd_cnt!=0)
-			{
-				buf = LPC_CANAF_RAM->mask[count-1];
-				ID_temp = buf & 0xE7FF;
-				if((ctrl1 != ctrl2)||(lowerSID > upperSID)||(ID_temp > ((ctrl1<<13)|lowerSID)))
-				{
-					return CAN_AF_ENTRY_ERROR;
-				}
-			}
-			entry = (ctrl1 << 29)|(dis1 << 28)|(lowerSID << 16)|  \
-					(ctrl2 << 13)|(dis2 << 12)|(upperSID << 0);
-			LPC_CANAF_RAM->mask[count] = entry;
-			CANAF_gstd_cnt++;
-			count++;
-			AFSection->SFF_GPR_Sec = (SFF_GPR_Entry *)((uint32_t)(AFSection->SFF_GPR_Sec)+ sizeof(SFF_GPR_Entry));
-		}
-	}
-
-/***** Setup Explicit Extend Frame Format Identifier Section *****/
-	if(AFSection->EFF_Sec != NULL)
-	{
-		for(i=0;i<(AFSection->EFF_NumEntry);i++)
-		{
-			if(count + 1 > 512)
-			{
-				return CAN_OBJECTS_FULL_ERROR;
-			}
-			EID = AFSection->EFF_Sec->ID_29;
-			ctrl1 = AFSection->EFF_Sec->controller;
-
-			// check parameter
-			CHECK_PARAM(PARAM_ID_29(EID));
-			CHECK_PARAM(PARAM_CTRL(ctrl1));
-
-			entry = (ctrl1 << 29)|(EID << 0);
-			if(CANAF_ext_cnt != 0)
-			{
-				buf = LPC_CANAF_RAM->mask[count-1];
-//				EID_temp = buf & 0x0FFFFFFF;
-				if(buf > entry)
-				{
-					return CAN_AF_ENTRY_ERROR;
-				}
-			}
-			LPC_CANAF_RAM->mask[count] = entry;
-			CANAF_ext_cnt ++;
-			count++;
-			AFSection->EFF_Sec = (EFF_Entry *)((uint32_t)(AFSection->EFF_Sec)+ sizeof(EFF_Entry));
-		}
-	}
-
-/***** Setup Group of Extended Frame Format Identifier Section *****/
-	if(AFSection->EFF_GPR_Sec != NULL)
-	{
-		for(i=0;i<(AFSection->EFF_GPR_NumEntry);i++)
-		{
-			if(count + 2 > 512)
-			{
-				return CAN_OBJECTS_FULL_ERROR;
-			}
-			ctrl1 = AFSection->EFF_GPR_Sec->controller1;
-			ctrl2 = AFSection->EFF_GPR_Sec->controller2;
-			lowerEID = AFSection->EFF_GPR_Sec->lowerEID;
-			upperEID = AFSection->EFF_GPR_Sec->upperEID;
-
-			//check parameter
-			CHECK_PARAM(PARAM_CTRL(ctrl1));
-			CHECK_PARAM(PARAM_CTRL(ctrl2));
-			CHECK_PARAM(PARAM_ID_29(lowerEID));
-			CHECK_PARAM(PARAM_ID_29(upperEID));
-
-			entry = 0x00;
-			if(CANAF_gext_cnt != 0)
-			{
-				buf = LPC_CANAF_RAM->mask[count-1];
-//				EID_temp = buf & 0x0FFFFFFF;
-				if((ctrl1 != ctrl2) || (lowerEID > upperEID) || (buf > ((ctrl1 << 29)|(lowerEID << 0))))
-				{
-					return CAN_AF_ENTRY_ERROR;
-				}
-			}
-			entry = (ctrl1 << 29)|(lowerEID << 0);
-			LPC_CANAF_RAM->mask[count++] = entry;
-			entry = (ctrl2 << 29)|(upperEID << 0);
-			LPC_CANAF_RAM->mask[count++] = entry;
-			CANAF_gext_cnt++;
-			AFSection->EFF_GPR_Sec = (EFF_GPR_Entry *)((uint32_t)(AFSection->EFF_GPR_Sec)+ sizeof(EFF_GPR_Entry));
-		}
-	}
-	//update address values
-	LPC_CANAF->SFF_sa = ((CANAF_FullCAN_cnt + 1)>>1)<<2;
-	LPC_CANAF->SFF_GRP_sa = LPC_CANAF->SFF_sa + (((CANAF_std_cnt+1)>>1)<< 2);
-	LPC_CANAF->EFF_sa = LPC_CANAF->SFF_GRP_sa + (CANAF_gstd_cnt << 2);
-	LPC_CANAF->EFF_GRP_sa = LPC_CANAF->EFF_sa + (CANAF_ext_cnt << 2);
-	LPC_CANAF->ENDofTable = LPC_CANAF->EFF_GRP_sa + (CANAF_gext_cnt << 3);
-
-	if(FULLCAN_ENABLE == DISABLE)
-	{
-		LPC_CANAF->AFMR = 0x00; // Normal mode
-	}
-	else
-	{
-		LPC_CANAF->AFMR = 0x04;
-	}
-	return CAN_OK;
-}
-/********************************************************************//**
- * @brief		Add Explicit ID into AF Look-Up Table dynamically.
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	id: The ID of entry will be added
- * @param[in]	format: is the type of ID Frame Format, should be:
- * 				- STD_ID_FORMAT: 11-bit ID value
- * 				- EXT_ID_FORMAT: 29-bit ID value
- * @return 		CAN Error, could be:
- * 				- CAN_OBJECTS_FULL_ERROR: No more rx or tx objects available
- * 				- CAN_ID_EXIT_ERROR: ID exited in table
- * 				- CAN_OK: ID is added into table successfully
- *********************************************************************/
-CAN_ERROR CAN_LoadExplicitEntry(LPC_CAN_TypeDef* CANx, uint32_t id, CAN_ID_FORMAT_Type format)
-{
-	uint32_t tmp0 = 0;
-	uint32_t buf0=0, buf1=0;
-	int16_t cnt1=0, cnt2=0, bound1=0, total=0;
-
-
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_ID_FORMAT(format));
-
-	if (CANx == LPC_CAN1)
-	{
-		tmp0 = 0;
-	}
-	else if (CANx == LPC_CAN2)
-	{
-		tmp0 = 1;
-	}
-
-	/* Acceptance Filter Memory full - return */
-	total =((CANAF_FullCAN_cnt+1)>>1)+ CANAF_FullCAN_cnt*3 +((CANAF_std_cnt + 1) >> 1)+  \
-			CANAF_gstd_cnt + CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-	if (total >= 512){ //don't have enough space
-		return CAN_OBJECTS_FULL_ERROR;
-	}
-
-	/* Setup Acceptance Filter Configuration
-    Acceptance Filter Mode Register = Off */
-	LPC_CANAF->AFMR = 0x00000001;
-
-/*********** Add Explicit Standard Identifier Frame Format entry *********/
- 	if(format == STD_ID_FORMAT)
- 	{
- 		id &= 0x07FF;
- 		id |= (tmp0 << 13); /* Add controller number */
-		/* Move all remaining sections one place up
-		if new entry will increase FullCAN list */
-		if ((CANAF_std_cnt & 0x0001) == 0)
-		{
-			cnt1   = ((CANAF_FullCAN_cnt+1)>>1)+((CANAF_std_cnt+1)>>1);
-			bound1 = total - cnt1;
-			buf0   = LPC_CANAF_RAM->mask[cnt1];
-			while(bound1--)
-			{
-				cnt1++;
-				buf1 = LPC_CANAF_RAM->mask[cnt1];
-				LPC_CANAF_RAM->mask[cnt1] = buf0;
-				buf0 = buf1;
-			}
-		}
-		if (CANAF_std_cnt == 0)
-		{
-			cnt2 = (CANAF_FullCAN_cnt + 1)>>1;
-			/* For entering first ID */
-			LPC_CANAF_RAM->mask[cnt2] = 0x0000FFFF | (id << 16);
-		}
-		else if (CANAF_std_cnt == 1)
-		{
-			cnt2 = (CANAF_FullCAN_cnt + 1)>>1;
-			/* For entering second ID */
-			if (((LPC_CANAF_RAM->mask[cnt2] >> 16)& 0xE7FF) > id)
-			{
-				LPC_CANAF_RAM->mask[cnt2] = (LPC_CANAF_RAM->mask[cnt2] >> 16) | (id << 16);
-			}
-			else
-			{
-				LPC_CANAF_RAM->mask[cnt2] = (LPC_CANAF_RAM->mask[cnt2] & 0xFFFF0000) | id;
-			}
-		}
-		else
-		{
-			/* Find where to insert new ID */
-			cnt1 = (CANAF_FullCAN_cnt+1)>>1;
-			cnt2 = CANAF_std_cnt;
-			bound1 = ((CANAF_FullCAN_cnt+1)>>1)+((CANAF_std_cnt+1)>>1);
-			while (cnt1 < bound1)
-			{
-				/* Loop through standard existing IDs */
-				if (((LPC_CANAF_RAM->mask[cnt1] >> 16) & 0xE7FF) > id)
-				{
-					cnt2 = cnt1 * 2;
-					break;
-				}
-
-				if ((LPC_CANAF_RAM->mask[cnt1] & 0x0000E7FF) > id)
-				{
-					cnt2 = cnt1 * 2 + 1;
-					break;
-				}
-
-				cnt1++;
-			}
-			/* cnt1 = U32 where to insert new ID */
-			/* cnt2 = U16 where to insert new ID */
-
-			if (cnt1 == bound1)
-			{
-				/* Adding ID as last entry */
-				/* Even number of IDs exists */
-				if ((CANAF_std_cnt & 0x0001) == 0)
-				{
-					LPC_CANAF_RAM->mask[cnt1]  = 0x0000FFFF | (id << 16);
-				}
-				/* Odd  number of IDs exists */
-				else
-				{
-					LPC_CANAF_RAM->mask[cnt1]  = (LPC_CANAF_RAM->mask[cnt1] & 0xFFFF0000) | id;
-				}
-			}
-			else
-			{
-				buf0 = LPC_CANAF_RAM->mask[cnt1]; /* Remember current entry */
-				if ((cnt2 & 0x0001) == 0)
-				{
-					/* Insert new mask to even address*/
-					buf1 = (id << 16) | (buf0 >> 16);
-				}
-				else
-				{
-					/* Insert new mask to odd  address */
-					buf1 = (buf0 & 0xFFFF0000) | id;
-				}
-				LPC_CANAF_RAM->mask[cnt1] = buf1;/* Insert mask */
-				bound1 = ((CANAF_FullCAN_cnt+1)>>1)+((CANAF_std_cnt+1)>>1)-1;
-				/* Move all remaining standard mask entries one place up */
-				while (cnt1 < bound1)
-				{
-					cnt1++;
-					buf1  = LPC_CANAF_RAM->mask[cnt1];
-					LPC_CANAF_RAM->mask[cnt1] = (buf1 >> 16) | (buf0 << 16);
-					buf0  = buf1;
-				}
-
-				if ((CANAF_std_cnt & 0x0001) == 0)
-				{
-					/* Even number of IDs exists */
-					LPC_CANAF_RAM->mask[cnt1+1] = (buf0 <<16) |(0x0000FFFF);
-				}
-			}
-		}
-		CANAF_std_cnt++;
-		//update address values
-		LPC_CANAF->SFF_GRP_sa +=0x04 ;
-		LPC_CANAF->EFF_sa     +=0x04 ;
-		LPC_CANAF->EFF_GRP_sa +=0x04;
-		LPC_CANAF->ENDofTable +=0x04;
- 	}
-
-/*********** Add Explicit Extended Identifier Frame Format entry *********/
- 	else
- 	{
- 		/* Add controller number */
- 		id |= (tmp0) << 29;
-
- 		cnt1 = ((CANAF_FullCAN_cnt+1)>>1)+(((CANAF_std_cnt + 1) >> 1) + CANAF_gstd_cnt);
- 		cnt2 = 0;
- 		while (cnt2 < CANAF_ext_cnt)
- 		{
- 			/* Loop through extended existing masks*/
- 			if (LPC_CANAF_RAM->mask[cnt1] > id)
- 			{
- 				break;
- 			}
- 			cnt1++;/* cnt1 = U32 where to insert new mask */
-			cnt2++;
- 		}
-
- 		buf0 = LPC_CANAF_RAM->mask[cnt1];  /* Remember current entry */
- 		LPC_CANAF_RAM->mask[cnt1] = id;    /* Insert mask */
-
- 		CANAF_ext_cnt++;
-
- 		bound1 = total;
- 		/* Move all remaining extended mask entries one place up*/
- 		while (cnt2 < bound1)
- 		{
- 			cnt1++;
- 			cnt2++;
- 			buf1 = LPC_CANAF_RAM->mask[cnt1];
- 			LPC_CANAF_RAM->mask[cnt1] = buf0;
- 			buf0 = buf1;
- 		}
- 		/* update address values */
- 		LPC_CANAF->EFF_GRP_sa += 4;
- 		LPC_CANAF->ENDofTable += 4;
- 	}
- 	if(CANAF_FullCAN_cnt == 0) //not use FullCAN mode
- 	{
- 		LPC_CANAF->AFMR = 0x00;//not use FullCAN mode
- 	}
- 	else
- 	{
- 		LPC_CANAF->AFMR = 0x04;
- 	}
-
- 	return CAN_OK;
-}
-
-/********************************************************************//**
- * @brief		Load FullCAN entry into AFLUT
- * @param[in]	CANx: CAN peripheral selected, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	id: identifier of entry that will be added
- * @return 		CAN_ERROR, could be:
- * 				- CAN_OK: loading is successful
- * 				- CAN_ID_EXIT_ERROR: ID exited in FullCAN Section
- * 				- CAN_OBJECTS_FULL_ERROR: no more space available
- *********************************************************************/
-CAN_ERROR CAN_LoadFullCANEntry (LPC_CAN_TypeDef* CANx, uint16_t id)
-{
-	uint32_t ctrl0 = 0;
-	uint32_t buf0=0, buf1=0, buf2=0;
-	uint32_t tmp0=0, tmp1=0, tmp2=0;
-	int16_t cnt1=0, cnt2=0, bound1=0, total=0;
-	volatile uint32_t abc;
-
-	CHECK_PARAM(PARAM_CANx(CANx));
-
-	if (CANx == LPC_CAN1)
-	{
-		ctrl0 = 0;
-	}
-	else if (CANx == LPC_CAN2)
-	{
-		ctrl0 = 1;
-	}
-
-	/* Acceptance Filter Memory full - return */
-	total =((CANAF_FullCAN_cnt+1)>>1)+ CANAF_FullCAN_cnt*3 +((CANAF_std_cnt + 1) >> 1)+  \
-			CANAF_gstd_cnt + CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-	//don't have enough space for this fullCAN Entry and its Object(3*32 bytes)
-	if ((total >=508)||(CANAF_FullCAN_cnt>=64)){
-		return CAN_OBJECTS_FULL_ERROR;
-	}
-	/* Setup Acceptance Filter Configuration
-    Acceptance Filter Mode Register = Off */
-	LPC_CANAF->AFMR = 0x00000001;
-
-	/* Add mask for standard identifiers   */
-	id &= 0x07FF;
-	id |= (ctrl0 << 13) | (1 << 11); /* Add controller number */
-//	total = ((CANAF_std_cnt + 1) >> 1)+ CANAF_gstd_cnt + CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-	/* Move all remaining sections one place up
-	if new entry will increase FullCAN list */
-	if (((CANAF_FullCAN_cnt & 0x0001) == 0)&&(total!=0))
-	{
-		//then remove remaining section
-		cnt1   = (CANAF_FullCAN_cnt >> 1);
-		bound1 = total;
-		buf0   = LPC_CANAF_RAM->mask[cnt1];
-
-		while (bound1--)
-		{
-			cnt1++;
-			buf1 = LPC_CANAF_RAM->mask[cnt1];
-			LPC_CANAF_RAM->mask[cnt1] = buf0;
-			buf0 = buf1;
-		}
-	}
-	if (CANAF_FullCAN_cnt == 0)
-	{
-		/* For entering first ID */
-		LPC_CANAF_RAM->mask[0] = 0x0000FFFF | (id << 16);
-	}
-	else if (CANAF_FullCAN_cnt == 1)
-	{
-		/* For entering second ID */
-		if (((LPC_CANAF_RAM->mask[0] >> 16)& 0xE7FF) > id)
-		{
-			LPC_CANAF_RAM->mask[0] = (LPC_CANAF_RAM->mask[0] >> 16) | (id << 16);
-		}
-		else
-		{
-			LPC_CANAF_RAM->mask[0] = (LPC_CANAF_RAM->mask[0] & 0xFFFF0000) | id;
-		}
-	}
-	else
-	{
-		/* Find where to insert new ID */
-		cnt1 = 0;
-		cnt2 = CANAF_FullCAN_cnt;
-		bound1 = (CANAF_FullCAN_cnt - 1) >> 1;
-		while (cnt1 <= bound1)
-		{
-			abc = (LPC_CANAF_RAM->mask[cnt1] >> 16)& 0xE7FF;
-			/* Loop through standard existing IDs */
-			if (((LPC_CANAF_RAM->mask[cnt1] >> 16) & 0xE7FF) > (id & 0xE7FF))
-			{
-				cnt2 = cnt1 * 2;
-				break;
-			}
-
-			abc = LPC_CANAF_RAM->mask[cnt1] & 0x0000E7FF;
-			if ((LPC_CANAF_RAM->mask[cnt1] & 0x0000E7FF) > (id & 0xE7FF))
-			{
-				cnt2 = cnt1 * 2 + 1;
-				break;
-			}
-
-			cnt1++;
-		}
-		/* cnt1 = U32 where to insert new ID */
-		/* cnt2 = U16 where to insert new ID */
-
-		if (cnt1 > bound1)
-		{
-			/* Adding ID as last entry */
-			/* Even number of IDs exists */
-			if ((CANAF_FullCAN_cnt & 0x0001) == 0)
-			{
-				LPC_CANAF_RAM->mask[cnt1]  = 0x0000FFFF | (id << 16);
-			}
-			/* Odd  number of IDs exists */
-			else
-			{
-				LPC_CANAF_RAM->mask[cnt1]  = (LPC_CANAF_RAM->mask[cnt1] & 0xFFFF0000) | id;
-			}
-		}
-		else
-		{
-			buf0 = LPC_CANAF_RAM->mask[cnt1]; /* Remember current entry */
-			if ((cnt2 & 0x0001) == 0)
-			{
-				/* Insert new mask to even address*/
-				buf1 = (id << 16) | (buf0 >> 16);
-			}
-			else
-			{
-				/* Insert new mask to odd  address */
-				buf1 = (buf0 & 0xFFFF0000) | id;
-			}
-			LPC_CANAF_RAM->mask[cnt1] = buf1;/* Insert mask */
-			bound1 = CANAF_FullCAN_cnt >> 1;
-			/* Move all remaining standard mask entries one place up */
-			while (cnt1 < bound1)
-			{
-				cnt1++;
-				buf1  = LPC_CANAF_RAM->mask[cnt1];
-				LPC_CANAF_RAM->mask[cnt1] = (buf1 >> 16) | (buf0 << 16);
-				buf0  = buf1;
-			}
-
-			if ((CANAF_FullCAN_cnt & 0x0001) == 0)
-			{
-				/* Even number of IDs exists */
-				LPC_CANAF_RAM->mask[cnt1] = (LPC_CANAF_RAM->mask[cnt1] & 0xFFFF0000)
-											| (0x0000FFFF);
-			}
-		}
-	}
-	//restruct FulCAN Object Section
-	bound1 = CANAF_FullCAN_cnt - cnt2;
-	cnt1 = total - (CANAF_FullCAN_cnt)*3 + cnt2*3 + 1;
-	buf0 = LPC_CANAF_RAM->mask[cnt1];
-	buf1 = LPC_CANAF_RAM->mask[cnt1+1];
-	buf2 = LPC_CANAF_RAM->mask[cnt1+2];
-	LPC_CANAF_RAM->mask[cnt1]=LPC_CANAF_RAM->mask[cnt1+1]= LPC_CANAF_RAM->mask[cnt1+2]=0x00;
-	cnt1+=3;
-	while(bound1--)
-	{
-		tmp0 = LPC_CANAF_RAM->mask[cnt1];
-		tmp1 = LPC_CANAF_RAM->mask[cnt1+1];
-		tmp2 = LPC_CANAF_RAM->mask[cnt1+2];
-		LPC_CANAF_RAM->mask[cnt1]= buf0;
-		LPC_CANAF_RAM->mask[cnt1+1]= buf1;
-		LPC_CANAF_RAM->mask[cnt1+2]= buf2;
-		buf0 = tmp0;
-		buf1 = tmp1;
-		buf2 = tmp2;
-		cnt1+=3;
-	}
-	CANAF_FullCAN_cnt++;
-	//update address values
-	LPC_CANAF->SFF_sa 	  +=0x04;
-	LPC_CANAF->SFF_GRP_sa +=0x04 ;
-	LPC_CANAF->EFF_sa     +=0x04 ;
-	LPC_CANAF->EFF_GRP_sa +=0x04;
-	LPC_CANAF->ENDofTable +=0x04;
-
-	LPC_CANAF->AFMR = 0x04;
- 	return CAN_OK;
-}
-
-/********************************************************************//**
- * @brief		Load Group entry into AFLUT
- * @param[in]	CANx: CAN peripheral selected, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	lowerID, upperID: lower and upper identifier of entry
- * @param[in]	format: type of ID format, should be:
- * 				- STD_ID_FORMAT: Standard ID format (11-bit value)
- * 				- EXT_ID_FORMAT: Extended ID format (29-bit value)
- * @return 		CAN_ERROR, could be:
- * 				- CAN_OK: loading is successful
- * 				- CAN_CONFLICT_ID_ERROR: Conflict ID occurs
- * 				- CAN_OBJECTS_FULL_ERROR: no more space available
- *********************************************************************/
-CAN_ERROR CAN_LoadGroupEntry(LPC_CAN_TypeDef* CANx, uint32_t lowerID, \
-		uint32_t upperID, CAN_ID_FORMAT_Type format)
-{
-	uint16_t tmp = 0;
-	uint32_t buf0, buf1, entry1, entry2, LID,UID;
-	int16_t cnt1, bound1, total;
-	//LPC_CANAF_RAM_TypeDef *AFLUTTest = LPC_CANAF_RAM;
-
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_ID_FORMAT(format));
-
-	if(lowerID > upperID) return CAN_CONFLICT_ID_ERROR;
-	if(CANx == LPC_CAN1)
-	{
-		tmp = 0;
-	}
-	else
-	{
-		tmp = 1;
-	}
-
-	total =((CANAF_FullCAN_cnt+1)>>1)+ CANAF_FullCAN_cnt*3 +((CANAF_std_cnt + 1) >> 1)+  \
-			CANAF_gstd_cnt + CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-
-	/* Setup Acceptance Filter Configuration
-	Acceptance Filter Mode Register = Off */
-	LPC_CANAF->AFMR = 0x00000001;
-
-/*********Add Group of Standard Identifier Frame Format************/
-	if(format == STD_ID_FORMAT)
-	{
-		if ((total >= 512)){//don't have enough space
-			return CAN_OBJECTS_FULL_ERROR;
-		}
-		lowerID &=0x7FF; //mask ID
-		upperID &=0x7FF;
-		entry1  = (tmp << 29)|(lowerID << 16)|(tmp << 13)|(upperID << 0);
-		cnt1 = ((CANAF_FullCAN_cnt+1)>>1) + ((CANAF_std_cnt + 1) >> 1);
-
-		//if this is the first Group standard ID entry
-		if(CANAF_gstd_cnt == 0)
-		{
-			LPC_CANAF_RAM->mask[cnt1] = entry1;
-		}
-		else
-		{
-			//find the position to add new Group entry
-			bound1 = ((CANAF_FullCAN_cnt+1)>>1) + ((CANAF_std_cnt + 1) >> 1) + CANAF_gstd_cnt;
-			while(cnt1 < bound1)
-			{
-				//compare controller first
-				while((LPC_CANAF_RAM->mask[cnt1] >> 29)< (entry1 >> 29))//increase until meet greater or equal controller
-					cnt1++;
-				buf0 = LPC_CANAF_RAM->mask[cnt1];
-				if((LPC_CANAF_RAM->mask[cnt1] >> 29)> (entry1 >> 29)) //meet greater controller
-				{
-					//add at this position
-					LPC_CANAF_RAM->mask[cnt1] = entry1;
-					break;
-				}
-				else //meet equal controller
-				{
-					LID  = (buf0 >> 16)&0x7FF;
-					UID  = buf0 & 0x7FF;
-					if (upperID <= LID)
-					{
-						//add new entry before this entry
-						LPC_CANAF_RAM->mask[cnt1] = entry1;
-						break;
-					}
-					else if (lowerID >= UID)
-					{
-						//load next entry to compare
-						cnt1 ++;
-					}
-					else
-						return CAN_CONFLICT_ID_ERROR;
-				}
-			}
-			if(cnt1 >= bound1)
-			{
-				//add new entry at the last position in this list
-				buf0 = LPC_CANAF_RAM->mask[cnt1];
-				LPC_CANAF_RAM->mask[cnt1] = entry1;
-			}
-
-			//remove all remaining entry of this section one place up
-			bound1 = total - cnt1;
-			while(bound1--)
-			{
-				cnt1++;
-				buf1 = LPC_CANAF_RAM->mask[cnt1];
-				LPC_CANAF_RAM->mask[cnt1] = buf0;
-				buf0 = buf1;
-			}
-		}
-		CANAF_gstd_cnt++;
-		//update address values
-		LPC_CANAF->EFF_sa     +=0x04 ;
-		LPC_CANAF->EFF_GRP_sa +=0x04;
-		LPC_CANAF->ENDofTable +=0x04;
-	}
-
-
-/*********Add Group of Extended Identifier Frame Format************/
-	else
-	{
-		if ((total >= 511)){//don't have enough space
-			return CAN_OBJECTS_FULL_ERROR;
-		}
-		lowerID  &= 0x1FFFFFFF; //mask ID
-		upperID &= 0x1FFFFFFF;
-		entry1   = (tmp << 29)|(lowerID << 0);
-		entry2   = (tmp << 29)|(upperID << 0);
-
-		cnt1 = ((CANAF_FullCAN_cnt+1)>>1) + ((CANAF_std_cnt + 1) >> 1) + CANAF_gstd_cnt + CANAF_ext_cnt;
-		//if this is the first Group standard ID entry
-		if(CANAF_gext_cnt == 0)
-		{
-			LPC_CANAF_RAM->mask[cnt1] = entry1;
-			LPC_CANAF_RAM->mask[cnt1+1] = entry2;
-		}
-		else
-		{
-			//find the position to add new Group entry
-			bound1 = ((CANAF_FullCAN_cnt+1)>>1) + ((CANAF_std_cnt + 1) >> 1) + CANAF_gstd_cnt \
-						+ CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-			while(cnt1 < bound1)
-			{
-				while((LPC_CANAF_RAM->mask[cnt1] >>29)< tmp) //increase until meet greater or equal controller
-					cnt1++;
-				buf0 = LPC_CANAF_RAM->mask[cnt1];
-				buf1 = LPC_CANAF_RAM->mask[cnt1+1];
-				if((LPC_CANAF_RAM->mask[cnt1] >> 29)> (entry1 >> 29)) //meet greater controller
-				{
-					//add at this position
-					LPC_CANAF_RAM->mask[cnt1] = entry1;
-					LPC_CANAF_RAM->mask[++cnt1] = entry2;
-					break;
-				}
-				else //meet equal controller
-				{
-					LID  = buf0 & 0x1FFFFFFF; //mask ID
-					UID  = buf1 & 0x1FFFFFFF;
-					if (upperID <= LID)
-					{
-						//add new entry before this entry
-						LPC_CANAF_RAM->mask[cnt1] = entry1;
-						LPC_CANAF_RAM->mask[++cnt1] = entry2;
-						break;
-					}
-					else if (lowerID >= UID)
-					{
-						//load next entry to compare
-						cnt1 +=2;
-					}
-					else
-						return CAN_CONFLICT_ID_ERROR;
-				}
-			}
-			if(cnt1 >= bound1)
-			{
-				//add new entry at the last position in this list
-				buf0 = LPC_CANAF_RAM->mask[cnt1];
-				buf1 = LPC_CANAF_RAM->mask[cnt1+1];
-				LPC_CANAF_RAM->mask[cnt1]   = entry1;
-				LPC_CANAF_RAM->mask[++cnt1] = entry2;
-			}
-			//remove all remaining entry of this section two place up
-			bound1 = total - cnt1 + 1;
-			cnt1++;
-			while(bound1>0)
-			{
-				entry1 = LPC_CANAF_RAM->mask[cnt1];
-				entry2 = LPC_CANAF_RAM->mask[cnt1+1];
-				LPC_CANAF_RAM->mask[cnt1]   = buf0;
-				LPC_CANAF_RAM->mask[cnt1+1] = buf1;
-				buf0 = entry1;
-				buf1 = entry2;
-				cnt1   +=2;
-				bound1 -=2;
-			}
-		}
-		CANAF_gext_cnt++;
-		//update address values
-		LPC_CANAF->ENDofTable +=0x08;
-	}
-	LPC_CANAF->AFMR = 0x04;
- 	return CAN_OK;
-}
-
-/********************************************************************//**
- * @brief		Remove AFLUT entry (FullCAN entry and Explicit Standard entry)
- * @param[in]	EntryType: the type of entry that want to remove, should be:
- * 				- FULLCAN_ENTRY
- * 				- EXPLICIT_STANDARD_ENTRY
- * 				- GROUP_STANDARD_ENTRY
- * 				- EXPLICIT_EXTEND_ENTRY
- * 				- GROUP_EXTEND_ENTRY
- * @param[in]	position: the position of this entry in its section
- * Note: the first position is 0
- * @return 		CAN_ERROR, could be:
- * 				- CAN_OK: removing is successful
- * 				- CAN_ENTRY_NOT_EXIT_ERROR: entry want to remove is not exit
- *********************************************************************/
-CAN_ERROR CAN_RemoveEntry(AFLUT_ENTRY_Type EntryType, uint16_t position)
-{
-	uint16_t cnt, bound, total;
-	uint32_t buf0, buf1;
-	CHECK_PARAM(PARAM_AFLUT_ENTRY_TYPE(EntryType));
-	CHECK_PARAM(PARAM_POSITION(position));
-
-	/* Setup Acceptance Filter Configuration
-	Acceptance Filter Mode Register = Off */
-	LPC_CANAF->AFMR = 0x00000001;
-	total = ((CANAF_FullCAN_cnt+1)>>1)+((CANAF_std_cnt + 1) >> 1) + \
-			CANAF_gstd_cnt + CANAF_ext_cnt + (CANAF_gext_cnt<<1);
-
-
-/************** Remove FullCAN Entry *************/
-	if(EntryType == FULLCAN_ENTRY)
-	{
-		if((CANAF_FullCAN_cnt==0)||(position >= CANAF_FullCAN_cnt))
-		{
-			return CAN_ENTRY_NOT_EXIT_ERROR;
-		}
-		else
-		{
-			cnt = position >> 1;
-			buf0 = LPC_CANAF_RAM->mask[cnt];
-			bound = (CANAF_FullCAN_cnt - position -1)>>1;
-			if((position & 0x0001) == 0) //event position
-			{
-				while(bound--)
-				{
-					//remove all remaining FullCAN entry one place down
-					buf1  = LPC_CANAF_RAM->mask[cnt+1];
-					LPC_CANAF_RAM->mask[cnt] = (buf1 >> 16) | (buf0 << 16);
-					buf0  = buf1;
-					cnt++;
-				}
-			}
-			else //odd position
-			{
-				while(bound--)
-				{
-					//remove all remaining FullCAN entry one place down
-					buf1  = LPC_CANAF_RAM->mask[cnt+1];
-					LPC_CANAF_RAM->mask[cnt] = (buf0 & 0xFFFF0000)|(buf1 >> 16);
-					LPC_CANAF_RAM->mask[cnt+1] = LPC_CANAF_RAM->mask[cnt+1] << 16;
-					buf0  = buf1<<16;
-					cnt++;
-				}
-			}
-			if((CANAF_FullCAN_cnt & 0x0001) == 0)
-			{
-				if((position & 0x0001)==0)
-					LPC_CANAF_RAM->mask[cnt] = (buf0 << 16) | (0x0000FFFF);
-				else
-					LPC_CANAF_RAM->mask[cnt] = buf0 | 0x0000FFFF;
-			}
-			else
-			{
-				//remove all remaining section one place down
-				cnt = (CANAF_FullCAN_cnt + 1)>>1;
-				bound = total + CANAF_FullCAN_cnt * 3;
-				while(bound>cnt)
-				{
-					LPC_CANAF_RAM->mask[cnt-1] = LPC_CANAF_RAM->mask[cnt];
-					cnt++;
-				}
-				LPC_CANAF_RAM->mask[cnt-1]=0x00;
-				//update address values
-				LPC_CANAF->SFF_sa 	  -=0x04;
-				LPC_CANAF->SFF_GRP_sa -=0x04 ;
-				LPC_CANAF->EFF_sa     -=0x04 ;
-				LPC_CANAF->EFF_GRP_sa -=0x04;
-				LPC_CANAF->ENDofTable -=0x04;
-			}
-			CANAF_FullCAN_cnt--;
-
-			//delete its FullCAN Object in the FullCAN Object section
-			//remove all remaining FullCAN Object three place down
-			cnt = total + position * 3;
-			bound = (CANAF_FullCAN_cnt - position + 1) * 3;
-
-			while(bound)
-			{
-				LPC_CANAF_RAM->mask[cnt]=LPC_CANAF_RAM->mask[cnt+3];;
-				LPC_CANAF_RAM->mask[cnt+1]=LPC_CANAF_RAM->mask[cnt+4];
-				LPC_CANAF_RAM->mask[cnt+2]=LPC_CANAF_RAM->mask[cnt+5];
-				bound -=3;
-				cnt   +=3;
-			}
-		}
-	}
-
-/************** Remove Explicit Standard ID Entry *************/
-	else if(EntryType == EXPLICIT_STANDARD_ENTRY)
-	{
-		if((CANAF_std_cnt==0)||(position >= CANAF_std_cnt))
-		{
-			return CAN_ENTRY_NOT_EXIT_ERROR;
-		}
-		else
-		{
-			cnt = ((CANAF_FullCAN_cnt+1)>>1)+ (position >> 1);
-			buf0 = LPC_CANAF_RAM->mask[cnt];
-			bound = (CANAF_std_cnt - position - 1)>>1;
-			if((position & 0x0001) == 0) //event position
-			{
-				while(bound--)
-				{
-					//remove all remaining FullCAN entry one place down
-					buf1  = LPC_CANAF_RAM->mask[cnt+1];
-					LPC_CANAF_RAM->mask[cnt] = (buf1 >> 16) | (buf0 << 16);
-					buf0  = buf1;
-					cnt++;
-				}
-			}
-			else //odd position
-			{
-				while(bound--)
-				{
-					//remove all remaining FullCAN entry one place down
-					buf1  = LPC_CANAF_RAM->mask[cnt+1];
-					LPC_CANAF_RAM->mask[cnt] = (buf0 & 0xFFFF0000)|(buf1 >> 16);
-					LPC_CANAF_RAM->mask[cnt+1] = LPC_CANAF_RAM->mask[cnt+1] << 16;
-					buf0  = buf1<<16;
-					cnt++;
-				}
-			}
-			if((CANAF_std_cnt & 0x0001) == 0)
-			{
-				if((position & 0x0001)==0)
-					LPC_CANAF_RAM->mask[cnt] = (buf0 << 16) | (0x0000FFFF);
-				else
-					LPC_CANAF_RAM->mask[cnt] = buf0 | 0x0000FFFF;
-			}
-			else
-			{
-				//remove all remaining section one place down
-				cnt = ((CANAF_FullCAN_cnt + 1)>>1) + ((CANAF_std_cnt + 1) >> 1);
-				bound = total + CANAF_FullCAN_cnt * 3;
-				while(bound>cnt)
-				{
-					LPC_CANAF_RAM->mask[cnt-1] = LPC_CANAF_RAM->mask[cnt];
-					cnt++;
-				}
-				LPC_CANAF_RAM->mask[cnt-1]=0x00;
-				//update address value
-				LPC_CANAF->SFF_GRP_sa -=0x04 ;
-				LPC_CANAF->EFF_sa     -=0x04 ;
-				LPC_CANAF->EFF_GRP_sa -=0x04;
-				LPC_CANAF->ENDofTable -=0x04;
-			}
-			CANAF_std_cnt--;
-		}
-	}
-
-/************** Remove Group of Standard ID Entry *************/
-	else if(EntryType == GROUP_STANDARD_ENTRY)
-	{
-		if((CANAF_gstd_cnt==0)||(position >= CANAF_gstd_cnt))
-		{
-			return CAN_ENTRY_NOT_EXIT_ERROR;
-		}
-		else
-		{
-			cnt = ((CANAF_FullCAN_cnt + 1)>>1) + ((CANAF_std_cnt + 1) >> 1)+ position + 1;
-			bound = total + CANAF_FullCAN_cnt * 3;
-			while (cnt<bound)
-			{
-				LPC_CANAF_RAM->mask[cnt-1] = LPC_CANAF_RAM->mask[cnt];
-				cnt++;
-			}
-			LPC_CANAF_RAM->mask[cnt-1]=0x00;
-		}
-		CANAF_gstd_cnt--;
-		//update address value
-		LPC_CANAF->EFF_sa     -=0x04;
-		LPC_CANAF->EFF_GRP_sa -=0x04;
-		LPC_CANAF->ENDofTable -=0x04;
-	}
-
-/************** Remove Explicit Extended ID Entry *************/
-	else if(EntryType == EXPLICIT_EXTEND_ENTRY)
-	{
-		if((CANAF_ext_cnt==0)||(position >= CANAF_ext_cnt))
-		{
-			return CAN_ENTRY_NOT_EXIT_ERROR;
-		}
-		else
-		{
-			cnt = ((CANAF_FullCAN_cnt + 1)>>1) + ((CANAF_std_cnt + 1) >> 1)+ CANAF_gstd_cnt + position + 1;
-			bound = total + CANAF_FullCAN_cnt * 3;
-			while (cnt<bound)
-			{
-				LPC_CANAF_RAM->mask[cnt-1] = LPC_CANAF_RAM->mask[cnt];
-				cnt++;
-			}
-			LPC_CANAF_RAM->mask[cnt-1]=0x00;
-		}
-		CANAF_ext_cnt--;
-		LPC_CANAF->EFF_GRP_sa -=0x04;
-		LPC_CANAF->ENDofTable -=0x04;
-	}
-
-/************** Remove Group of Extended ID Entry *************/
-	else
-	{
-		if((CANAF_gext_cnt==0)||(position >= CANAF_gext_cnt))
-		{
-			return CAN_ENTRY_NOT_EXIT_ERROR;
-		}
-		else
-		{
-			cnt = total - (CANAF_gext_cnt<<1) + (position<<1);
-			bound = total + CANAF_FullCAN_cnt * 3;
-			while (cnt<bound)
-			{
-				//remove all remaining entry two place up
-				LPC_CANAF_RAM->mask[cnt] = LPC_CANAF_RAM->mask[cnt+2];
-				LPC_CANAF_RAM->mask[cnt+1] = LPC_CANAF_RAM->mask[cnt+3];
-				cnt+=2;
-			}
-		}
-		CANAF_gext_cnt--;
-		LPC_CANAF->ENDofTable -=0x08;
-	}
-	LPC_CANAF->AFMR = 0x04;
-	return CAN_OK;
-}
-
-/********************************************************************//**
- * @brief		Send message data
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	CAN_Msg point to the CAN_MSG_Type Structure, it contains message
- * 				information such as: ID, DLC, RTR, ID Format
- * @return 		Status:
- * 				- SUCCESS: send message successfully
- * 				- ERROR: send message unsuccessfully
- *********************************************************************/
-Status CAN_SendMsg (LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg)
-{
-	uint32_t data;
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_ID_FORMAT(CAN_Msg->format));
-	if(CAN_Msg->format==STD_ID_FORMAT)
-	{
-		CHECK_PARAM(PARAM_ID_11(CAN_Msg->id));
-	}
-	else
-	{
-		CHECK_PARAM(PARAM_ID_29(CAN_Msg->id));
-	}
-	CHECK_PARAM(PARAM_DLC(CAN_Msg->len));
-	CHECK_PARAM(PARAM_FRAME_TYPE(CAN_Msg->type));
-
-	//Check status of Transmit Buffer 1
-	if (CANx->SR & (1<<2))
-	{
-		/* Transmit Channel 1 is available */
-		/* Write frame informations and frame data into its CANxTFI1,
-		 * CANxTID1, CANxTDA1, CANxTDB1 register */
-		CANx->TFI1 &= ~0x000F0000;
-		CANx->TFI1 |= (CAN_Msg->len)<<16;
-		if(CAN_Msg->type == REMOTE_FRAME)
-		{
-			CANx->TFI1 |= (1<<30); //set bit RTR
-		}
-		else
-		{
-			CANx->TFI1 &= ~(1<<30);
-		}
-		if(CAN_Msg->format == EXT_ID_FORMAT)
-		{
-			CANx->TFI1 |= (1UL<<31); //set bit FF
-		}
-		else
-		{
-			CANx->TFI1 &= ~(1UL<<31);
-		}
-
-		/* Write CAN ID*/
-		CANx->TID1 = CAN_Msg->id;
-
-		/*Write first 4 data bytes*/
-		data = (CAN_Msg->dataA[0])|(((CAN_Msg->dataA[1]))<<8)|((CAN_Msg->dataA[2])<<16)|((CAN_Msg->dataA[3])<<24);
-		CANx->TDA1 = data;
-
-		/*Write second 4 data bytes*/
-		data = (CAN_Msg->dataB[0])|(((CAN_Msg->dataB[1]))<<8)|((CAN_Msg->dataB[2])<<16)|((CAN_Msg->dataB[3])<<24);
-		CANx->TDB1 = data;
-
-		 /*Write transmission request*/
-		 CANx->CMR = 0x21;
-		 return SUCCESS;
-	}
-	//check status of Transmit Buffer 2
-	else if(CANx->SR & (1<<10))
-	{
-		/* Transmit Channel 2 is available */
-		/* Write frame informations and frame data into its CANxTFI2,
-		 * CANxTID2, CANxTDA2, CANxTDB2 register */
-		CANx->TFI2 &= ~0x000F0000;
-		CANx->TFI2 |= (CAN_Msg->len)<<16;
-		if(CAN_Msg->type == REMOTE_FRAME)
-		{
-			CANx->TFI2 |= (1<<30); //set bit RTR
-		}
-		else
-		{
-			CANx->TFI2 &= ~(1<<30);
-		}
-		if(CAN_Msg->format == EXT_ID_FORMAT)
-		{
-			CANx->TFI2 |= (1UL<<31); //set bit FF
-		}
-		else
-		{
-			CANx->TFI2 &= ~(1UL<<31);
-		}
-
-		/* Write CAN ID*/
-		CANx->TID2 = CAN_Msg->id;
-
-		/*Write first 4 data bytes*/
-		data = (CAN_Msg->dataA[0])|(((CAN_Msg->dataA[1]))<<8)|((CAN_Msg->dataA[2])<<16)|((CAN_Msg->dataA[3])<<24);
-		CANx->TDA2 = data;
-
-		/*Write second 4 data bytes*/
-		data = (CAN_Msg->dataB[0])|(((CAN_Msg->dataB[1]))<<8)|((CAN_Msg->dataB[2])<<16)|((CAN_Msg->dataB[3])<<24);
-		CANx->TDB2 = data;
-
-		/*Write transmission request*/
-		CANx->CMR = 0x41;
-		return SUCCESS;
-	}
-	//check status of Transmit Buffer 3
-	else if (CANx->SR & (1<<18))
-	{
-		/* Transmit Channel 3 is available */
-		/* Write frame informations and frame data into its CANxTFI3,
-		 * CANxTID3, CANxTDA3, CANxTDB3 register */
-		CANx->TFI3 &= ~0x000F0000;
-		CANx->TFI3 |= (CAN_Msg->len)<<16;
-		if(CAN_Msg->type == REMOTE_FRAME)
-		{
-			CANx->TFI3 |= (1<<30); //set bit RTR
-		}
-		else
-		{
-			CANx->TFI3 &= ~(1<<30);
-		}
-		if(CAN_Msg->format == EXT_ID_FORMAT)
-		{
-			CANx->TFI3 |= (1UL<<31); //set bit FF
-		}
-		else
-		{
-			CANx->TFI3 &= ~(1UL<<31);
-		}
-
-		/* Write CAN ID*/
-		CANx->TID3 = CAN_Msg->id;
-
-		/*Write first 4 data bytes*/
-		data = (CAN_Msg->dataA[0])|(((CAN_Msg->dataA[1]))<<8)|((CAN_Msg->dataA[2])<<16)|((CAN_Msg->dataA[3])<<24);
-		CANx->TDA3 = data;
-
-		/*Write second 4 data bytes*/
-		data = (CAN_Msg->dataB[0])|(((CAN_Msg->dataB[1]))<<8)|((CAN_Msg->dataB[2])<<16)|((CAN_Msg->dataB[3])<<24);
-		CANx->TDB3 = data;
-
-		/*Write transmission request*/
-		CANx->CMR = 0x81;
-		return SUCCESS;
-	}
-	else
-	{
-		return ERROR;
-	}
-}
-
-/********************************************************************//**
- * @brief		Receive message data
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	CAN_Msg point to the CAN_MSG_Type Struct, it will contain received
- *  			message information such as: ID, DLC, RTR, ID Format
- * @return 		Status:
- * 				- SUCCESS: receive message successfully
- * 				- ERROR: receive message unsuccessfully
- *********************************************************************/
-Status CAN_ReceiveMsg (LPC_CAN_TypeDef *CANx, CAN_MSG_Type *CAN_Msg)
-{
-	uint32_t data;
-
-	CHECK_PARAM(PARAM_CANx(CANx));
-
-	//check status of Receive Buffer
-	if((CANx->SR &0x00000001))
-	{
-		/* Receive message is available */
-		/* Read frame informations */
-		CAN_Msg->format   = (uint8_t)(((CANx->RFS) & 0x80000000)>>31);
-		CAN_Msg->type     = (uint8_t)(((CANx->RFS) & 0x40000000)>>30);
-		CAN_Msg->len      = (uint8_t)(((CANx->RFS) & 0x000F0000)>>16);
-
-
-		/* Read CAN message identifier */
-		CAN_Msg->id = CANx->RID;
-
-		/* Read the data if received message was DATA FRAME */
-		if (CAN_Msg->type == DATA_FRAME)
-		{
-			/* Read first 4 data bytes */
-			data = CANx->RDA;
-			*((uint8_t *) &CAN_Msg->dataA[0])= data & 0x000000FF;
-			*((uint8_t *) &CAN_Msg->dataA[1])= (data & 0x0000FF00)>>8;;
-			*((uint8_t *) &CAN_Msg->dataA[2])= (data & 0x00FF0000)>>16;
-			*((uint8_t *) &CAN_Msg->dataA[3])= (data & 0xFF000000)>>24;
-
-			/* Read second 4 data bytes */
-			data = CANx->RDB;
-			*((uint8_t *) &CAN_Msg->dataB[0])= data & 0x000000FF;
-			*((uint8_t *) &CAN_Msg->dataB[1])= (data & 0x0000FF00)>>8;
-			*((uint8_t *) &CAN_Msg->dataB[2])= (data & 0x00FF0000)>>16;
-			*((uint8_t *) &CAN_Msg->dataB[3])= (data & 0xFF000000)>>24;
-
-		/*release receive buffer*/
-		CANx->CMR = 0x04;
-		}
-		else
-		{
-			/* Received Frame is a Remote Frame, not have data, we just receive
-			 * message information only */
-			CANx->CMR = 0x04; /*release receive buffer*/
-			return SUCCESS;
-		}
-	}
-	else
-	{
-		// no receive message available
-		return ERROR;
-	}
-	return SUCCESS;
-}
-
-/********************************************************************//**
- * @brief		Receive FullCAN Object
- * @param[in]	CANAFx: CAN Acceptance Filter register, should be: LPC_CANAF
- * @param[in]	CAN_Msg point to the CAN_MSG_Type Struct, it will contain received
- *  			message information such as: ID, DLC, RTR, ID Format
- * @return 		CAN_ERROR, could be:
- * 				- CAN_FULL_OBJ_NOT_RCV: FullCAN Object is not be received
- * 				- CAN_OK: Received FullCAN Object successful
- *
- *********************************************************************/
-CAN_ERROR FCAN_ReadObj (LPC_CANAF_TypeDef* CANAFx, CAN_MSG_Type *CAN_Msg)
-{
-	uint32_t *pSrc, data;
-	uint32_t interrut_word, msg_idx, test_bit, head_idx, tail_idx;
-
-	CHECK_PARAM(PARAM_CANAFx(CANAFx));
-
-	interrut_word = 0;
-
-	if (LPC_CANAF->FCANIC0 != 0)
-	{
-		interrut_word = LPC_CANAF->FCANIC0;
-		head_idx = 0;
-		tail_idx = 31;
-	}
-	else if (LPC_CANAF->FCANIC1 != 0)
-	{
-		interrut_word = LPC_CANAF->FCANIC1;
-		head_idx = 32;
-		tail_idx = 63;
-	}
-
-	if (interrut_word != 0)
-	{
-		/* Detect for interrupt pending */
-		msg_idx = 0;
-		for (msg_idx = head_idx; msg_idx <= tail_idx; msg_idx++)
-		{
-			test_bit = interrut_word & 0x1;
-			interrut_word = interrut_word >> 1;
-
-			if (test_bit)
-			{
-				pSrc = (uint32_t *) (LPC_CANAF->ENDofTable + LPC_CANAF_RAM_BASE + msg_idx * 12);
-
-	    	 	/* Has been finished updating the content */
-	    	 	if ((*pSrc & 0x03000000L) == 0x03000000L)
-	    	 	{
-	    	 		/*clear semaphore*/
-	    	 		*pSrc &= 0xFCFFFFFF;
-
-	    	 		/*Set to DatA*/
-	    	 		pSrc++;
-	    	 		/* Copy to dest buf */
-	    	 		data = *pSrc;
-	    			*((uint8_t *) &CAN_Msg->dataA[0])= data & 0x000000FF;
-	    			*((uint8_t *) &CAN_Msg->dataA[1])= (data & 0x0000FF00)>>8;
-	    			*((uint8_t *) &CAN_Msg->dataA[2])= (data & 0x00FF0000)>>16;
-	    			*((uint8_t *) &CAN_Msg->dataA[3])= (data & 0xFF000000)>>24;
-
-	    	 		/*Set to DatB*/
-	    	 		pSrc++;
-	    	 		/* Copy to dest buf */
-	    	 		data = *pSrc;
-	    			*((uint8_t *) &CAN_Msg->dataB[0])= data & 0x000000FF;
-	    			*((uint8_t *) &CAN_Msg->dataB[1])= (data & 0x0000FF00)>>8;
-	    			*((uint8_t *) &CAN_Msg->dataB[2])= (data & 0x00FF0000)>>16;
-	    			*((uint8_t *) &CAN_Msg->dataB[3])= (data & 0xFF000000)>>24;
-	    	 		/*Back to Dat1*/
-	    	 		pSrc -= 2;
-
-	    	 		CAN_Msg->id = *pSrc & 0x7FF;
-	    	 		CAN_Msg->len = (uint8_t) (*pSrc >> 16) & 0x0F;
-					CAN_Msg->format = 0; //FullCAN Object ID always is 11-bit value
-					CAN_Msg->type = (uint8_t)(*pSrc >> 30) &0x01;
-	    	 		/*Re-read semaphore*/
-	    	 		if ((*pSrc & 0x03000000L) == 0)
-	    	 		{
-	    	 			return CAN_OK;
-	    	 		}
-	    	 	}
-			}
-		}
-	}
-	return CAN_FULL_OBJ_NOT_RCV;
-}
-/********************************************************************//**
- * @brief		Get CAN Control Status
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	arg: type of CAN status to get from CAN status register
- * 				Should be:
- * 				- CANCTRL_GLOBAL_STS: CAN Global Status
- * 				- CANCTRL_INT_CAP: CAN Interrupt and Capture
- * 				- CANCTRL_ERR_WRN: CAN Error Warning Limit
- * 				- CANCTRL_STS: CAN Control Status
- * @return 		Current Control Status that you want to get value
- *********************************************************************/
-uint32_t CAN_GetCTRLStatus (LPC_CAN_TypeDef* CANx, CAN_CTRL_STS_Type arg)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_CTRL_STS_TYPE(arg));
-
-	switch (arg)
-	{
-	case CANCTRL_GLOBAL_STS:
-		return CANx->GSR;
-
-	case CANCTRL_INT_CAP:
-		return CANx->ICR;
-
-	case CANCTRL_ERR_WRN:
-		return CANx->EWL;
-
-	default: // CANCTRL_STS
-		return CANx->SR;
-	}
-}
-/********************************************************************//**
- * @brief		Get CAN Central Status
- * @param[in]	CANCRx point to LPC_CANCR_TypeDef, should be: LPC_CANCR
- * @param[in]	arg: type of CAN status to get from CAN Central status register
- * 				Should be:
- * 				- CANCR_TX_STS: Central CAN Tx Status
- * 				- CANCR_RX_STS: Central CAN Rx Status
- * 				- CANCR_MS: Central CAN Miscellaneous Status
- * @return 		Current Central Status that you want to get value
- *********************************************************************/
-uint32_t CAN_GetCRStatus (LPC_CANCR_TypeDef* CANCRx, CAN_CR_STS_Type arg)
-{
-	CHECK_PARAM(PARAM_CANCRx(CANCRx));
-	CHECK_PARAM(PARAM_CR_STS_TYPE(arg));
-
-	switch (arg)
-	{
-	case CANCR_TX_STS:
-		return CANCRx->CANTxSR;
-
-	case CANCR_RX_STS:
-		return CANCRx->CANRxSR;
-
-	default:	// CANCR_MS
-		return CANCRx->CANMSR;
-	}
-}
-/********************************************************************//**
- * @brief		Enable/Disable CAN Interrupt
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	arg: type of CAN interrupt that you want to enable/disable
- * 				Should be:
- * 				- CANINT_RIE: CAN Receiver Interrupt Enable
- * 				- CANINT_TIE1: CAN Transmit Interrupt Enable
- * 				- CANINT_EIE: CAN Error Warning Interrupt Enable
- * 				- CANINT_DOIE: CAN Data Overrun Interrupt Enable
- * 				- CANINT_WUIE: CAN Wake-Up Interrupt Enable
- * 				- CANINT_EPIE: CAN Error Passive Interrupt Enable
- * 				- CANINT_ALIE: CAN Arbitration Lost Interrupt Enable
- * 				- CANINT_BEIE: CAN Bus Error Interrupt Enable
- * 				- CANINT_IDIE: CAN ID Ready Interrupt Enable
- * 				- CANINT_TIE2: CAN Transmit Interrupt Enable for Buffer2
- * 				- CANINT_TIE3: CAN Transmit Interrupt Enable for Buffer3
- * 				- CANINT_FCE: FullCAN Interrupt Enable
- * @param[in]	NewState: New state of this function, should be:
- * 				- ENABLE
- * 				- DISABLE
- * @return 		none
- *********************************************************************/
-void CAN_IRQCmd (LPC_CAN_TypeDef* CANx, CAN_INT_EN_Type arg, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_INT_EN_TYPE(arg));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if(NewState == ENABLE)
-	{
-		if(arg==CANINT_FCE)
-		{
-			LPC_CANAF->AFMR = 0x01;
-			LPC_CANAF->FCANIE = 0x01;
-			LPC_CANAF->AFMR = 0x04;
-		}
-		else
-			CANx->IER |= (1 << arg);
-	}
-	else
-	{
-		if(arg==CANINT_FCE){
-			LPC_CANAF->AFMR = 0x01;
-			LPC_CANAF->FCANIE = 0x01;
-			LPC_CANAF->AFMR = 0x00;
-		}
-		else
-			CANx->IER &= ~(1 << arg);
-	}
-}
-
-/********************************************************************//**
- * @brief		Setting Acceptance Filter mode
- * @param[in]	CANAFx point to LPC_CANAF_TypeDef object, should be: LPC_CANAF
- * @param[in]	AFMode: type of AF mode that you want to set, should be:
- * 				- CAN_Normal: Normal mode
- * 				- CAN_AccOff: Acceptance Filter Off Mode
- * 				- CAN_AccBP: Acceptance Fileter Bypass Mode
- * 				- CAN_eFCAN: FullCAN Mode Enhancement
- * @return 		none
- *********************************************************************/
-void CAN_SetAFMode (LPC_CANAF_TypeDef* CANAFx, CAN_AFMODE_Type AFMode)
-{
-	CHECK_PARAM(PARAM_CANAFx(CANAFx));
-	CHECK_PARAM(PARAM_AFMODE_TYPE(AFMode));
-
-	switch(AFMode)
-	{
-	case CAN_Normal:
-		CANAFx->AFMR = 0x00;
-		break;
-	case CAN_AccOff:
-		CANAFx->AFMR = 0x01;
-		break;
-	case CAN_AccBP:
-		CANAFx->AFMR = 0x02;
-		break;
-	case CAN_eFCAN:
-		CANAFx->AFMR = 0x04;
-		break;
-	}
-}
-
-/********************************************************************//**
- * @brief		Enable/Disable CAN Mode
- * @param[in]	CANx pointer to LPC_CAN_TypeDef, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	mode: type of CAN mode that you want to enable/disable, should be:
- * 				- CAN_OPERATING_MODE: Normal Operating Mode
- * 				- CAN_RESET_MODE: Reset Mode
- * 				- CAN_LISTENONLY_MODE: Listen Only Mode
- * 				- CAN_SELFTEST_MODE: Self Test Mode
- * 				- CAN_TXPRIORITY_MODE: Transmit Priority Mode
- * 				- CAN_SLEEP_MODE: Sleep Mode
- * 				- CAN_RXPOLARITY_MODE: Receive Polarity Mode
- * 				- CAN_TEST_MODE: Test Mode
- * @param[in]	NewState: New State of this function, should be:
- * 				- ENABLE
- * 				- DISABLE
- * @return 		none
- *********************************************************************/
-void CAN_ModeConfig(LPC_CAN_TypeDef* CANx, CAN_MODE_Type mode, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CHECK_PARAM(PARAM_MODE_TYPE(mode));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	switch(mode)
-	{
-	case CAN_OPERATING_MODE:
-		CANx->MOD = 0x00;
-		break;
-	case CAN_RESET_MODE:
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_RM;
-		else
-			CANx->MOD &= ~CAN_MOD_RM;
-		break;
-	case CAN_LISTENONLY_MODE:
-		CANx->MOD |=CAN_MOD_RM;//Enter Reset mode
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_LOM;
-		else
-			CANx->MOD &=~CAN_MOD_LOM;
-		CANx->MOD &=~CAN_MOD_RM;//Release Reset mode
-		break;
-	case CAN_SELFTEST_MODE:
-		CANx->MOD |=CAN_MOD_RM;//Enter Reset mode
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_STM;
-		else
-			CANx->MOD &=~CAN_MOD_STM;
-		CANx->MOD &=~CAN_MOD_RM;//Release Reset mode
-		break;
-	case CAN_TXPRIORITY_MODE:
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_TPM;
-		else
-			CANx->MOD &=~CAN_MOD_TPM;
-		break;
-	case CAN_SLEEP_MODE:
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_SM;
-		else
-			CANx->MOD &=~CAN_MOD_SM;
-		break;
-	case CAN_RXPOLARITY_MODE:
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_RPM;
-		else
-			CANx->MOD &=~CAN_MOD_RPM;
-		break;
-	case CAN_TEST_MODE:
-		if(NewState == ENABLE)
-			CANx->MOD |=CAN_MOD_TM;
-		else
-			CANx->MOD &=~CAN_MOD_TM;
-		break;
-	}
-}
-/*********************************************************************//**
- * @brief		Set CAN command request
- * @param[in]	CANx point to CAN peripheral selected, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @param[in]	CMRType	command request type, should be:
- * 				- CAN_CMR_TR: Transmission request
- * 				- CAN_CMR_AT: Abort Transmission request
- * 				- CAN_CMR_RRB: Release Receive Buffer request
- * 				- CAN_CMR_CDO: Clear Data Overrun request
- * 				- CAN_CMR_SRR: Self Reception request
- * 				- CAN_CMR_STB1: Select Tx Buffer 1 request
- * 				- CAN_CMR_STB2: Select Tx Buffer 2 request
- * 				- CAN_CMR_STB3: Select Tx Buffer 3 request
- * @return		CANICR (CAN interrupt and Capture register) value
- **********************************************************************/
-void CAN_SetCommand(LPC_CAN_TypeDef* CANx, uint32_t CMRType)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-	CANx->CMR |= CMRType;
-}
-
-/*********************************************************************//**
- * @brief		Get CAN interrupt status
- * @param[in]	CANx point to CAN peripheral selected, should be:
- * 				- LPC_CAN1: CAN1 peripheral
- * 				- LPC_CAN2: CAN2 peripheral
- * @return		CANICR (CAN interrupt and Capture register) value
- **********************************************************************/
-uint32_t CAN_IntGetStatus(LPC_CAN_TypeDef* CANx)
-{
-	CHECK_PARAM(PARAM_CANx(CANx));
-	return CANx->ICR;
-}
-
-/*********************************************************************//**
- * @brief		Check if FullCAN interrupt enable or not
- * @param[in]	CANAFx point to LPC_CANAF_TypeDef object, should be: LPC_CANAF
- * @return		IntStatus, could be:
- * 				- SET: if FullCAN interrupt is enable
- * 				- RESET: if FullCAN interrupt is disable
- **********************************************************************/
-IntStatus CAN_FullCANIntGetStatus (LPC_CANAF_TypeDef* CANAFx)
-{
-	CHECK_PARAM( PARAM_CANAFx(CANAFx));
-	if (CANAFx->FCANIE)
-		return SET;
-	return RESET;
-}
-
-/*********************************************************************//**
- * @brief		Get value of FullCAN interrupt and capture register
- * @param[in]	CANAFx point to LPC_CANAF_TypeDef object, should be: LPC_CANAF
- * @param[in]	type: FullCAN IC type, should be:
- * 				- FULLCAN_IC0: FullCAN Interrupt Capture 0
- * 				- FULLCAN_IC1: FullCAN Interrupt Capture 1
- * @return		FCANIC0 or FCANIC1 (FullCAN interrupt and Capture register) value
- **********************************************************************/
-uint32_t CAN_FullCANPendGetStatus(LPC_CANAF_TypeDef* CANAFx, FullCAN_IC_Type type)
-{
-	CHECK_PARAM(PARAM_CANAFx(CANAFx));
-	CHECK_PARAM( PARAM_FULLCAN_IC(type));
-	if (type == FULLCAN_IC0)
-		return CANAFx->FCANIC0;
-	return CANAFx->FCANIC1;
-}
-/* End of Public Variables ---------------------------------------------------------- */
-/**
- * @}
- */
-
-#endif /* _CAN */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_clkpwr.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_clkpwr.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,347 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_clkpwr.c				2010-06-18
-*//**
-* @file		lpc17xx_clkpwr.c
-* @brief	Contains all functions support for Clock and Power Control
-* 			firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup CLKPWR
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_clkpwr.h"
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup CLKPWR_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Set value of each Peripheral Clock Selection
- * @param[in]	ClkType	Peripheral Clock Selection of each type,
- * 				should be one of the following:
- *				- CLKPWR_PCLKSEL_WDT   		: WDT
-				- CLKPWR_PCLKSEL_TIMER0   	: Timer 0
-				- CLKPWR_PCLKSEL_TIMER1   	: Timer 1
-				- CLKPWR_PCLKSEL_UART0   	: UART 0
-				- CLKPWR_PCLKSEL_UART1  	: UART 1
-				- CLKPWR_PCLKSEL_PWM1   	: PWM 1
-				- CLKPWR_PCLKSEL_I2C0   	: I2C 0
-				- CLKPWR_PCLKSEL_SPI   		: SPI
-				- CLKPWR_PCLKSEL_SSP1   	: SSP 1
-				- CLKPWR_PCLKSEL_DAC   		: DAC
-				- CLKPWR_PCLKSEL_ADC   		: ADC
-				- CLKPWR_PCLKSEL_CAN1  		: CAN 1
-				- CLKPWR_PCLKSEL_CAN2  		: CAN 2
-				- CLKPWR_PCLKSEL_ACF   		: ACF
-				- CLKPWR_PCLKSEL_QEI 		: QEI
-				- CLKPWR_PCLKSEL_PCB   		: PCB
-				- CLKPWR_PCLKSEL_I2C1   	: I2C 1
-				- CLKPWR_PCLKSEL_SSP0   	: SSP 0
-				- CLKPWR_PCLKSEL_TIMER2   	: Timer 2
-				- CLKPWR_PCLKSEL_TIMER3   	: Timer 3
-				- CLKPWR_PCLKSEL_UART2   	: UART 2
-				- CLKPWR_PCLKSEL_UART3   	: UART 3
-				- CLKPWR_PCLKSEL_I2C2   	: I2C 2
-				- CLKPWR_PCLKSEL_I2S   		: I2S
-				- CLKPWR_PCLKSEL_RIT   		: RIT
-				- CLKPWR_PCLKSEL_SYSCON   	: SYSCON
-				- CLKPWR_PCLKSEL_MC 		: MC
-
- * @param[in]	DivVal	Value of divider, should be:
- * 				- CLKPWR_PCLKSEL_CCLK_DIV_4 : PCLK_peripheral = CCLK/4
- * 				- CLKPWR_PCLKSEL_CCLK_DIV_1 : PCLK_peripheral = CCLK/1
- *				- CLKPWR_PCLKSEL_CCLK_DIV_2 : PCLK_peripheral = CCLK/2
- *
- * @return none
- **********************************************************************/
-void CLKPWR_SetPCLKDiv (uint32_t ClkType, uint32_t DivVal)
-{
-	uint32_t bitpos;
-
-	bitpos = (ClkType < 32) ? (ClkType) : (ClkType - 32);
-
-	/* PCLKSEL0 selected */
-	if (ClkType < 32)
-	{
-		/* Clear two bit at bit position */
-		LPC_SC->PCLKSEL0 &= (~(CLKPWR_PCLKSEL_BITMASK(bitpos)));
-
-		/* Set two selected bit */
-		LPC_SC->PCLKSEL0 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal));
-	}
-	/* PCLKSEL1 selected */
-	else
-	{
-		/* Clear two bit at bit position */
-		LPC_SC->PCLKSEL1 &= ~(CLKPWR_PCLKSEL_BITMASK(bitpos));
-
-		/* Set two selected bit */
-		LPC_SC->PCLKSEL1 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal));
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Get current value of each Peripheral Clock Selection
- * @param[in]	ClkType	Peripheral Clock Selection of each type,
- * 				should be one of the following:
- *				- CLKPWR_PCLKSEL_WDT   		: WDT
-				- CLKPWR_PCLKSEL_TIMER0   	: Timer 0
-				- CLKPWR_PCLKSEL_TIMER1   	: Timer 1
-				- CLKPWR_PCLKSEL_UART0   	: UART 0
-				- CLKPWR_PCLKSEL_UART1  	: UART 1
-				- CLKPWR_PCLKSEL_PWM1   	: PWM 1
-				- CLKPWR_PCLKSEL_I2C0   	: I2C 0
-				- CLKPWR_PCLKSEL_SPI   		: SPI
-				- CLKPWR_PCLKSEL_SSP1   	: SSP 1
-				- CLKPWR_PCLKSEL_DAC   		: DAC
-				- CLKPWR_PCLKSEL_ADC   		: ADC
-				- CLKPWR_PCLKSEL_CAN1  		: CAN 1
-				- CLKPWR_PCLKSEL_CAN2  		: CAN 2
-				- CLKPWR_PCLKSEL_ACF   		: ACF
-				- CLKPWR_PCLKSEL_QEI 		: QEI
-				- CLKPWR_PCLKSEL_PCB   		: PCB
-				- CLKPWR_PCLKSEL_I2C1   	: I2C 1
-				- CLKPWR_PCLKSEL_SSP0   	: SSP 0
-				- CLKPWR_PCLKSEL_TIMER2   	: Timer 2
-				- CLKPWR_PCLKSEL_TIMER3   	: Timer 3
-				- CLKPWR_PCLKSEL_UART2   	: UART 2
-				- CLKPWR_PCLKSEL_UART3   	: UART 3
-				- CLKPWR_PCLKSEL_I2C2   	: I2C 2
-				- CLKPWR_PCLKSEL_I2S   		: I2S
-				- CLKPWR_PCLKSEL_RIT   		: RIT
-				- CLKPWR_PCLKSEL_SYSCON   	: SYSCON
-				- CLKPWR_PCLKSEL_MC 		: MC
-
- * @return		Value of Selected Peripheral Clock Selection
- **********************************************************************/
-uint32_t CLKPWR_GetPCLKSEL (uint32_t ClkType)
-{
-	uint32_t bitpos, retval;
-
-	if (ClkType < 32)
-	{
-		bitpos = ClkType;
-		retval = LPC_SC->PCLKSEL0;
-	}
-	else
-	{
-		bitpos = ClkType - 32;
-		retval = LPC_SC->PCLKSEL1;
-	}
-
-	retval = CLKPWR_PCLKSEL_GET(bitpos, retval);
-	return retval;
-}
-
-
-
-/*********************************************************************//**
- * @brief 		Get current value of each Peripheral Clock
- * @param[in]	ClkType	Peripheral Clock Selection of each type,
- * 				should be one of the following:
- *				- CLKPWR_PCLKSEL_WDT   		: WDT
-				- CLKPWR_PCLKSEL_TIMER0   	: Timer 0
-				- CLKPWR_PCLKSEL_TIMER1   	: Timer 1
-				- CLKPWR_PCLKSEL_UART0   	: UART 0
-				- CLKPWR_PCLKSEL_UART1  	: UART 1
-				- CLKPWR_PCLKSEL_PWM1   	: PWM 1
-				- CLKPWR_PCLKSEL_I2C0   	: I2C 0
-				- CLKPWR_PCLKSEL_SPI   		: SPI
-				- CLKPWR_PCLKSEL_SSP1   	: SSP 1
-				- CLKPWR_PCLKSEL_DAC   		: DAC
-				- CLKPWR_PCLKSEL_ADC   		: ADC
-				- CLKPWR_PCLKSEL_CAN1  		: CAN 1
-				- CLKPWR_PCLKSEL_CAN2  		: CAN 2
-				- CLKPWR_PCLKSEL_ACF   		: ACF
-				- CLKPWR_PCLKSEL_QEI 		: QEI
-				- CLKPWR_PCLKSEL_PCB   		: PCB
-				- CLKPWR_PCLKSEL_I2C1   	: I2C 1
-				- CLKPWR_PCLKSEL_SSP0   	: SSP 0
-				- CLKPWR_PCLKSEL_TIMER2   	: Timer 2
-				- CLKPWR_PCLKSEL_TIMER3   	: Timer 3
-				- CLKPWR_PCLKSEL_UART2   	: UART 2
-				- CLKPWR_PCLKSEL_UART3   	: UART 3
-				- CLKPWR_PCLKSEL_I2C2   	: I2C 2
-				- CLKPWR_PCLKSEL_I2S   		: I2S
-				- CLKPWR_PCLKSEL_RIT   		: RIT
-				- CLKPWR_PCLKSEL_SYSCON   	: SYSCON
-				- CLKPWR_PCLKSEL_MC 		: MC
-
- * @return		Value of Selected Peripheral Clock
- **********************************************************************/
-uint32_t CLKPWR_GetPCLK (uint32_t ClkType)
-{
-	uint32_t retval, div;
-
-	retval = SystemCoreClock;
-	div = CLKPWR_GetPCLKSEL(ClkType);
-
-	switch (div)
-	{
-	case 0:
-		div = 4;
-		break;
-
-	case 1:
-		div = 1;
-		break;
-
-	case 2:
-		div = 2;
-		break;
-
-	case 3:
-		div = 8;
-		break;
-	}
-	retval /= div;
-
-	return retval;
-}
-
-
-
-/*********************************************************************//**
- * @brief 		Configure power supply for each peripheral according to NewState
- * @param[in]	PPType	Type of peripheral used to enable power,
- *     					should be one of the following:
- *     			-  CLKPWR_PCONP_PCTIM0 		: Timer 0
-				-  CLKPWR_PCONP_PCTIM1 		: Timer 1
-				-  CLKPWR_PCONP_PCUART0  	: UART 0
-				-  CLKPWR_PCONP_PCUART1   	: UART 1
-				-  CLKPWR_PCONP_PCPWM1 		: PWM 1
-				-  CLKPWR_PCONP_PCI2C0 		: I2C 0
-				-  CLKPWR_PCONP_PCSPI   	: SPI
-				-  CLKPWR_PCONP_PCRTC   	: RTC
-				-  CLKPWR_PCONP_PCSSP1 		: SSP 1
-				-  CLKPWR_PCONP_PCAD   		: ADC
-				-  CLKPWR_PCONP_PCAN1   	: CAN 1
-				-  CLKPWR_PCONP_PCAN2   	: CAN 2
-				-  CLKPWR_PCONP_PCGPIO 		: GPIO
-				-  CLKPWR_PCONP_PCRIT 		: RIT
-				-  CLKPWR_PCONP_PCMC 		: MC
-				-  CLKPWR_PCONP_PCQEI 		: QEI
-				-  CLKPWR_PCONP_PCI2C1   	: I2C 1
-				-  CLKPWR_PCONP_PCSSP0 		: SSP 0
-				-  CLKPWR_PCONP_PCTIM2 		: Timer 2
-				-  CLKPWR_PCONP_PCTIM3 		: Timer 3
-				-  CLKPWR_PCONP_PCUART2  	: UART 2
-				-  CLKPWR_PCONP_PCUART3   	: UART 3
-				-  CLKPWR_PCONP_PCI2C2 		: I2C 2
-				-  CLKPWR_PCONP_PCI2S   	: I2S
-				-  CLKPWR_PCONP_PCGPDMA   	: GPDMA
-				-  CLKPWR_PCONP_PCENET 		: Ethernet
-				-  CLKPWR_PCONP_PCUSB   	: USB
- *
- * @param[in]	NewState	New state of Peripheral Power, should be:
- * 				- ENABLE	: Enable power for this peripheral
- * 				- DISABLE	: Disable power for this peripheral
- *
- * @return none
- **********************************************************************/
-void CLKPWR_ConfigPPWR (uint32_t PPType, FunctionalState NewState)
-{
-	if (NewState == ENABLE)
-	{
-		LPC_SC->PCONP |= PPType & CLKPWR_PCONP_BITMASK;
-	}
-	else if (NewState == DISABLE)
-	{
-		LPC_SC->PCONP &= (~PPType) & CLKPWR_PCONP_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Enter Sleep mode with co-operated instruction by the Cortex-M3.
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void CLKPWR_Sleep(void)
-{
-	LPC_SC->PCON = 0x00;
-	/* Sleep Mode*/
-	__WFI();
-}
-
-
-/*********************************************************************//**
- * @brief 		Enter Deep Sleep mode with co-operated instruction by the Cortex-M3.
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void CLKPWR_DeepSleep(void)
-{
-    /* Deep-Sleep Mode, set SLEEPDEEP bit */
-	SCB->SCR = 0x4;
-	LPC_SC->PCON = 0x8;
-	/* Deep Sleep Mode*/
-	__WFI();
-}
-
-
-/*********************************************************************//**
- * @brief 		Enter Power Down mode with co-operated instruction by the Cortex-M3.
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void CLKPWR_PowerDown(void)
-{
-    /* Deep-Sleep Mode, set SLEEPDEEP bit */
-	SCB->SCR = 0x4;
-	LPC_SC->PCON = 0x09;
-	/* Power Down Mode*/
-	__WFI();
-}
-
-
-/*********************************************************************//**
- * @brief 		Enter Deep Power Down mode with co-operated instruction by the Cortex-M3.
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void CLKPWR_DeepPowerDown(void)
-{
-    /* Deep-Sleep Mode, set SLEEPDEEP bit */
-	SCB->SCR = 0x4;
-	LPC_SC->PCON = 0x03;
-	/* Deep Power Down Mode*/
-	__WFI();
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_dac.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_dac.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_dac.c				2010-05-21
-*//**
-* @file		lpc17xx_dac.c
-* @brief	Contains all functions support for DAC firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup DAC
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_dac.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _DAC
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup DAC_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Initial ADC configuration
- * 					- Maximum	current is 700 uA
- * 					- Value to AOUT is 0
- * @param[in] 	DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
- * @return 		None
- ***********************************************************************/
-void DAC_Init(LPC_DAC_TypeDef *DACx)
-{
-	CHECK_PARAM(PARAM_DACx(DACx));
-	/* Set default clock divider for DAC */
-	// CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_DAC, CLKPWR_PCLKSEL_CCLK_DIV_4);
-	//Set maximum current output
-	DAC_SetBias(LPC_DAC,DAC_MAX_CURRENT_700uA);
-}
-
-/*********************************************************************//**
- * @brief 		Update value to DAC
- * @param[in] 	DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
- * @param[in] 	dac_value : value 10 bit to be converted to output
- * @return 		None
- ***********************************************************************/
-void DAC_UpdateValue (LPC_DAC_TypeDef *DACx,uint32_t dac_value)
-{
-	uint32_t tmp;
-	CHECK_PARAM(PARAM_DACx(DACx));
-	tmp = DACx->DACR & DAC_BIAS_EN;
-	tmp |= DAC_VALUE(dac_value);
-	// Update value
-	DACx->DACR = tmp;
-}
-
-/*********************************************************************//**
- * @brief 		Set Maximum current for DAC
- * @param[in] 	DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
- * @param[in] 	bias : 0 is 700 uA
- * 					   1    350 uA
- * @return 		None
- ***********************************************************************/
-void DAC_SetBias (LPC_DAC_TypeDef *DACx,uint32_t bias)
-{
-	CHECK_PARAM(PARAM_DAC_CURRENT_OPT(bias));
-	DACx->DACR &=~DAC_BIAS_EN;
-	if (bias  == DAC_MAX_CURRENT_350uA)
-	{
-		DACx->DACR |= DAC_BIAS_EN;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		To enable the DMA operation and control DMA timer
- * @param[in]	DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
- * @param[in] 	DAC_ConverterConfigStruct pointer to DAC_CONVERTER_CFG_Type
- * 					- DBLBUF_ENA :  enable/disable DACR double buffering feature
- * 					- CNT_ENA    :  enable/disable timer out counter
- * 					- DMA_ENA    :	enable/disable DMA access
- * @return 		None
- ***********************************************************************/
-void DAC_ConfigDAConverterControl (LPC_DAC_TypeDef *DACx,DAC_CONVERTER_CFG_Type *DAC_ConverterConfigStruct)
-{
-	CHECK_PARAM(PARAM_DACx(DACx));
-	DACx->DACCTRL &= ~DAC_DACCTRL_MASK;
-	if (DAC_ConverterConfigStruct->DBLBUF_ENA)
-		DACx->DACCTRL	|= DAC_DBLBUF_ENA;
-	if (DAC_ConverterConfigStruct->CNT_ENA)
-		DACx->DACCTRL	|= DAC_CNT_ENA;
-	if (DAC_ConverterConfigStruct->DMA_ENA)
-		DACx->DACCTRL	|= DAC_DMA_ENA;
-}
-
-/*********************************************************************//**
- * @brief 		Set reload value for interrupt/DMA counter
- * @param[in] 	DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
- * @param[in] 	time_out time out to reload for interrupt/DMA counter
- * @return 		None
- ***********************************************************************/
-void DAC_SetDMATimeOut(LPC_DAC_TypeDef *DACx, uint32_t time_out)
-{
-	CHECK_PARAM(PARAM_DACx(DACx));
-	DACx->DACCNTVAL = DAC_CCNT_VALUE(time_out);
-}
-
-/**
- * @}
- */
-
-#endif /* _DAC */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_debug_frmwrk.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_debug_frmwrk.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		debug_frmwrk.c				2010-05-21
-*//**
-* @file		debug_frmwrk.c
-* @brief	Contains some utilities that used for debugging through UART
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-#include "debug_frmwrk.h"
-#include "lpc17xx_pinsel.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-#ifdef _DBGFWK
-/* Debug framework */
-
-void (*_db_msg)(LPC_UART_TypeDef *UARTx, const void *s);
-void (*_db_msg_)(LPC_UART_TypeDef *UARTx, const void *s);
-void (*_db_char)(LPC_UART_TypeDef *UARTx, uint8_t ch);
-void (*_db_dec)(LPC_UART_TypeDef *UARTx, uint8_t decn);
-void (*_db_dec_16)(LPC_UART_TypeDef *UARTx, uint16_t decn);
-void (*_db_dec_32)(LPC_UART_TypeDef *UARTx, uint32_t decn);
-void (*_db_hex)(LPC_UART_TypeDef *UARTx, uint8_t hexn);
-void (*_db_hex_16)(LPC_UART_TypeDef *UARTx, uint16_t hexn);
-void (*_db_hex_32)(LPC_UART_TypeDef *UARTx, uint32_t hexn);
-uint8_t (*_db_get_char)(LPC_UART_TypeDef *UARTx);
-
-
-/*********************************************************************//**
- * @brief		Puts a character to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	ch		Character to put
- * @return		None
- **********************************************************************/
-void UARTPutChar (LPC_UART_TypeDef *UARTx, uint8_t ch)
-{
-	UART_Send(UARTx, &ch, 1, BLOCKING);
-}
-
-
-/*********************************************************************//**
- * @brief		Get a character to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @return		character value that returned
- **********************************************************************/
-uint8_t UARTGetChar (LPC_UART_TypeDef *UARTx)
-{
-	uint8_t tmp = 0;
-	UART_Receive(UARTx, &tmp, 1, BLOCKING);
-	return(tmp);
-}
-
-
-/*********************************************************************//**
- * @brief		Puts a string to UART port
- * @param[in]	UARTx 	Pointer to UART peripheral
- * @param[in]	str 	string to put
- * @return		None
- **********************************************************************/
-void UARTPuts(LPC_UART_TypeDef *UARTx, const void *str)
-{
-	const uint8_t *s = (const uint8_t *) str;
-
-	while (*s)
-	{
-		UARTPutChar(UARTx, *s++);
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Puts a string to UART port and print new line
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	str		String to put
- * @return		None
- **********************************************************************/
-void UARTPuts_(LPC_UART_TypeDef *UARTx, const void *str)
-{
-	UARTPuts (UARTx, str);
-	UARTPuts (UARTx, "\n\r");
-}
-
-
-/*********************************************************************//**
- * @brief		Puts a decimal number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	decnum	Decimal number (8-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutDec(LPC_UART_TypeDef *UARTx, uint8_t decnum)
-{
-	uint8_t c1=decnum%10;
-	uint8_t c2=(decnum/10)%10;
-	uint8_t c3=(decnum/100)%10;
-	UARTPutChar(UARTx, '0'+c3);
-	UARTPutChar(UARTx, '0'+c2);
-	UARTPutChar(UARTx, '0'+c1);
-}
-
-/*********************************************************************//**
- * @brief		Puts a decimal number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	decnum	Decimal number (8-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutDec16(LPC_UART_TypeDef *UARTx, uint16_t decnum)
-{
-	uint8_t c1=decnum%10;
-	uint8_t c2=(decnum/10)%10;
-	uint8_t c3=(decnum/100)%10;
-	uint8_t c4=(decnum/1000)%10;
-	uint8_t c5=(decnum/10000)%10;
-	UARTPutChar(UARTx, '0'+c5);
-	UARTPutChar(UARTx, '0'+c4);
-	UARTPutChar(UARTx, '0'+c3);
-	UARTPutChar(UARTx, '0'+c2);
-	UARTPutChar(UARTx, '0'+c1);
-}
-
-/*********************************************************************//**
- * @brief		Puts a decimal number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	decnum	Decimal number (8-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutDec32(LPC_UART_TypeDef *UARTx, uint32_t decnum)
-{
-	uint8_t c1=decnum%10;
-	uint8_t c2=(decnum/10)%10;
-	uint8_t c3=(decnum/100)%10;
-	uint8_t c4=(decnum/1000)%10;
-	uint8_t c5=(decnum/10000)%10;
-	uint8_t c6=(decnum/100000)%10;
-	uint8_t c7=(decnum/1000000)%10;
-	uint8_t c8=(decnum/10000000)%10;
-	uint8_t c9=(decnum/100000000)%10;
-	uint8_t c10=(decnum/1000000000)%10;
-	UARTPutChar(UARTx, '0'+c10);
-	UARTPutChar(UARTx, '0'+c9);
-	UARTPutChar(UARTx, '0'+c8);
-	UARTPutChar(UARTx, '0'+c7);
-	UARTPutChar(UARTx, '0'+c6);
-	UARTPutChar(UARTx, '0'+c5);
-	UARTPutChar(UARTx, '0'+c4);
-	UARTPutChar(UARTx, '0'+c3);
-	UARTPutChar(UARTx, '0'+c2);
-	UARTPutChar(UARTx, '0'+c1);
-}
-
-/*********************************************************************//**
- * @brief		Puts a hex number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	hexnum	Hex number (8-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutHex (LPC_UART_TypeDef *UARTx, uint8_t hexnum)
-{
-	uint8_t nibble, i;
-
-	UARTPuts(UARTx, "0x");
-	i = 1;
-	do {
-		nibble = (hexnum >> (4*i)) & 0x0F;
-		UARTPutChar(UARTx, (nibble > 9) ? ('A' + nibble - 10) : ('0' + nibble));
-	} while (i--);
-}
-
-
-/*********************************************************************//**
- * @brief		Puts a hex number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	hexnum	Hex number (16-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutHex16 (LPC_UART_TypeDef *UARTx, uint16_t hexnum)
-{
-	uint8_t nibble, i;
-
-	UARTPuts(UARTx, "0x");
-	i = 3;
-	do {
-		nibble = (hexnum >> (4*i)) & 0x0F;
-		UARTPutChar(UARTx, (nibble > 9) ? ('A' + nibble - 10) : ('0' + nibble));
-	} while (i--);
-}
-
-/*********************************************************************//**
- * @brief		Puts a hex number to UART port
- * @param[in]	UARTx	Pointer to UART peripheral
- * @param[in]	hexnum	Hex number (32-bit long)
- * @return		None
- **********************************************************************/
-void UARTPutHex32 (LPC_UART_TypeDef *UARTx, uint32_t hexnum)
-{
-	uint8_t nibble, i;
-
-	UARTPuts(UARTx, "0x");
-	i = 7;
-	do {
-		nibble = (hexnum >> (4*i)) & 0x0F;
-		UARTPutChar(UARTx, (nibble > 9) ? ('A' + nibble - 10) : ('0' + nibble));
-	} while (i--);
-}
-
-///*********************************************************************//**
-// * @brief		print function that supports format as same as printf()
-// * 				function of <stdio.h> library
-// * @param[in]	None
-// * @return		None
-// **********************************************************************/
-//void  _printf (const  char *format, ...)
-//{
-//    static  char  buffer[512 + 1];
-//            va_list     vArgs;
-//            char	*tmp;
-//    va_start(vArgs, format);
-//    vsprintf((char *)buffer, (char const *)format, vArgs);
-//    va_end(vArgs);
-//
-//    _DBG(buffer);
-//}
-
-/*********************************************************************//**
- * @brief		Initialize Debug frame work through initializing UART port
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void debug_frmwrk_init(void)
-{
-	UART_CFG_Type UARTConfigStruct;
-	PINSEL_CFG_Type PinCfg;
-
-#if (USED_UART_DEBUG_PORT==0)
-	/*
-	 * Initialize UART0 pin connect
-	 */
-	PinCfg.Funcnum = 1;
-	PinCfg.OpenDrain = 0;
-	PinCfg.Pinmode = 0;
-	PinCfg.Pinnum = 2;
-	PinCfg.Portnum = 0;
-	PINSEL_ConfigPin(&PinCfg);
-	PinCfg.Pinnum = 3;
-	PINSEL_ConfigPin(&PinCfg);
-
-#elif (USED_UART_DEBUG_PORT==1)
-	/*
-	 * Initialize UART1 pin connect
-	 */
-	PinCfg.Funcnum = 1;
-	PinCfg.OpenDrain = 0;
-	PinCfg.Pinmode = 0;
-	PinCfg.Pinnum = 15;
-	PinCfg.Portnum = 0;
-	PINSEL_ConfigPin(&PinCfg);
-	PinCfg.Pinnum = 16;
-	PINSEL_ConfigPin(&PinCfg);
-#endif
-
-	/* Initialize UART Configuration parameter structure to default state:
-	 * Baudrate = 9600bps
-	 * 8 data bit
-	 * 1 Stop bit
-	 * None parity
-	 */
-	UART_ConfigStructInit(&UARTConfigStruct);
-
-	// Re-configure baudrate to 115200bps
-	UARTConfigStruct.Baud_rate = 115200;
-
-	// Initialize DEBUG_UART_PORT peripheral with given to corresponding parameter
-	UART_Init((LPC_UART_TypeDef *) DEBUG_UART_PORT, &UARTConfigStruct);
-
-	// Enable UART Transmit
-	UART_TxCmd((LPC_UART_TypeDef *) DEBUG_UART_PORT, ENABLE);
-
-	_db_msg	= UARTPuts;
-	_db_msg_ = UARTPuts_;
-	_db_char = UARTPutChar;
-	_db_hex = UARTPutHex;
-	_db_hex_16 = UARTPutHex16;
-	_db_hex_32 = UARTPutHex32;
-	_db_dec = UARTPutDec;
-	_db_dec_16 = UARTPutDec16;
-	_db_dec_32 = UARTPutDec32;
-	_db_get_char = UARTGetChar;
-}
-#endif /*_DBGFWK */
-
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_emac.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_emac.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,960 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_dac.c				2010-05-21
-*//**
-* @file		lpc17xx_dac.c
-* @brief	Contains all functions support for Ethernet MAC firmware
-* 			library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup EMAC
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_emac.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _EMAC
-
-/* Private Variables ---------------------------------------------------------- */
-/** @defgroup EMAC_Private_Variables EMAC Private Variables
- * @{
- */
-
-/* MII Mgmt Configuration register - Clock divider setting */
-const uint8_t EMAC_clkdiv[] = { 4, 6, 8, 10, 14, 20, 28 };
-
-/* EMAC local DMA Descriptors */
-
-/** Rx Descriptor data array */
-static RX_Desc Rx_Desc[EMAC_NUM_RX_FRAG];
-
-/** Rx Status data array - Must be 8-Byte aligned */
-#if defined ( __CC_ARM   )
-static __align(8) RX_Stat Rx_Stat[EMAC_NUM_RX_FRAG];
-#elif defined ( __ICCARM__ )
-#pragma data_alignment=8
-static RX_Stat Rx_Stat[EMAC_NUM_RX_FRAG];
-#elif defined   (  __GNUC__  )
-static __attribute__ ((aligned (8))) RX_Stat Rx_Stat[EMAC_NUM_RX_FRAG];
-#endif
-
-/** Tx Descriptor data array */
-static TX_Desc Tx_Desc[EMAC_NUM_TX_FRAG];
-/** Tx Status data array */
-static TX_Stat Tx_Stat[EMAC_NUM_TX_FRAG];
-
-/* EMAC local DMA buffers */
-/** Rx buffer data */
-static uint32_t rx_buf[EMAC_NUM_RX_FRAG][EMAC_ETH_MAX_FLEN>>2];
-/** Tx buffer data */
-static uint32_t tx_buf[EMAC_NUM_TX_FRAG][EMAC_ETH_MAX_FLEN>>2];
-
-/**
- * @}
- */
-
-/* Private Functions ---------------------------------------------------------- */
-static void rx_descr_init (void);
-static void tx_descr_init (void);
-static int32_t write_PHY (uint32_t PhyReg, uint16_t Value);
-static int32_t  read_PHY (uint32_t PhyReg);
-
-static void setEmacAddr(uint8_t abStationAddr[]);
-static int32_t emac_CRCCalc(uint8_t frame_no_fcs[], int32_t frame_len);
-
-
-/*--------------------------- rx_descr_init ---------------------------------*/
-/*********************************************************************//**
- * @brief 		Initializes RX Descriptor
- * @param[in] 	None
- * @return 		None
- ***********************************************************************/
-static void rx_descr_init (void)
-{
-	/* Initialize Receive Descriptor and Status array. */
-	uint32_t i;
-
-	for (i = 0; i < EMAC_NUM_RX_FRAG; i++) {
-		Rx_Desc[i].Packet  = (uint32_t)&rx_buf[i];
-		Rx_Desc[i].Ctrl    = EMAC_RCTRL_INT | (EMAC_ETH_MAX_FLEN - 1);
-		Rx_Stat[i].Info    = 0;
-		Rx_Stat[i].HashCRC = 0;
-	}
-
-	/* Set EMAC Receive Descriptor Registers. */
-	LPC_EMAC->RxDescriptor       = (uint32_t)&Rx_Desc[0];
-	LPC_EMAC->RxStatus           = (uint32_t)&Rx_Stat[0];
-	LPC_EMAC->RxDescriptorNumber = EMAC_NUM_RX_FRAG - 1;
-
-	/* Rx Descriptors Point to 0 */
-	LPC_EMAC->RxConsumeIndex  = 0;
-}
-
-
-/*--------------------------- tx_descr_init ---- ----------------------------*/
-/*********************************************************************//**
- * @brief 		Initializes TX Descriptor
- * @param[in] 	None
- * @return 		None
- ***********************************************************************/
-static void tx_descr_init (void) {
-	/* Initialize Transmit Descriptor and Status array. */
-	uint32_t i;
-
-	for (i = 0; i < EMAC_NUM_TX_FRAG; i++) {
-		Tx_Desc[i].Packet = (uint32_t)&tx_buf[i];
-		Tx_Desc[i].Ctrl   = 0;
-		Tx_Stat[i].Info   = 0;
-	}
-
-	/* Set EMAC Transmit Descriptor Registers. */
-	LPC_EMAC->TxDescriptor       = (uint32_t)&Tx_Desc[0];
-	LPC_EMAC->TxStatus           = (uint32_t)&Tx_Stat[0];
-	LPC_EMAC->TxDescriptorNumber = EMAC_NUM_TX_FRAG - 1;
-
-	/* Tx Descriptors Point to 0 */
-	LPC_EMAC->TxProduceIndex  = 0;
-}
-
-
-/*--------------------------- write_PHY -------------------------------------*/
-/*********************************************************************//**
- * @brief 		Write value to PHY device
- * @param[in] 	PhyReg: PHY Register address
- * @param[in] 	Value:  Value to write
- * @return 		0 - if success
- * 				1 - if fail
- ***********************************************************************/
-static int32_t write_PHY (uint32_t PhyReg, uint16_t Value)
-{
-	/* Write a data 'Value' to PHY register 'PhyReg'. */
-	uint32_t tout;
-
-	LPC_EMAC->MADR = EMAC_DEF_ADR | PhyReg;
-	LPC_EMAC->MWTD = Value;
-
-	/* Wait until operation completed */
-	tout = 0;
-	for (tout = 0; tout < EMAC_MII_WR_TOUT; tout++) {
-		if ((LPC_EMAC->MIND & EMAC_MIND_BUSY) == 0) {
-			return (0);
-		}
-	}
-	// Time out!
-	return (-1);
-}
-
-
-/*--------------------------- read_PHY --------------------------------------*/
-/*********************************************************************//**
- * @brief 		Read value from PHY device
- * @param[in] 	PhyReg: PHY Register address
- * @return 		0 - if success
- * 				1 - if fail
- ***********************************************************************/
-static int32_t read_PHY (uint32_t PhyReg)
-{
-	/* Read a PHY register 'PhyReg'. */
-	uint32_t tout;
-
-	LPC_EMAC->MADR = EMAC_DEF_ADR | PhyReg;
-	LPC_EMAC->MCMD = EMAC_MCMD_READ;
-
-	/* Wait until operation completed */
-	tout = 0;
-	for (tout = 0; tout < EMAC_MII_RD_TOUT; tout++) {
-		if ((LPC_EMAC->MIND & EMAC_MIND_BUSY) == 0) {
-			LPC_EMAC->MCMD = 0;
-			return (LPC_EMAC->MRDD);
-		}
-	}
-	// Time out!
-	return (-1);
-}
-
-/*********************************************************************//**
- * @brief		Set Station MAC address for EMAC module
- * @param[in]	abStationAddr Pointer to Station address that contains 6-bytes
- * 				of MAC address (should be in order from MAC Address 1 to MAC Address 6)
- * @return		None
- **********************************************************************/
-static void setEmacAddr(uint8_t abStationAddr[])
-{
-	/* Set the Ethernet MAC Address registers */
-	LPC_EMAC->SA0 = ((uint32_t)abStationAddr[5] << 8) | (uint32_t)abStationAddr[4];
-	LPC_EMAC->SA1 = ((uint32_t)abStationAddr[3] << 8) | (uint32_t)abStationAddr[2];
-	LPC_EMAC->SA2 = ((uint32_t)abStationAddr[1] << 8) | (uint32_t)abStationAddr[0];
-}
-
-
-/*********************************************************************//**
- * @brief		Calculates CRC code for number of bytes in the frame
- * @param[in]	frame_no_fcs	Pointer to the first byte of the frame
- * @param[in]	frame_len		length of the frame without the FCS
- * @return		the CRC as a 32 bit integer
- **********************************************************************/
-static int32_t emac_CRCCalc(uint8_t frame_no_fcs[], int32_t frame_len)
-{
-	int i; 		// iterator
-	int j; 		// another iterator
-	char byte; 	// current byte
-	int crc; 	// CRC result
-	int q0, q1, q2, q3; // temporary variables
-	crc = 0xFFFFFFFF;
-	for (i = 0; i < frame_len; i++) {
-		byte = *frame_no_fcs++;
-		for (j = 0; j < 2; j++) {
-			if (((crc >> 28) ^ (byte >> 3)) & 0x00000001) {
-				q3 = 0x04C11DB7;
-			} else {
-				q3 = 0x00000000;
-			}
-			if (((crc >> 29) ^ (byte >> 2)) & 0x00000001) {
-				q2 = 0x09823B6E;
-			} else {
-				q2 = 0x00000000;
-			}
-			if (((crc >> 30) ^ (byte >> 1)) & 0x00000001) {
-				q1 = 0x130476DC;
-			} else {
-				q1 = 0x00000000;
-			}
-			if (((crc >> 31) ^ (byte >> 0)) & 0x00000001) {
-				q0 = 0x2608EDB8;
-			} else {
-				q0 = 0x00000000;
-			}
-			crc = (crc << 4) ^ q3 ^ q2 ^ q1 ^ q0;
-			byte >>= 4;
-		}
-	}
-	return crc;
-}
-/* End of Private Functions --------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup EMAC_Public_Functions
- * @{
- */
-
-
-/*********************************************************************//**
- * @brief		Initializes the EMAC peripheral according to the specified
-*               parameters in the EMAC_ConfigStruct.
- * @param[in]	EMAC_ConfigStruct Pointer to a EMAC_CFG_Type structure
-*                    that contains the configuration information for the
-*                    specified EMAC peripheral.
- * @return		None
- *
- * Note: This function will initialize EMAC module according to procedure below:
- *  - Remove the soft reset condition from the MAC
- *  - Configure the PHY via the MIIM interface of the MAC
- *  - Select RMII mode
- *  - Configure the transmit and receive DMA engines, including the descriptor arrays
- *  - Configure the host registers (MAC1,MAC2 etc.) in the MAC
- *  - Enable the receive and transmit data paths
- *  In default state after initializing, only Rx Done and Tx Done interrupt are enabled,
- *  all remain interrupts are disabled
- *  (Ref. from LPC17xx UM)
- **********************************************************************/
-Status EMAC_Init(EMAC_CFG_Type *EMAC_ConfigStruct)
-{
-	/* Initialize the EMAC Ethernet controller. */
-	int32_t regv,tout, tmp;
-
-	/* Set up clock and power for Ethernet module */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCENET, ENABLE);
-
-	/* Reset all EMAC internal modules */
-	LPC_EMAC->MAC1    = EMAC_MAC1_RES_TX | EMAC_MAC1_RES_MCS_TX | EMAC_MAC1_RES_RX |
-					EMAC_MAC1_RES_MCS_RX | EMAC_MAC1_SIM_RES | EMAC_MAC1_SOFT_RES;
-
-	LPC_EMAC->Command = EMAC_CR_REG_RES | EMAC_CR_TX_RES | EMAC_CR_RX_RES | EMAC_CR_PASS_RUNT_FRM;
-
-	/* A short delay after reset. */
-	for (tout = 100; tout; tout--);
-
-	/* Initialize MAC control registers. */
-	LPC_EMAC->MAC1 = EMAC_MAC1_PASS_ALL;
-	LPC_EMAC->MAC2 = EMAC_MAC2_CRC_EN | EMAC_MAC2_PAD_EN;
-	LPC_EMAC->MAXF = EMAC_ETH_MAX_FLEN;
-	/*
-	 * Find the clock that close to desired target clock
-	 */
-	tmp = SystemCoreClock / EMAC_MCFG_MII_MAXCLK;
-	for (tout = 0; tout < (int32_t) sizeof (EMAC_clkdiv); tout++){
-		if (EMAC_clkdiv[tout] >= tmp) break;
-	}
-	tout++;
-	// Write to MAC configuration register and reset
-	LPC_EMAC->MCFG = EMAC_MCFG_CLK_SEL(tout) | EMAC_MCFG_RES_MII;
-	// release reset
-	LPC_EMAC->MCFG &= ~(EMAC_MCFG_RES_MII);
-	LPC_EMAC->CLRT = EMAC_CLRT_DEF;
-	LPC_EMAC->IPGR = EMAC_IPGR_P2_DEF;
-
-	/* Enable Reduced MII interface. */
-	LPC_EMAC->Command = EMAC_CR_RMII | EMAC_CR_PASS_RUNT_FRM;
-
-	/* Reset Reduced MII Logic. */
-	LPC_EMAC->SUPP = EMAC_SUPP_RES_RMII;
-
-	for (tout = 100; tout; tout--);
-	LPC_EMAC->SUPP = 0;
-
-	/* Put the DP83848C in reset mode */
-	write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_BMCR_RESET);
-
-	/* Wait for hardware reset to end. */
-	for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-		regv = read_PHY (EMAC_PHY_REG_BMCR);
-		if (!(regv & (EMAC_PHY_BMCR_RESET | EMAC_PHY_BMCR_POWERDOWN))) {
-			/* Reset complete, device not Power Down. */
-			break;
-		}
-		if (tout == 0){
-			// Time out, return ERROR
-			return (ERROR);
-		}
-	}
-
-	// Set PHY mode
-	if (EMAC_SetPHYMode(EMAC_ConfigStruct->Mode) < 0){
-		return (ERROR);
-	}
-
-	// Set EMAC address
-	setEmacAddr(EMAC_ConfigStruct->pbEMAC_Addr);
-
-	/* Initialize Tx and Rx DMA Descriptors */
-	rx_descr_init ();
-	tx_descr_init ();
-
-	// Set Receive Filter register: enable broadcast and multicast
-	LPC_EMAC->RxFilterCtrl = EMAC_RFC_MCAST_EN | EMAC_RFC_BCAST_EN | EMAC_RFC_PERFECT_EN;
-
-	/* Enable Rx Done and Tx Done interrupt for EMAC */
-	LPC_EMAC->IntEnable = EMAC_INT_RX_DONE | EMAC_INT_TX_DONE;
-
-	/* Reset all interrupts */
-	LPC_EMAC->IntClear  = 0xFFFF;
-
-	/* Enable receive and transmit mode of MAC Ethernet core */
-	LPC_EMAC->Command  |= (EMAC_CR_RX_EN | EMAC_CR_TX_EN);
-	LPC_EMAC->MAC1     |= EMAC_MAC1_REC_EN;
-
-	return SUCCESS;
-}
-
-
-/*********************************************************************//**
- * @brief		De-initializes the EMAC peripheral registers to their
-*                  default reset values.
- * @param[in]	None
- * @return 		None
- **********************************************************************/
-void EMAC_DeInit(void)
-{
-	// Disable all interrupt
-	LPC_EMAC->IntEnable = 0x00;
-	// Clear all pending interrupt
-	LPC_EMAC->IntClear = (0xFF) | (EMAC_INT_SOFT_INT | EMAC_INT_WAKEUP);
-
-	/* TurnOff clock and power for Ethernet module */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCENET, DISABLE);
-}
-
-
-/*********************************************************************//**
- * @brief		Check specified PHY status in EMAC peripheral
- * @param[in]	ulPHYState	Specified PHY Status Type, should be:
- * 							- EMAC_PHY_STAT_LINK: Link Status
- * 							- EMAC_PHY_STAT_SPEED: Speed Status
- * 							- EMAC_PHY_STAT_DUP: Duplex Status
- * @return		Status of specified PHY status (0 or 1).
- * 				(-1) if error.
- *
- * Note:
- * For EMAC_PHY_STAT_LINK, return value:
- * - 0: Link Down
- * - 1: Link Up
- * For EMAC_PHY_STAT_SPEED, return value:
- * - 0: 10Mbps
- * - 1: 100Mbps
- * For EMAC_PHY_STAT_DUP, return value:
- * - 0: Half-Duplex
- * - 1: Full-Duplex
- **********************************************************************/
-int32_t EMAC_CheckPHYStatus(uint32_t ulPHYState)
-{
-	int32_t regv, tmp;
-#ifdef MCB_LPC_1768
-	regv = read_PHY (EMAC_PHY_REG_STS);
-	switch(ulPHYState){
-	case EMAC_PHY_STAT_LINK:
-		tmp = (regv & EMAC_PHY_SR_LINK) ? 1 : 0;
-		break;
-	case EMAC_PHY_STAT_SPEED:
-		tmp = (regv & EMAC_PHY_SR_SPEED) ? 0 : 1;
-		break;
-	case EMAC_PHY_STAT_DUP:
-		tmp = (regv & EMAC_PHY_SR_FULL_DUP) ? 1 : 0;
-		break;
-#elif defined(IAR_LPC_1768)
-	/* Use IAR_LPC_1768 board:
-	 * FSZ8721BL doesn't have Status Register
-	 * so we read Basic Mode Status Register (0x01h) instead
-	 */
-	regv = read_PHY (EMAC_PHY_REG_BMSR);
-	switch(ulPHYState){
-	case EMAC_PHY_STAT_LINK:
-		tmp = (regv & EMAC_PHY_BMSR_LINK_STATUS) ? 1 : 0;
-		break;
-	case EMAC_PHY_STAT_SPEED:
-		tmp = (regv & EMAC_PHY_SR_100_SPEED) ? 1 : 0;
-		break;
-	case EMAC_PHY_STAT_DUP:
-		tmp = (regv & EMAC_PHY_SR_FULL_DUP) ? 1 : 0;
-		break;
-#endif
-	default:
-		tmp = -1;
-		break;
-	}
-	return (tmp);
-}
-
-
-/*********************************************************************//**
- * @brief		Set specified PHY mode in EMAC peripheral
- * @param[in]	ulPHYMode	Specified PHY mode, should be:
- * 							- EMAC_MODE_AUTO
- * 							- EMAC_MODE_10M_FULL
- * 							- EMAC_MODE_10M_HALF
- * 							- EMAC_MODE_100M_FULL
- * 							- EMAC_MODE_100M_HALF
- * @return		Return (0) if no error, otherwise return (-1)
- **********************************************************************/
-int32_t EMAC_SetPHYMode(uint32_t ulPHYMode)
-{
-	int32_t id1, id2, tout, regv;
-
-	/* Check if this is a DP83848C PHY. */
-	id1 = read_PHY (EMAC_PHY_REG_IDR1);
-	id2 = read_PHY (EMAC_PHY_REG_IDR2);
-
-#ifdef MCB_LPC_1768
-	if (((id1 << 16) | (id2 & 0xFFF0)) == EMAC_DP83848C_ID) {
-		switch(ulPHYMode){
-		case EMAC_MODE_AUTO:
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_AUTO_NEG);
-#elif defined(IAR_LPC_1768) /* Use IAR LPC1768 KickStart board */
-	if (((id1 << 16) | id2) == EMAC_KSZ8721BL_ID) {
-		/* Configure the PHY device */
-		switch(ulPHYMode){
-		case EMAC_MODE_AUTO:
-			/* Use auto-negotiation about the link speed. */
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_AUTO_NEG);
-//			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_BMCR_AN);
-#endif
-			/* Wait to complete Auto_Negotiation */
-			for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-				regv = read_PHY (EMAC_PHY_REG_BMSR);
-				if (regv & EMAC_PHY_BMSR_AUTO_DONE) {
-					/* Auto-negotiation Complete. */
-					break;
-				}
-				if (tout == 0){
-					// Time out, return error
-					return (-1);
-				}
-			}
-			break;
-		case EMAC_MODE_10M_FULL:
-			/* Connect at 10MBit full-duplex */
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_FULLD_10M);
-			break;
-		case EMAC_MODE_10M_HALF:
-			/* Connect at 10MBit half-duplex */
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_HALFD_10M);
-			break;
-		case EMAC_MODE_100M_FULL:
-			/* Connect at 100MBit full-duplex */
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_FULLD_100M);
-			break;
-		case EMAC_MODE_100M_HALF:
-			/* Connect at 100MBit half-duplex */
-			write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_HALFD_100M);
-			break;
-		default:
-			// un-supported
-			return (-1);
-		}
-	}
-	// It's not correct module ID
-	else {
-		return (-1);
-	}
-
-	// Update EMAC configuration with current PHY status
-	if (EMAC_UpdatePHYStatus() < 0){
-		return (-1);
-	}
-
-	// Complete
-	return (0);
-}
-
-
-/*********************************************************************//**
- * @brief		Auto-Configures value for the EMAC configuration register to
- * 				match with current PHY mode
- * @param[in]	None
- * @return		Return (0) if no error, otherwise return (-1)
- *
- * Note: The EMAC configuration will be auto-configured:
- * 		- Speed mode.
- * 		- Half/Full duplex mode
- **********************************************************************/
-int32_t EMAC_UpdatePHYStatus(void)
-{
-	int32_t regv, tout;
-
-	/* Check the link status. */
-#ifdef MCB_LPC_1768
-	for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-		regv = read_PHY (EMAC_PHY_REG_STS);
-		if (regv & EMAC_PHY_SR_LINK) {
-			/* Link is on. */
-			break;
-		}
-		if (tout == 0){
-			// time out
-			return (-1);
-		}
-	}
-	/* Configure Full/Half Duplex mode. */
-	if (regv & EMAC_PHY_SR_DUP) {
-	/* Full duplex is enabled. */
-			LPC_EMAC->MAC2    |= EMAC_MAC2_FULL_DUP;
-			LPC_EMAC->Command |= EMAC_CR_FULL_DUP;
-			LPC_EMAC->IPGT     = EMAC_IPGT_FULL_DUP;
-	} else {
-		/* Half duplex mode. */
-		LPC_EMAC->IPGT = EMAC_IPGT_HALF_DUP;
-	}
-	if (regv & EMAC_PHY_SR_SPEED) {
-	/* 10MBit mode. */
-		LPC_EMAC->SUPP = 0;
-	} else {
-		/* 100MBit mode. */
-		LPC_EMAC->SUPP = EMAC_SUPP_SPEED;
-	}
-#elif defined(IAR_LPC_1768)
-	for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-		regv = read_PHY (EMAC_PHY_REG_BMSR);
-		if (regv & EMAC_PHY_BMSR_LINK_STATUS) {
-			/* Link is on. */
-			break;
-		}
-		if (tout == 0){
-			// time out
-			return (-1);
-		}
-	}
-
-	/* Configure Full/Half Duplex mode. */
-	if (regv & EMAC_PHY_SR_FULL_DUP) {
-		/* Full duplex is enabled. */
-		LPC_EMAC->MAC2    |= EMAC_MAC2_FULL_DUP;
-		LPC_EMAC->Command |= EMAC_CR_FULL_DUP;
-		LPC_EMAC->IPGT     = EMAC_IPGT_FULL_DUP;
-	} else {
-		/* Half duplex mode. */
-		LPC_EMAC->IPGT = EMAC_IPGT_HALF_DUP;
-	}
-
-	/* Configure 100MBit/10MBit mode. */
-	if (!(regv & EMAC_PHY_SR_100_SPEED)) {
-		/* 10MBit mode. */
-		LPC_EMAC->SUPP = 0;
-	} else {
-		/* 100MBit mode. */
-		LPC_EMAC->SUPP = EMAC_SUPP_SPEED;
-	}
-#endif
-	// Complete
-	return (0);
-}
-
-
-/*********************************************************************//**
- * @brief		Enable/Disable hash filter functionality for specified destination
- * 				MAC address in EMAC module
- * @param[in]	dstMAC_addr		Pointer to the first MAC destination address, should
- * 								be 6-bytes length, in order LSB to the MSB
- * @param[in]	NewState		New State of this command, should be:
- *									- ENABLE.
- *									- DISABLE.
- * @return		None
- *
- * Note:
- * The standard Ethernet cyclic redundancy check (CRC) function is calculated from
- * the 6 byte destination address in the Ethernet frame (this CRC is calculated
- * anyway as part of calculating the CRC of the whole frame), then bits [28:23] out of
- * the 32 bits CRC result are taken to form the hash. The 6 bit hash is used to access
- * the hash table: it is used as an index in the 64 bit HashFilter register that has been
- * programmed with accept values. If the selected accept value is 1, the frame is
- * accepted.
- **********************************************************************/
-void EMAC_SetHashFilter(uint8_t dstMAC_addr[], FunctionalState NewState)
-{
-	volatile uint32_t *pReg;
-	uint32_t tmp;
-	int32_t crc;
-
-	// Calculate the CRC from the destination MAC address
-	crc = emac_CRCCalc(dstMAC_addr, 6);
-	// Extract the value from CRC to get index value for hash filter table
-	crc = (crc >> 23) & 0x3F;
-
-	pReg = (crc > 31) ? ((volatile uint32_t *)&LPC_EMAC->HashFilterH) \
-								: ((volatile uint32_t *)&LPC_EMAC->HashFilterL);
-	tmp = (crc > 31) ? (crc - 32) : crc;
-	if (NewState == ENABLE) {
-		(*pReg) |= (1UL << tmp);
-	} else {
-		(*pReg) &= ~(1UL << tmp);
-	}
-	// Enable Rx Filter
-	LPC_EMAC->Command &= ~EMAC_CR_PASS_RX_FILT;
-}
-
-/*********************************************************************//**
- * @brief		Enable/Disable Filter mode for each specified type EMAC peripheral
- * @param[in]	ulFilterMode	Filter mode, should be:
- * 								- EMAC_RFC_UCAST_EN: all frames of unicast types
- * 								will be accepted
- * 								- EMAC_RFC_BCAST_EN: broadcast frame will be
- * 								accepted
- * 								- EMAC_RFC_MCAST_EN: all frames of multicast
- * 								types will be accepted
- * 								- EMAC_RFC_UCAST_HASH_EN: The imperfect hash
- * 								filter will be applied to unicast addresses
- * 								- EMAC_RFC_MCAST_HASH_EN: The imperfect hash
- * 								filter will be applied to multicast addresses
- * 								- EMAC_RFC_PERFECT_EN: the destination address
- * 								will be compared with the 6 byte station address
- * 								programmed in the station address by the filter
- * 								- EMAC_RFC_MAGP_WOL_EN: the result of the magic
- * 								packet filter will generate a WoL interrupt when
- * 								there is a match
- * 								- EMAC_RFC_PFILT_WOL_EN: the result of the perfect address
- * 								matching filter and the imperfect hash filter will
- * 								generate a WoL interrupt when there is a match
- * @param[in]	NewState	New State of this command, should be:
- * 								- ENABLE
- * 								- DISABLE
- * @return		None
- **********************************************************************/
-void EMAC_SetFilterMode(uint32_t ulFilterMode, FunctionalState NewState)
-{
-	if (NewState == ENABLE){
-		LPC_EMAC->RxFilterCtrl |= ulFilterMode;
-	} else {
-		LPC_EMAC->RxFilterCtrl &= ~ulFilterMode;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Get status of Wake On LAN Filter for each specified
- * 				type in EMAC peripheral, clear this status if it is set
- * @param[in]	ulWoLMode	WoL Filter mode, should be:
- * 								- EMAC_WOL_UCAST: unicast frames caused WoL
- * 								- EMAC_WOL_UCAST: broadcast frame caused WoL
- * 								- EMAC_WOL_MCAST: multicast frame caused WoL
- * 								- EMAC_WOL_UCAST_HASH: unicast frame that passes the
- * 								imperfect hash filter caused WoL
- * 								- EMAC_WOL_MCAST_HASH: multicast frame that passes the
- * 								imperfect hash filter caused WoL
- * 								- EMAC_WOL_PERFECT:perfect address matching filter
- * 								caused WoL
- * 								- EMAC_WOL_RX_FILTER: the receive filter caused WoL
- * 								- EMAC_WOL_MAG_PACKET: the magic packet filter caused WoL
- * @return		SET/RESET
- **********************************************************************/
-FlagStatus EMAC_GetWoLStatus(uint32_t ulWoLMode)
-{
-	if (LPC_EMAC->RxFilterWoLStatus & ulWoLMode) {
-		LPC_EMAC->RxFilterWoLClear = ulWoLMode;
-		return SET;
-	} else {
-		return RESET;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Write data to Tx packet data buffer at current index due to
- * 				TxProduceIndex
- * @param[in]	pDataStruct		Pointer to a EMAC_PACKETBUF_Type structure
- * 							data that contain specified information about
- * 							Packet data buffer.
- * @return		None
- **********************************************************************/
-void EMAC_WritePacketBuffer(EMAC_PACKETBUF_Type *pDataStruct)
-{
-	uint32_t idx,len;
-	uint32_t *sp,*dp;
-
-	idx = LPC_EMAC->TxProduceIndex;
-	sp  = (uint32_t *)pDataStruct->pbDataBuf;
-	dp  = (uint32_t *)Tx_Desc[idx].Packet;
-	/* Copy frame data to EMAC packet buffers. */
-	for (len = (pDataStruct->ulDataLen + 3) >> 2; len; len--) {
-		*dp++ = *sp++;
-	}
-	Tx_Desc[idx].Ctrl = (pDataStruct->ulDataLen - 1) | (EMAC_TCTRL_INT | EMAC_TCTRL_LAST);
-}
-
-/*********************************************************************//**
- * @brief		Read data from Rx packet data buffer at current index due
- * 				to RxConsumeIndex
- * @param[in]	pDataStruct		Pointer to a EMAC_PACKETBUF_Type structure
- * 							data that contain specified information about
- * 							Packet data buffer.
- * @return		None
- **********************************************************************/
-void EMAC_ReadPacketBuffer(EMAC_PACKETBUF_Type *pDataStruct)
-{
-	uint32_t idx, len;
-	uint32_t *dp, *sp;
-
-	idx = LPC_EMAC->RxConsumeIndex;
-	dp = (uint32_t *)pDataStruct->pbDataBuf;
-	sp = (uint32_t *)Rx_Desc[idx].Packet;
-
-	if (pDataStruct->pbDataBuf != NULL) {
-		for (len = (pDataStruct->ulDataLen + 3) >> 2; len; len--) {
-			*dp++ = *sp++;
-		}
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Enable/Disable interrupt for each type in EMAC
- * @param[in]	ulIntType	Interrupt Type, should be:
- * 							- EMAC_INT_RX_OVERRUN: Receive Overrun
- * 							- EMAC_INT_RX_ERR: Receive Error
- * 							- EMAC_INT_RX_FIN: Receive Descriptor Finish
- * 							- EMAC_INT_RX_DONE: Receive Done
- * 							- EMAC_INT_TX_UNDERRUN: Transmit Under-run
- * 							- EMAC_INT_TX_ERR: Transmit Error
- * 							- EMAC_INT_TX_FIN: Transmit descriptor finish
- * 							- EMAC_INT_TX_DONE: Transmit Done
- * 							- EMAC_INT_SOFT_INT: Software interrupt
- * 							- EMAC_INT_WAKEUP: Wakeup interrupt
- * @param[in]	NewState	New State of this function, should be:
- * 							- ENABLE.
- * 							- DISABLE.
- * @return		None
- **********************************************************************/
-void EMAC_IntCmd(uint32_t ulIntType, FunctionalState NewState)
-{
-	if (NewState == ENABLE) {
-		LPC_EMAC->IntEnable |= ulIntType;
-	} else {
-		LPC_EMAC->IntEnable &= ~(ulIntType);
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Check whether if specified interrupt flag is set or not
- * 				for each interrupt type in EMAC and clear interrupt pending
- * 				if it is set.
- * @param[in]	ulIntType	Interrupt Type, should be:
- * 							- EMAC_INT_RX_OVERRUN: Receive Overrun
- * 							- EMAC_INT_RX_ERR: Receive Error
- * 							- EMAC_INT_RX_FIN: Receive Descriptor Finish
- * 							- EMAC_INT_RX_DONE: Receive Done
- * 							- EMAC_INT_TX_UNDERRUN: Transmit Under-run
- * 							- EMAC_INT_TX_ERR: Transmit Error
- * 							- EMAC_INT_TX_FIN: Transmit descriptor finish
- * 							- EMAC_INT_TX_DONE: Transmit Done
- * 							- EMAC_INT_SOFT_INT: Software interrupt
- * 							- EMAC_INT_WAKEUP: Wakeup interrupt
- * @return		New state of specified interrupt (SET or RESET)
- **********************************************************************/
-IntStatus EMAC_IntGetStatus(uint32_t ulIntType)
-{
-	if (LPC_EMAC->IntStatus & ulIntType) {
-		LPC_EMAC->IntClear = ulIntType;
-		return SET;
-	} else {
-		return RESET;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Check whether if the current RxConsumeIndex is not equal to the
- * 				current RxProduceIndex.
- * @param[in]	None
- * @return		TRUE if they're not equal, otherwise return FALSE
- *
- * Note: In case the RxConsumeIndex is not equal to the RxProduceIndex,
- * it means there're available data has been received. They should be read
- * out and released the Receive Data Buffer by updating the RxConsumeIndex value.
- **********************************************************************/
-Bool EMAC_CheckReceiveIndex(void)
-{
-	if (LPC_EMAC->RxConsumeIndex != LPC_EMAC->RxProduceIndex) {
-		return TRUE;
-	} else {
-		return FALSE;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Check whether if the current TxProduceIndex is not equal to the
- * 				current RxProduceIndex - 1.
- * @param[in]	None
- * @return		TRUE if they're not equal, otherwise return FALSE
- *
- * Note: In case the RxConsumeIndex is equal to the RxProduceIndex - 1,
- * it means the transmit buffer is available and data can be written to transmit
- * buffer to be sent.
- **********************************************************************/
-Bool EMAC_CheckTransmitIndex(void)
-{
-	uint32_t tmp = LPC_EMAC->TxConsumeIndex -1;
-	if (LPC_EMAC->TxProduceIndex == tmp) {
-		return FALSE;
-	} else {
-		return TRUE;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Get current status value of receive data (due to RxConsumeIndex)
- * @param[in]	ulRxStatType	Received Status type, should be one of following:
- * 							- EMAC_RINFO_CTRL_FRAME: Control Frame
- * 							- EMAC_RINFO_VLAN: VLAN Frame
- * 							- EMAC_RINFO_FAIL_FILT: RX Filter Failed
- * 							- EMAC_RINFO_MCAST: Multicast Frame
- * 							- EMAC_RINFO_BCAST: Broadcast Frame
- * 							- EMAC_RINFO_CRC_ERR: CRC Error in Frame
- * 							- EMAC_RINFO_SYM_ERR: Symbol Error from PHY
- * 							- EMAC_RINFO_LEN_ERR: Length Error
- * 							- EMAC_RINFO_RANGE_ERR: Range error(exceeded max size)
- * 							- EMAC_RINFO_ALIGN_ERR: Alignment error
- * 							- EMAC_RINFO_OVERRUN: Receive overrun
- * 							- EMAC_RINFO_NO_DESCR: No new Descriptor available
- * 							- EMAC_RINFO_LAST_FLAG: last Fragment in Frame
- * 							- EMAC_RINFO_ERR: Error Occurred (OR of all error)
- * @return		Current value of receive data (due to RxConsumeIndex)
- **********************************************************************/
-FlagStatus EMAC_CheckReceiveDataStatus(uint32_t ulRxStatType)
-{
-	uint32_t idx;
-	idx = LPC_EMAC->RxConsumeIndex;
-	return (((Rx_Stat[idx].Info) & ulRxStatType) ? SET : RESET);
-}
-
-
-/*********************************************************************//**
- * @brief		Get size of current Received data in received buffer (due to
- * 				RxConsumeIndex)
- * @param[in]	None
- * @return		Size of received data
- **********************************************************************/
-uint32_t EMAC_GetReceiveDataSize(void)
-{
-	uint32_t idx;
-	idx =LPC_EMAC->RxConsumeIndex;
-	return ((Rx_Stat[idx].Info) & EMAC_RINFO_SIZE);
-}
-
-/*********************************************************************//**
- * @brief		Increase the RxConsumeIndex (after reading the Receive buffer
- * 				to release the Receive buffer) and wrap-around the index if
- * 				it reaches the maximum Receive Number
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void EMAC_UpdateRxConsumeIndex(void)
-{
-	// Get current Rx consume index
-	uint32_t idx = LPC_EMAC->RxConsumeIndex;
-
-	/* Release frame from EMAC buffer */
-	if (++idx == EMAC_NUM_RX_FRAG) idx = 0;
-	LPC_EMAC->RxConsumeIndex = idx;
-}
-
-/*********************************************************************//**
- * @brief		Increase the TxProduceIndex (after writting to the Transmit buffer
- * 				to enable the Transmit buffer) and wrap-around the index if
- * 				it reaches the maximum Transmit Number
- * @param[in]	None
- * @return		None
- **********************************************************************/
-void EMAC_UpdateTxProduceIndex(void)
-{
-	// Get current Tx produce index
-	uint32_t idx = LPC_EMAC->TxProduceIndex;
-
-	/* Start frame transmission */
-	if (++idx == EMAC_NUM_TX_FRAG) idx = 0;
-	LPC_EMAC->TxProduceIndex = idx;
-}
-
-
-/**
- * @}
- */
-
-#endif /* _EMAC */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_exti.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_exti.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_exti.c				2010-06-18
-*//**
-* @file		lpc17xx_exti.c
-* @brief	Contains all functions support for External interrupt firmware
-* 			library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup EXTI
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_exti.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _EXTI
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup EXTI_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Initial for EXT
- * 				- Set EXTINT, EXTMODE, EXTPOLAR registers to default value
- * @param[in]	None
- * @return 		None
- **********************************************************************/
-void EXTI_Init(void)
-{
-	LPC_SC->EXTINT = 0xF;
-	LPC_SC->EXTMODE = 0x0;
-	LPC_SC->EXTPOLAR = 0x0;
-}
-
-
-/*********************************************************************//**
-* @brief 		Close EXT
-* @param[in]	None
-* @return 		None
-**********************************************************************/
-void	EXTI_DeInit(void)
-{
-	;
-}
-
-/*********************************************************************//**
- * @brief 		Configuration for EXT
- * 				- Set EXTINT, EXTMODE, EXTPOLAR register
- * @param[in]	EXTICfg	Pointer to a EXTI_InitTypeDef structure
- *              that contains the configuration information for the
- *              specified external interrupt
- * @return 		None
- **********************************************************************/
-void EXTI_Config(EXTI_InitTypeDef *EXTICfg)
-{
-	LPC_SC->EXTINT = 0x0;
-	EXTI_SetMode(EXTICfg->EXTI_Line, EXTICfg->EXTI_Mode);
-	EXTI_SetPolarity(EXTICfg->EXTI_Line, EXTICfg->EXTI_polarity);
-}
-
-/*********************************************************************//**
-* @brief 		Set mode for EXTI pin
-* @param[in]	EXTILine	 external interrupt line, should be:
-* 				- EXTI_EINT0: external interrupt line 0
-* 				- EXTI_EINT1: external interrupt line 1
-* 				- EXTI_EINT2: external interrupt line 2
-* 				- EXTI_EINT3: external interrupt line 3
-* @param[in]	mode 	external mode, should be:
-* 				- EXTI_MODE_LEVEL_SENSITIVE
-* 				- EXTI_MODE_EDGE_SENSITIVE
-* @return 		None
-*********************************************************************/
-void EXTI_SetMode(EXTI_LINE_ENUM EXTILine, EXTI_MODE_ENUM mode)
-{
-	if(mode == EXTI_MODE_EDGE_SENSITIVE)
-	{
-		LPC_SC->EXTMODE |= (1 << EXTILine);
-	}
-	else if(mode == EXTI_MODE_LEVEL_SENSITIVE)
-	{
-		LPC_SC->EXTMODE &= ~(1 << EXTILine);
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Set polarity for EXTI pin
-* @param[in]	EXTILine	 external interrupt line, should be:
-* 				- EXTI_EINT0: external interrupt line 0
-* 				- EXTI_EINT1: external interrupt line 1
-* 				- EXTI_EINT2: external interrupt line 2
-* 				- EXTI_EINT3: external interrupt line 3
-* @param[in]	polarity	 external polarity value, should be:
-* 				- EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE
-* 				- EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE
-* @return 		None
-*********************************************************************/
-void EXTI_SetPolarity(EXTI_LINE_ENUM EXTILine, EXTI_POLARITY_ENUM polarity)
-{
-	if(polarity == EXTI_POLARITY_HIGH_ACTIVE_OR_RISING_EDGE)
-	{
-		LPC_SC->EXTPOLAR |= (1 << EXTILine);
-	}
-	else if(polarity == EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE)
-	{
-		LPC_SC->EXTPOLAR &= ~(1 << EXTILine);
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Clear External interrupt flag
-* @param[in]	EXTILine	 external interrupt line, should be:
-* 				- EXTI_EINT0: external interrupt line 0
-* 				- EXTI_EINT1: external interrupt line 1
-* 				- EXTI_EINT2: external interrupt line 2
-* 				- EXTI_EINT3: external interrupt line 3
-* @return 		None
-*********************************************************************/
-void EXTI_ClearEXTIFlag(EXTI_LINE_ENUM EXTILine)
-{
-		LPC_SC->EXTINT |= (1 << EXTILine);
-}
-
-/**
- * @}
- */
-
-#endif /* _EXTI */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpdma.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpdma.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,460 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_gpdma.c				2010-03-21
-*//**
-* @file		lpc17xx_gpdma.c
-* @brief	Contains all functions support for GPDMA firmware
-* 			library on LPC17xx
-* @version	2.1
-* @date		25. July. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup GPDMA
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_gpdma.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-#ifdef _GPDMA
-
-
-/* Private Variables ---------------------------------------------------------- */
-/** @defgroup GPDMA_Private_Variables GPDMA Private Variables
- * @{
- */
-
-/**
- * @brief Lookup Table of Connection Type matched with
- * Peripheral Data (FIFO) register base address
- */
-#ifdef __IAR_SYSTEMS_ICC__
-volatile const void *GPDMA_LUTPerAddr[] = {
-		(&LPC_SSP0->DR),				// SSP0 Tx
-		(&LPC_SSP0->DR),				// SSP0 Rx
-		(&LPC_SSP1->DR),				// SSP1 Tx
-		(&LPC_SSP1->DR),				// SSP1 Rx
-		(&LPC_ADC->ADGDR),			// ADC
-		(&LPC_I2S->I2STXFIFO), 		// I2S Tx
-		(&LPC_I2S->I2SRXFIFO), 		// I2S Rx
-		(&LPC_DAC->DACR),				// DAC
-		(&LPC_UART0->/*RBTHDLR.*/THR),	// UART0 Tx
-		(&LPC_UART0->/*RBTHDLR.*/RBR),	// UART0 Rx
-		(&LPC_UART1->/*RBTHDLR.*/THR),	// UART1 Tx
-		(&LPC_UART1->/*RBTHDLR.*/RBR),	// UART1 Rx
-		(&LPC_UART2->/*RBTHDLR.*/THR),	// UART2 Tx
-		(&LPC_UART2->/*RBTHDLR.*/RBR),	// UART2 Rx
-		(&LPC_UART3->/*RBTHDLR.*/THR),	// UART3 Tx
-		(&LPC_UART3->/*RBTHDLR.*/RBR),	// UART3 Rx
-		(&LPC_TIM0->MR0),				// MAT0.0
-		(&LPC_TIM0->MR1),				// MAT0.1
-		(&LPC_TIM1->MR0),				// MAT1.0
-		(&LPC_TIM1->MR1),				// MAT1.1
-		(&LPC_TIM2->MR0),				// MAT2.0
-		(&LPC_TIM2->MR1),				// MAT2.1
-		(&LPC_TIM3->MR0),				// MAT3.0
-		(&LPC_TIM3->MR1)				// MAT3.1
-};
-#else
-const uint32_t GPDMA_LUTPerAddr[] = {
-		((uint32_t)&LPC_SSP0->DR),				// SSP0 Tx
-		((uint32_t)&LPC_SSP0->DR),				// SSP0 Rx
-		((uint32_t)&LPC_SSP1->DR),				// SSP1 Tx
-		((uint32_t)&LPC_SSP1->DR),				// SSP1 Rx
-		((uint32_t)&LPC_ADC->ADGDR),			// ADC
-		((uint32_t)&LPC_I2S->I2STXFIFO), 		// I2S Tx
-		((uint32_t)&LPC_I2S->I2SRXFIFO), 		// I2S Rx
-		((uint32_t)&LPC_DAC->DACR),				// DAC
-		((uint32_t)&LPC_UART0->/*RBTHDLR.*/THR),	// UART0 Tx
-		((uint32_t)&LPC_UART0->/*RBTHDLR.*/RBR),	// UART0 Rx
-		((uint32_t)&LPC_UART1->/*RBTHDLR.*/THR),	// UART1 Tx
-		((uint32_t)&LPC_UART1->/*RBTHDLR.*/RBR),	// UART1 Rx
-		((uint32_t)&LPC_UART2->/*RBTHDLR.*/THR),	// UART2 Tx
-		((uint32_t)&LPC_UART2->/*RBTHDLR.*/RBR),	// UART2 Rx
-		((uint32_t)&LPC_UART3->/*RBTHDLR.*/THR),	// UART3 Tx
-		((uint32_t)&LPC_UART3->/*RBTHDLR.*/RBR),	// UART3 Rx
-		((uint32_t)&LPC_TIM0->MR0),				// MAT0.0
-		((uint32_t)&LPC_TIM0->MR1),				// MAT0.1
-		((uint32_t)&LPC_TIM1->MR0),				// MAT1.0
-		((uint32_t)&LPC_TIM1->MR1),				// MAT1.1
-		((uint32_t)&LPC_TIM2->MR0),				// MAT2.0
-		((uint32_t)&LPC_TIM2->MR1),				// MAT2.1
-		((uint32_t)&LPC_TIM3->MR0),				// MAT3.0
-		((uint32_t)&LPC_TIM3->MR1)				// MAT3.1
-};
-#endif
-/**
- * @brief Lookup Table of GPDMA Channel Number matched with
- * GPDMA channel pointer
- */
-const LPC_GPDMACH_TypeDef *pGPDMACh[8] = {
-		LPC_GPDMACH0,	// GPDMA Channel 0
-		LPC_GPDMACH1,	// GPDMA Channel 1
-		LPC_GPDMACH2,	// GPDMA Channel 2
-		LPC_GPDMACH3,	// GPDMA Channel 3
-		LPC_GPDMACH4,	// GPDMA Channel 4
-		LPC_GPDMACH5,	// GPDMA Channel 5
-		LPC_GPDMACH6,	// GPDMA Channel 6
-		LPC_GPDMACH7	// GPDMA Channel 7
-};
-/**
- * @brief Optimized Peripheral Source and Destination burst size
- */
-const uint8_t GPDMA_LUTPerBurst[] = {
-		GPDMA_BSIZE_4,				// SSP0 Tx
-		GPDMA_BSIZE_4,				// SSP0 Rx
-		GPDMA_BSIZE_4,				// SSP1 Tx
-		GPDMA_BSIZE_4,				// SSP1 Rx
-		GPDMA_BSIZE_4,				// ADC
-		GPDMA_BSIZE_32, 			// I2S channel 0
-		GPDMA_BSIZE_32, 			// I2S channel 1
-		GPDMA_BSIZE_1,				// DAC
-		GPDMA_BSIZE_1,				// UART0 Tx
-		GPDMA_BSIZE_1,				// UART0 Rx
-		GPDMA_BSIZE_1,				// UART1 Tx
-		GPDMA_BSIZE_1,				// UART1 Rx
-		GPDMA_BSIZE_1,				// UART2 Tx
-		GPDMA_BSIZE_1,				// UART2 Rx
-		GPDMA_BSIZE_1,				// UART3 Tx
-		GPDMA_BSIZE_1,				// UART3 Rx
-		GPDMA_BSIZE_1,				// MAT0.0
-		GPDMA_BSIZE_1,				// MAT0.1
-		GPDMA_BSIZE_1,				// MAT1.0
-		GPDMA_BSIZE_1,				// MAT1.1
-		GPDMA_BSIZE_1,				// MAT2.0
-		GPDMA_BSIZE_1,				// MAT2.1
-		GPDMA_BSIZE_1,				// MAT3.0
-		GPDMA_BSIZE_1				// MAT3.1
-};
-/**
- * @brief Optimized Peripheral Source and Destination transfer width
- */
-const uint8_t GPDMA_LUTPerWid[] = {
-		GPDMA_WIDTH_BYTE,				// SSP0 Tx
-		GPDMA_WIDTH_BYTE,				// SSP0 Rx
-		GPDMA_WIDTH_BYTE,				// SSP1 Tx
-		GPDMA_WIDTH_BYTE,				// SSP1 Rx
-		GPDMA_WIDTH_WORD,				// ADC
-		GPDMA_WIDTH_WORD, 				// I2S channel 0
-		GPDMA_WIDTH_WORD, 				// I2S channel 1
-		GPDMA_WIDTH_BYTE,				// DAC
-		GPDMA_WIDTH_BYTE,				// UART0 Tx
-		GPDMA_WIDTH_BYTE,				// UART0 Rx
-		GPDMA_WIDTH_BYTE,				// UART1 Tx
-		GPDMA_WIDTH_BYTE,				// UART1 Rx
-		GPDMA_WIDTH_BYTE,				// UART2 Tx
-		GPDMA_WIDTH_BYTE,				// UART2 Rx
-		GPDMA_WIDTH_BYTE,				// UART3 Tx
-		GPDMA_WIDTH_BYTE,				// UART3 Rx
-		GPDMA_WIDTH_WORD,				// MAT0.0
-		GPDMA_WIDTH_WORD,				// MAT0.1
-		GPDMA_WIDTH_WORD,				// MAT1.0
-		GPDMA_WIDTH_WORD,				// MAT1.1
-		GPDMA_WIDTH_WORD,				// MAT2.0
-		GPDMA_WIDTH_WORD,				// MAT2.1
-		GPDMA_WIDTH_WORD,				// MAT3.0
-		GPDMA_WIDTH_WORD				// MAT3.1
-};
-
-/**
- * @}
- */
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup GPDMA_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief 		Initialize GPDMA controller
- * @param 		None
- * @return 		None
- *********************************************************************/
-void GPDMA_Init(void)
-{
-	/* Enable GPDMA clock */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCGPDMA, ENABLE);
-
-	// Reset all channel configuration register
-	LPC_GPDMACH0->DMACCConfig = 0;
-	LPC_GPDMACH1->DMACCConfig = 0;
-	LPC_GPDMACH2->DMACCConfig = 0;
-	LPC_GPDMACH3->DMACCConfig = 0;
-	LPC_GPDMACH4->DMACCConfig = 0;
-	LPC_GPDMACH5->DMACCConfig = 0;
-	LPC_GPDMACH6->DMACCConfig = 0;
-	LPC_GPDMACH7->DMACCConfig = 0;
-
-	/* Clear all DMA interrupt and error flag */
-	LPC_GPDMA->DMACIntTCClear = 0xFF;
-	LPC_GPDMA->DMACIntErrClr = 0xFF;
-}
-
-/********************************************************************//**
- * @brief 		Setup GPDMA channel peripheral according to the specified
- *               parameters in the GPDMAChannelConfig.
- * @param[in]	GPDMAChannelConfig Pointer to a GPDMA_CH_CFG_Type
- * 									structure that contains the configuration
- * 									information for the specified GPDMA channel peripheral.
- * @return		ERROR if selected channel is enabled before
- * 				or SUCCESS if channel is configured successfully
- *********************************************************************/
-Status GPDMA_Setup(GPDMA_Channel_CFG_Type *GPDMAChannelConfig)
-{
-	LPC_GPDMACH_TypeDef *pDMAch;
-	uint32_t tmp1, tmp2;
-
-	if (LPC_GPDMA->DMACEnbldChns & (GPDMA_DMACEnbldChns_Ch(GPDMAChannelConfig->ChannelNum))) {
-		// This channel is enabled, return ERROR, need to release this channel first
-		return ERROR;
-	}
-
-	// Get Channel pointer
-	pDMAch = (LPC_GPDMACH_TypeDef *) pGPDMACh[GPDMAChannelConfig->ChannelNum];
-
-	// Reset the Interrupt status
-	LPC_GPDMA->DMACIntTCClear = GPDMA_DMACIntTCClear_Ch(GPDMAChannelConfig->ChannelNum);
-	LPC_GPDMA->DMACIntErrClr = GPDMA_DMACIntErrClr_Ch(GPDMAChannelConfig->ChannelNum);
-
-	// Clear DMA configure
-	pDMAch->DMACCControl = 0x00;
-	pDMAch->DMACCConfig = 0x00;
-
-	/* Assign Linker List Item value */
-	pDMAch->DMACCLLI = GPDMAChannelConfig->DMALLI;
-
-	/* Set value to Channel Control Registers */
-	switch (GPDMAChannelConfig->TransferType)
-	{
-	// Memory to memory
-	case GPDMA_TRANSFERTYPE_M2M:
-		// Assign physical source and destination address
-		pDMAch->DMACCSrcAddr = GPDMAChannelConfig->SrcMemAddr;
-		pDMAch->DMACCDestAddr = GPDMAChannelConfig->DstMemAddr;
-		pDMAch->DMACCControl
-				= GPDMA_DMACCxControl_TransferSize(GPDMAChannelConfig->TransferSize) \
-						| GPDMA_DMACCxControl_SBSize(GPDMA_BSIZE_32) \
-						| GPDMA_DMACCxControl_DBSize(GPDMA_BSIZE_32) \
-						| GPDMA_DMACCxControl_SWidth(GPDMAChannelConfig->TransferWidth) \
-						| GPDMA_DMACCxControl_DWidth(GPDMAChannelConfig->TransferWidth) \
-						| GPDMA_DMACCxControl_SI \
-						| GPDMA_DMACCxControl_DI \
-						| GPDMA_DMACCxControl_I;
-		break;
-	// Memory to peripheral
-	case GPDMA_TRANSFERTYPE_M2P:
-		// Assign physical source
-		pDMAch->DMACCSrcAddr = GPDMAChannelConfig->SrcMemAddr;
-		// Assign peripheral destination address
-		pDMAch->DMACCDestAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig->DstConn];
-		pDMAch->DMACCControl
-				= GPDMA_DMACCxControl_TransferSize((uint32_t)GPDMAChannelConfig->TransferSize) \
-						| GPDMA_DMACCxControl_SBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_DBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_SWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_DWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_SI \
-						| GPDMA_DMACCxControl_I;
-		break;
-	// Peripheral to memory
-	case GPDMA_TRANSFERTYPE_P2M:
-		// Assign peripheral source address
-		pDMAch->DMACCSrcAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig->SrcConn];
-		// Assign memory destination address
-		pDMAch->DMACCDestAddr = GPDMAChannelConfig->DstMemAddr;
-		pDMAch->DMACCControl
-				= GPDMA_DMACCxControl_TransferSize((uint32_t)GPDMAChannelConfig->TransferSize) \
-						| GPDMA_DMACCxControl_SBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_DBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_SWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_DWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_DI \
-						| GPDMA_DMACCxControl_I;
-		break;
-	// Peripheral to peripheral
-	case GPDMA_TRANSFERTYPE_P2P:
-		// Assign peripheral source address
-		pDMAch->DMACCSrcAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig->SrcConn];
-		// Assign peripheral destination address
-		pDMAch->DMACCDestAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig->DstConn];
-		pDMAch->DMACCControl
-				= GPDMA_DMACCxControl_TransferSize((uint32_t)GPDMAChannelConfig->TransferSize) \
-						| GPDMA_DMACCxControl_SBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_DBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_SWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->SrcConn]) \
-						| GPDMA_DMACCxControl_DWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig->DstConn]) \
-						| GPDMA_DMACCxControl_I;
-		break;
-	// Do not support any more transfer type, return ERROR
-	default:
-		return ERROR;
-	}
-
-	/* Re-Configure DMA Request Select for source peripheral */
-	if (GPDMAChannelConfig->SrcConn > 15)
-	{
-		LPC_SC->DMAREQSEL |= (1<<(GPDMAChannelConfig->SrcConn - 16));
-	} else {
-		LPC_SC->DMAREQSEL &= ~(1<<(GPDMAChannelConfig->SrcConn - 8));
-	}
-
-	/* Re-Configure DMA Request Select for Destination peripheral */
-	if (GPDMAChannelConfig->DstConn > 15)
-	{
-		LPC_SC->DMAREQSEL |= (1<<(GPDMAChannelConfig->DstConn - 16));
-	} else {
-		LPC_SC->DMAREQSEL &= ~(1<<(GPDMAChannelConfig->DstConn - 8));
-	}
-
-	/* Enable DMA channels, little endian */
-	LPC_GPDMA->DMACConfig = GPDMA_DMACConfig_E;
-	while (!(LPC_GPDMA->DMACConfig & GPDMA_DMACConfig_E));
-
-	// Calculate absolute value for Connection number
-	tmp1 = GPDMAChannelConfig->SrcConn;
-	tmp1 = ((tmp1 > 15) ? (tmp1 - 8) : tmp1);
-	tmp2 = GPDMAChannelConfig->DstConn;
-	tmp2 = ((tmp2 > 15) ? (tmp2 - 8) : tmp2);
-
-	// Configure DMA Channel, enable Error Counter and Terminate counter
-	pDMAch->DMACCConfig = GPDMA_DMACCxConfig_IE | GPDMA_DMACCxConfig_ITC /*| GPDMA_DMACCxConfig_E*/ \
-		| GPDMA_DMACCxConfig_TransferType((uint32_t)GPDMAChannelConfig->TransferType) \
-		| GPDMA_DMACCxConfig_SrcPeripheral(tmp1) \
-		| GPDMA_DMACCxConfig_DestPeripheral(tmp2);
-
-	return SUCCESS;
-}
-
-
-/*********************************************************************//**
- * @brief		Enable/Disable DMA channel
- * @param[in]	channelNum	GPDMA channel, should be in range from 0 to 7
- * @param[in]	NewState	New State of this command, should be:
- * 					- ENABLE.
- * 					- DISABLE.
- * @return		None
- **********************************************************************/
-void GPDMA_ChannelCmd(uint8_t channelNum, FunctionalState NewState)
-{
-	LPC_GPDMACH_TypeDef *pDMAch;
-
-	// Get Channel pointer
-	pDMAch = (const LPC_GPDMACH_TypeDef *) pGPDMACh[channelNum];
-
-	if (NewState == ENABLE) {
-		pDMAch->DMACCConfig |= GPDMA_DMACCxConfig_E;
-	} else {
-		pDMAch->DMACCConfig &= ~GPDMA_DMACCxConfig_E;
-	}
-}
-/*********************************************************************//**
- * @brief		Check if corresponding channel does have an active interrupt
- * 				request or not
- * @param[in]	type		type of status, should be:
- * 					- GPDMA_STAT_INT: 		GPDMA Interrupt Status
- * 					- GPDMA_STAT_INTTC: 	GPDMA Interrupt Terminal Count Request Status
- * 					- GPDMA_STAT_INTERR:	GPDMA Interrupt Error Status
- * 					- GPDMA_STAT_RAWINTTC:	GPDMA Raw Interrupt Terminal Count Status
- * 					- GPDMA_STAT_RAWINTERR:	GPDMA Raw Error Interrupt Status
- * 					- GPDMA_STAT_ENABLED_CH:GPDMA Enabled Channel Status
- * @param[in]	channel		GPDMA channel, should be in range from 0 to 7
- * @return		IntStatus	status of DMA channel interrupt after masking
- * 				Should be:
- * 					- SET: the corresponding channel has no active interrupt request
- * 					- RESET: the corresponding channel does have an active interrupt request
- **********************************************************************/
-IntStatus GPDMA_IntGetStatus(GPDMA_Status_Type type, uint8_t channel)
-{
-	CHECK_PARAM(PARAM_GPDMA_STAT(type));
-	CHECK_PARAM(PARAM_GPDMA_CHANNEL(channel));
-
-	switch (type)
-	{
-	case GPDMA_STAT_INT: //check status of DMA channel interrupts
-		if (LPC_GPDMA->DMACIntStat & (GPDMA_DMACIntStat_Ch(channel)))
-			return SET;
-		return RESET;
-	case GPDMA_STAT_INTTC: // check terminal count interrupt request status for DMA
-		if (LPC_GPDMA->DMACIntTCStat & GPDMA_DMACIntTCStat_Ch(channel))
-			return SET;
-		return RESET;
-	case GPDMA_STAT_INTERR: //check interrupt status for DMA channels
-		if (LPC_GPDMA->DMACIntErrStat & GPDMA_DMACIntTCClear_Ch(channel))
-			return SET;
-		return RESET;
-	case GPDMA_STAT_RAWINTTC: //check status of the terminal count interrupt for DMA channels
-		if (LPC_GPDMA->DMACRawIntErrStat & GPDMA_DMACRawIntTCStat_Ch(channel))
-			return SET;
-		return RESET;
-	case GPDMA_STAT_RAWINTERR: //check status of the error interrupt for DMA channels
-		if (LPC_GPDMA->DMACRawIntTCStat & GPDMA_DMACRawIntErrStat_Ch(channel))
-			return SET;
-		return RESET;
-	default: //check enable status for DMA channels
-		if (LPC_GPDMA->DMACEnbldChns & GPDMA_DMACEnbldChns_Ch(channel))
-			return SET;
-		return RESET;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Clear one or more interrupt requests on DMA channels
- * @param[in]	type		type of interrupt request, should be:
- * 					- GPDMA_STATCLR_INTTC: 	GPDMA Interrupt Terminal Count Request Clear
- * 					- GPDMA_STATCLR_INTERR: GPDMA Interrupt Error Clear
- * @param[in]	channel		GPDMA channel, should be in range from 0 to 7
- * @return		None
- **********************************************************************/
-void GPDMA_ClearIntPending(GPDMA_StateClear_Type type, uint8_t channel)
-{
-	CHECK_PARAM(PARAM_GPDMA_STATCLR(type));
-	CHECK_PARAM(PARAM_GPDMA_CHANNEL(channel));
-
-	if (type == GPDMA_STATCLR_INTTC) // clears the terminal count interrupt request on DMA channel
-		LPC_GPDMA->DMACIntTCClear = GPDMA_DMACIntTCClear_Ch(channel);
-	else // clear the error interrupt request
-		LPC_GPDMA->DMACIntErrClr = GPDMA_DMACIntErrClr_Ch(channel);
-}
-
-/**
- * @}
- */
-
-#endif /* _GPDMA */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpio.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_gpio.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,759 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_gpio.c				2010-05-21
-*//**
-* @file		lpc17xx_gpio.c
-* @brief	Contains all functions support for GPIO firmware
-* 			library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup GPIO
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_gpio.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _GPIO
-
-/* Private Functions ---------------------------------------------------------- */
-
-static LPC_GPIO_TypeDef *GPIO_GetPointer(uint8_t portNum);
-static GPIO_HalfWord_TypeDef *FIO_HalfWordGetPointer(uint8_t portNum);
-static GPIO_Byte_TypeDef *FIO_ByteGetPointer(uint8_t portNum);
-
-/*********************************************************************//**
- * @brief		Get pointer to GPIO peripheral due to GPIO port
- * @param[in]	portNum		Port Number value, should be in range from 0 to 4.
- * @return		Pointer to GPIO peripheral
- **********************************************************************/
-static LPC_GPIO_TypeDef *GPIO_GetPointer(uint8_t portNum)
-{
-	LPC_GPIO_TypeDef *pGPIO = NULL;
-
-	switch (portNum) {
-	case 0:
-		pGPIO = LPC_GPIO0;
-		break;
-	case 1:
-		pGPIO = LPC_GPIO1;
-		break;
-	case 2:
-		pGPIO = LPC_GPIO2;
-		break;
-	case 3:
-		pGPIO = LPC_GPIO3;
-		break;
-	case 4:
-		pGPIO = LPC_GPIO4;
-		break;
-	default:
-		break;
-	}
-
-	return pGPIO;
-}
-
-/*********************************************************************//**
- * @brief		Get pointer to FIO peripheral in halfword accessible style
- * 				due to FIO port
- * @param[in]	portNum		Port Number value, should be in range from 0 to 4.
- * @return		Pointer to FIO peripheral
- **********************************************************************/
-static GPIO_HalfWord_TypeDef *FIO_HalfWordGetPointer(uint8_t portNum)
-{
-	GPIO_HalfWord_TypeDef *pFIO = NULL;
-
-	switch (portNum) {
-	case 0:
-		pFIO = GPIO0_HalfWord;
-		break;
-	case 1:
-		pFIO = GPIO1_HalfWord;
-		break;
-	case 2:
-		pFIO = GPIO2_HalfWord;
-		break;
-	case 3:
-		pFIO = GPIO3_HalfWord;
-		break;
-	case 4:
-		pFIO = GPIO4_HalfWord;
-		break;
-	default:
-		break;
-	}
-
-	return pFIO;
-}
-
-/*********************************************************************//**
- * @brief		Get pointer to FIO peripheral in byte accessible style
- * 				due to FIO port
- * @param[in]	portNum		Port Number value, should be in range from 0 to 4.
- * @return		Pointer to FIO peripheral
- **********************************************************************/
-static GPIO_Byte_TypeDef *FIO_ByteGetPointer(uint8_t portNum)
-{
-	GPIO_Byte_TypeDef *pFIO = NULL;
-
-	switch (portNum) {
-	case 0:
-		pFIO = GPIO0_Byte;
-		break;
-	case 1:
-		pFIO = GPIO1_Byte;
-		break;
-	case 2:
-		pFIO = GPIO2_Byte;
-		break;
-	case 3:
-		pFIO = GPIO3_Byte;
-		break;
-	case 4:
-		pFIO = GPIO4_Byte;
-		break;
-	default:
-		break;
-	}
-
-	return pFIO;
-}
-
-/* End of Private Functions --------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup GPIO_Public_Functions
- * @{
- */
-
-
-/* GPIO ------------------------------------------------------------------------------ */
-
-/*********************************************************************//**
- * @brief		Set Direction for GPIO port.
- * @param[in]	portNum		Port Number value, should be in range from 0 to 4
- * @param[in]	bitValue	Value that contains all bits to set direction,
- * 							in range from 0 to 0xFFFFFFFF.
- * 							example: value 0x5 to set direction for bit 0 and bit 1.
- * @param[in]	dir			Direction value, should be:
- * 							- 0: Input.
- * 							- 1: Output.
- * @return		None
- *
- * Note: All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void GPIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir)
-{
-	LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
-
-	if (pGPIO != NULL) {
-		// Enable Output
-		if (dir) {
-			pGPIO->FIODIR |= bitValue;
-		}
-		// Enable Input
-		else {
-			pGPIO->FIODIR &= ~bitValue;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Set Value for bits that have output direction on GPIO port.
- * @param[in]	portNum		Port number value, should be in range from 0 to 4
- * @param[in]	bitValue	Value that contains all bits on GPIO to set,
- * 							in range from 0 to 0xFFFFFFFF.
- * 							example: value 0x5 to set bit 0 and bit 1.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void GPIO_SetValue(uint8_t portNum, uint32_t bitValue)
-{
-	LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
-
-	if (pGPIO != NULL) {
-		pGPIO->FIOSET = bitValue;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Clear Value for bits that have output direction on GPIO port.
- * @param[in]	portNum		Port number value, should be in range from 0 to 4
- * @param[in]	bitValue	Value that contains all bits on GPIO to clear,
- * 							in range from 0 to 0xFFFFFFFF.
- * 							example: value 0x5 to clear bit 0 and bit 1.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void GPIO_ClearValue(uint8_t portNum, uint32_t bitValue)
-{
-	LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
-
-	if (pGPIO != NULL) {
-		pGPIO->FIOCLR = bitValue;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Read Current state on port pin that have input direction of GPIO
- * @param[in]	portNum		Port number to read value, in range from 0 to 4
- * @return		Current value of GPIO port.
- *
- * Note: Return value contain state of each port pin (bit) on that GPIO regardless
- * its direction is input or output.
- **********************************************************************/
-uint32_t GPIO_ReadValue(uint8_t portNum)
-{
-	LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
-
-	if (pGPIO != NULL) {
-		return pGPIO->FIOPIN;
-	}
-
-	return (0);
-}
-
-/*********************************************************************//**
- * @brief		Enable GPIO interrupt (just used for P0.0-P0.30, P2.0-P2.13)
- * @param[in]	portNum		Port number to read value, should be: 0 or 2
- * @param[in]	bitValue	Value that contains all bits on GPIO to enable,
- * 							in range from 0 to 0xFFFFFFFF.
- * @param[in]	edgeState	state of edge, should be:
- * 							- 0: Rising edge
- * 							- 1: Falling edge
- * @return		None
- **********************************************************************/
-void GPIO_IntCmd(uint8_t portNum, uint32_t bitValue, uint8_t edgeState)
-{
-	if((portNum == 0)&&(edgeState == 0))
-		LPC_GPIOINT->IO0IntEnR = bitValue;
-	else if ((portNum == 2)&&(edgeState == 0))
-		LPC_GPIOINT->IO2IntEnR = bitValue;
-	else if ((portNum == 0)&&(edgeState == 1))
-		LPC_GPIOINT->IO0IntEnF = bitValue;
-	else if ((portNum == 2)&&(edgeState == 1))
-		LPC_GPIOINT->IO2IntEnF = bitValue;
-	else
-		//Error
-		while(1);
-}
-
-/*********************************************************************//**
- * @brief		Get GPIO Interrupt Status (just used for P0.0-P0.30, P2.0-P2.13)
- * @param[in]	portNum		Port number to read value, should be: 0 or 2
- * @param[in]	pinNum		Pin number, should be: 0..30(with port 0) and 0..13
- * 							(with port 2)
- * @param[in]	edgeState	state of edge, should be:
- * 							- 0: Rising edge
- * 							- 1: Falling edge
- * @return		Bool	could be:
- * 						- ENABLE: Interrupt has been generated due to a rising
- * 								edge on P0.0
- * 						- DISABLE: A rising edge has not been detected on P0.0
- **********************************************************************/
-FunctionalState GPIO_GetIntStatus(uint8_t portNum, uint32_t pinNum, uint8_t edgeState)
-{
-	if((portNum == 0) && (edgeState == 0))//Rising Edge
-		return ((FunctionalState)(((LPC_GPIOINT->IO0IntStatR)>>pinNum)& 0x1));
-	else if ((portNum == 2) && (edgeState == 0))
-		return ((FunctionalState)(((LPC_GPIOINT->IO2IntStatR)>>pinNum)& 0x1));
-	else if ((portNum == 0) && (edgeState == 1))//Falling Edge
-		return ((FunctionalState)(((LPC_GPIOINT->IO0IntStatF)>>pinNum)& 0x1));
-	else if ((portNum == 2) && (edgeState == 1))
-		return ((FunctionalState)(((LPC_GPIOINT->IO2IntStatF)>>pinNum)& 0x1));
-	else
-		//Error
-		while(1);
-}
-/*********************************************************************//**
- * @brief		Clear GPIO interrupt (just used for P0.0-P0.30, P2.0-P2.13)
- * @param[in]	portNum		Port number to read value, should be: 0 or 2
- * @param[in]	bitValue	Value that contains all bits on GPIO to enable,
- * 							in range from 0 to 0xFFFFFFFF.
- * @return		None
- **********************************************************************/
-void GPIO_ClearInt(uint8_t portNum, uint32_t bitValue)
-{
-	if(portNum == 0)
-		LPC_GPIOINT->IO0IntClr = bitValue;
-	else if (portNum == 2)
-		LPC_GPIOINT->IO2IntClr = bitValue;
-	else
-		//Invalid portNum
-		while(1);
-}
-
-/* FIO word accessible ----------------------------------------------------------------- */
-/* Stub function for FIO (word-accessible) style */
-
-/**
- * @brief The same with GPIO_SetDir()
- */
-void FIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir)
-{
-	GPIO_SetDir(portNum, bitValue, dir);
-}
-
-/**
- * @brief The same with GPIO_SetValue()
- */
-void FIO_SetValue(uint8_t portNum, uint32_t bitValue)
-{
-	GPIO_SetValue(portNum, bitValue);
-}
-
-/**
- * @brief The same with GPIO_ClearValue()
- */
-void FIO_ClearValue(uint8_t portNum, uint32_t bitValue)
-{
-	GPIO_ClearValue(portNum, bitValue);
-}
-
-/**
- * @brief The same with GPIO_ReadValue()
- */
-uint32_t FIO_ReadValue(uint8_t portNum)
-{
-	return (GPIO_ReadValue(portNum));
-}
-
-/**
- * @brief The same with GPIO_IntCmd()
- */
-void FIO_IntCmd(uint8_t portNum, uint32_t bitValue, uint8_t edgeState)
-{
-	GPIO_IntCmd(portNum, bitValue, edgeState);
-}
-
-/**
- * @brief The same with GPIO_GetIntStatus()
- */
-FunctionalState FIO_GetIntStatus(uint8_t portNum, uint32_t pinNum, uint8_t edgeState)
-{
-	return (GPIO_GetIntStatus(portNum, pinNum, edgeState));
-}
-
-/**
- * @brief The same with GPIO_ClearInt()
- */
-void FIO_ClearInt(uint8_t portNum, uint32_t bitValue)
-{
-	GPIO_ClearInt(portNum, bitValue);
-}
-/*********************************************************************//**
- * @brief		Set mask value for bits in FIO port
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	bitValue	Value that contains all bits in to set,
- * 							in range from 0 to 0xFFFFFFFF.
- * @param[in]	maskValue	Mask value contains state value for each bit:
- * 							- 0: not mask.
- * 							- 1: mask.
- * @return		None
- *
- * Note:
- * - All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- * - After executing this function, in mask register, value '0' on each bit
- * enables an access to the corresponding physical pin via a read or write access,
- * while value '1' on bit (masked) that corresponding pin will not be changed
- * with write access and if read, will not be reflected in the updated pin.
- **********************************************************************/
-void FIO_SetMask(uint8_t portNum, uint32_t bitValue, uint8_t maskValue)
-{
-	LPC_GPIO_TypeDef *pFIO = GPIO_GetPointer(portNum);
-	if(pFIO != NULL) {
-		// Mask
-		if (maskValue){
-			pFIO->FIOMASK |= bitValue;
-		}
-		// Un-mask
-		else {
-			pFIO->FIOMASK &= ~bitValue;
-		}
-	}
-}
-
-
-/* FIO halfword accessible ------------------------------------------------------------- */
-
-/*********************************************************************//**
- * @brief		Set direction for FIO port in halfword accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	halfwordNum	HalfWord part number, should be 0 (lower) or 1(upper)
- * @param[in]	bitValue	Value that contains all bits in to set direction,
- * 							in range from 0 to 0xFFFF.
- * @param[in]	dir			Direction value, should be:
- * 							- 0: Input.
- * 							- 1: Output.
- * @return		None
- *
- * Note: All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_HalfWordSetDir(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t dir)
-{
-	GPIO_HalfWord_TypeDef *pFIO = FIO_HalfWordGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Output direction
-		if (dir) {
-			// Upper
-			if(halfwordNum) {
-				pFIO->FIODIRU |= bitValue;
-			}
-			// lower
-			else {
-				pFIO->FIODIRL |= bitValue;
-			}
-		}
-		// Input direction
-		else {
-			// Upper
-			if(halfwordNum) {
-				pFIO->FIODIRU &= ~bitValue;
-			}
-			// lower
-			else {
-				pFIO->FIODIRL &= ~bitValue;
-			}
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Set mask value for bits in FIO port in halfword accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	halfwordNum	HalfWord part number, should be 0 (lower) or 1(upper)
- * @param[in]	bitValue	Value that contains all bits in to set,
- * 							in range from 0 to 0xFFFF.
- * @param[in]	maskValue	Mask value contains state value for each bit:
- * 					- 0: not mask.
- * 					- 1: mask.
- * @return		None
- *
- * Note:
- * - All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- * - After executing this function, in mask register, value '0' on each bit
- * enables an access to the corresponding physical pin via a read or write access,
- * while value '1' on bit (masked) that corresponding pin will not be changed
- * with write access and if read, will not be reflected in the updated pin.
- **********************************************************************/
-void FIO_HalfWordSetMask(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t maskValue)
-{
-	GPIO_HalfWord_TypeDef *pFIO = FIO_HalfWordGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Mask
-		if (maskValue){
-			// Upper
-			if(halfwordNum) {
-				pFIO->FIOMASKU |= bitValue;
-			}
-			// lower
-			else {
-				pFIO->FIOMASKL |= bitValue;
-			}
-		}
-		// Un-mask
-		else {
-			// Upper
-			if(halfwordNum) {
-				pFIO->FIOMASKU &= ~bitValue;
-			}
-			// lower
-			else {
-				pFIO->FIOMASKL &= ~bitValue;
-			}
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Set bits for FIO port in halfword accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	halfwordNum	HalfWord part number, should be 0 (lower) or 1(upper)
- * @param[in]	bitValue	Value that contains all bits in to set,
- * 							in range from 0 to 0xFFFF.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_HalfWordSetValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue)
-{
-	GPIO_HalfWord_TypeDef *pFIO = FIO_HalfWordGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Upper
-		if(halfwordNum) {
-			pFIO->FIOSETU = bitValue;
-		}
-		// lower
-		else {
-			pFIO->FIOSETL = bitValue;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Clear bits for FIO port in halfword accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	halfwordNum	HalfWord part number, should be 0 (lower) or 1(upper)
- * @param[in]	bitValue	Value that contains all bits in to clear,
- * 							in range from 0 to 0xFFFF.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_HalfWordClearValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue)
-{
-	GPIO_HalfWord_TypeDef *pFIO = FIO_HalfWordGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Upper
-		if(halfwordNum) {
-			pFIO->FIOCLRU = bitValue;
-		}
-		// lower
-		else {
-			pFIO->FIOCLRL = bitValue;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Read Current state on port pin that have input direction of GPIO
- * 				in halfword accessible style.
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	halfwordNum	HalfWord part number, should be 0 (lower) or 1(upper)
- * @return		Current value of FIO port pin of specified halfword.
- * Note: Return value contain state of each port pin (bit) on that FIO regardless
- * its direction is input or output.
- **********************************************************************/
-uint16_t FIO_HalfWordReadValue(uint8_t portNum, uint8_t halfwordNum)
-{
-	GPIO_HalfWord_TypeDef *pFIO = FIO_HalfWordGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Upper
-		if(halfwordNum) {
-			return (pFIO->FIOPINU);
-		}
-		// lower
-		else {
-			return (pFIO->FIOPINL);
-		}
-	}
-	return (0);
-}
-
-
-/* FIO Byte accessible ------------------------------------------------------------ */
-
-/*********************************************************************//**
- * @brief		Set direction for FIO port in byte accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	byteNum		Byte part number, should be in range from 0 to 3
- * @param[in]	bitValue	Value that contains all bits in to set direction,
- * 							in range from 0 to 0xFF.
- * @param[in]	dir			Direction value, should be:
- * 							- 0: Input.
- * 							- 1: Output.
- * @return		None
- *
- * Note: All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_ByteSetDir(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t dir)
-{
-	GPIO_Byte_TypeDef *pFIO = FIO_ByteGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Output direction
-		if (dir) {
-			if (byteNum <= 3) {
-				pFIO->FIODIR[byteNum] |= bitValue;
-			}
-		}
-		// Input direction
-		else {
-			if (byteNum <= 3) {
-				pFIO->FIODIR[byteNum] &= ~bitValue;
-			}
-		}
-	}
-}
-
-/*********************************************************************//**
- * @brief		Set mask value for bits in FIO port in byte accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	byteNum		Byte part number, should be in range from 0 to 3
- * @param[in]	bitValue	Value that contains all bits in to set mask,
- * 							in range from 0 to 0xFF.
- * @param[in]	maskValue	Mask value contains state value for each bit:
- * 							- 0: not mask.
- * 							- 1: mask.
- * @return		None
- *
- * Note:
- * - All remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- * - After executing this function, in mask register, value '0' on each bit
- * enables an access to the corresponding physical pin via a read or write access,
- * while value '1' on bit (masked) that corresponding pin will not be changed
- * with write access and if read, will not be reflected in the updated pin.
- **********************************************************************/
-void FIO_ByteSetMask(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t maskValue)
-{
-	GPIO_Byte_TypeDef *pFIO = FIO_ByteGetPointer(portNum);
-	if(pFIO != NULL) {
-		// Mask
-		if (maskValue) {
-			if (byteNum <= 3) {
-				pFIO->FIOMASK[byteNum] |= bitValue;
-			}
-		}
-		// Un-mask
-		else {
-			if (byteNum <= 3) {
-				pFIO->FIOMASK[byteNum] &= ~bitValue;
-			}
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Set bits for FIO port in byte accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	byteNum		Byte part number, should be in range from 0 to 3
- * @param[in]	bitValue	Value that contains all bits in to set,
- * 							in range from 0 to 0xFF.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_ByteSetValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue)
-{
-	GPIO_Byte_TypeDef *pFIO = FIO_ByteGetPointer(portNum);
-	if (pFIO != NULL) {
-		if (byteNum <= 3){
-			pFIO->FIOSET[byteNum] = bitValue;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Clear bits for FIO port in byte accessible style
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	byteNum		Byte part number, should be in range from 0 to 3
- * @param[in]	bitValue	Value that contains all bits in to clear,
- * 							in range from 0 to 0xFF.
- * @return		None
- *
- * Note:
- * - For all bits that has been set as input direction, this function will
- * not effect.
- * - For all remaining bits that are not activated in bitValue (value '0')
- * will not be effected by this function.
- **********************************************************************/
-void FIO_ByteClearValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue)
-{
-	GPIO_Byte_TypeDef *pFIO = FIO_ByteGetPointer(portNum);
-	if (pFIO != NULL) {
-		if (byteNum <= 3){
-			pFIO->FIOCLR[byteNum] = bitValue;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Read Current state on port pin that have input direction of GPIO
- * 				in byte accessible style.
- * @param[in]	portNum		Port number, in range from 0 to 4
- * @param[in]	byteNum		Byte part number, should be in range from 0 to 3
- * @return		Current value of FIO port pin of specified byte part.
- * Note: Return value contain state of each port pin (bit) on that FIO regardless
- * its direction is input or output.
- **********************************************************************/
-uint8_t FIO_ByteReadValue(uint8_t portNum, uint8_t byteNum)
-{
-	GPIO_Byte_TypeDef *pFIO = FIO_ByteGetPointer(portNum);
-	if (pFIO != NULL) {
-		if (byteNum <= 3){
-			return (pFIO->FIOPIN[byteNum]);
-		}
-	}
-	return (0);
-}
-
-/**
- * @}
- */
-
-#endif /* _GPIO */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2c.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2c.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1383 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_gpio.c				2011-03-31
-*//**
-* @file		lpc17xx_gpio.c
-* @brief	Contains all functions support for I2C firmware
-* 			library on LPC17xx
-* @version	2.1
-* @date		31. Mar. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup I2C
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_i2c.h"
-#include "lpc17xx_clkpwr.h"
-#include "lpc17xx_pinsel.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _I2C
-
-
-/* Private Types -------------------------------------------------------------- */
-/** @defgroup I2C_Private_Types I2C Private Types
- * @{
- */
-
-/**
- * @brief I2C device configuration structure type
- */
-typedef struct
-{
-  uint32_t      txrx_setup; 						/* Transmission setup */
-  int32_t		dir;								/* Current direction phase, 0 - write, 1 - read */
-} I2C_CFG_T;
-
-/**
- * @}
- */
-
-/* Private Variables ---------------------------------------------------------- */
-/**
- * @brief II2C driver data for I2C0, I2C1 and I2C2
- */
-static I2C_CFG_T i2cdat[3];
-
-static uint32_t I2C_MasterComplete[3];
-static uint32_t I2C_SlaveComplete[3];
-
-static uint32_t I2C_MonitorBufferIndex;
-
-/* Private Functions ---------------------------------------------------------- */
-
-/* Get I2C number */
-static int32_t I2C_getNum(LPC_I2C_TypeDef *I2Cx);
-
-/* Generate a start condition on I2C bus (in master mode only) */
-static uint32_t I2C_Start (LPC_I2C_TypeDef *I2Cx);
-
-/* Generate a stop condition on I2C bus (in master mode only) */
-static void I2C_Stop (LPC_I2C_TypeDef *I2Cx);
-
-/* I2C send byte subroutine */
-static uint32_t I2C_SendByte (LPC_I2C_TypeDef *I2Cx, uint8_t databyte);
-
-/* I2C get byte subroutine */
-static uint32_t I2C_GetByte (LPC_I2C_TypeDef *I2Cx, uint8_t *retdat, Bool ack);
-
-/* I2C set clock (hz) */
-static void I2C_SetClock (LPC_I2C_TypeDef *I2Cx, uint32_t target_clock);
-
-/*--------------------------------------------------------------------------------*/
-/********************************************************************//**
- * @brief		Convert from I2C peripheral to number
- * @param[in]	I2Cx: I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		I2C number, could be: 0..2
- *********************************************************************/
-static int32_t I2C_getNum(LPC_I2C_TypeDef *I2Cx){
-	if (I2Cx == LPC_I2C0) {
-		return (0);
-	} else if (I2Cx == LPC_I2C1) {
-		return (1);
-	} else if (I2Cx == LPC_I2C2) {
-		return (2);
-	}
-	return (-1);
-}
-
-/********************************************************************//**
- * @brief		Generate a start condition on I2C bus (in master mode only)
- * @param[in]	I2Cx: I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		value of I2C status register after generate a start condition
- *********************************************************************/
-static uint32_t I2C_Start (LPC_I2C_TypeDef *I2Cx)
-{
-	I2Cx->I2CONSET = I2C_I2CONSET_STA;
-	I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-
-	// Wait for complete
-	while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
-	I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-	return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-}
-
-/********************************************************************//**
- * @brief		Generate a stop condition on I2C bus (in master mode only)
- * @param[in]	I2Cx: I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		None
- *********************************************************************/
-static void I2C_Stop (LPC_I2C_TypeDef *I2Cx)
-{
-
-	/* Make sure start bit is not active */
-	if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
-	{
-		I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-	}
-	I2Cx->I2CONSET = I2C_I2CONSET_STO;
-	I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-}
-
-/********************************************************************//**
- * @brief		Send a byte
- * @param[in]	I2Cx: I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	databyte: number of byte
- * @return 		value of I2C status register after sending
- *********************************************************************/
-static uint32_t I2C_SendByte (LPC_I2C_TypeDef *I2Cx, uint8_t databyte)
-{
-	/* Make sure start bit is not active */
-	if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
-	{
-		I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-	}
-	I2Cx->I2DAT = databyte & I2C_I2DAT_BITMASK;
-	I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-
-	while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
-	return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-}
-
-/********************************************************************//**
- * @brief		Get a byte
- * @param[in]	I2Cx: I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[out]	retdat	pointer to return data
- * @param[in]	ack		assert acknowledge or not, should be: TRUE/FALSE
- * @return 		value of I2C status register after sending
- *********************************************************************/
-static uint32_t I2C_GetByte (LPC_I2C_TypeDef *I2Cx, uint8_t *retdat, Bool ack)
-{
-	if (ack == TRUE)
-	{
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-	}
-	else
-	{
-		I2Cx->I2CONCLR = I2C_I2CONCLR_AAC;
-	}
-	I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-
-	while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
-	*retdat = (uint8_t) (I2Cx->I2DAT & I2C_I2DAT_BITMASK);
-	return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-}
-
-/*********************************************************************//**
- * @brief 		Setup clock rate for I2C peripheral
- * @param[in] 	I2Cx	I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	target_clock : clock of SSP (Hz)
- * @return 		None
- ***********************************************************************/
-static void I2C_SetClock (LPC_I2C_TypeDef *I2Cx, uint32_t target_clock)
-{
-	uint32_t temp = 0;
-
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-
-	// Get PCLK of I2C controller
-	if (I2Cx == LPC_I2C0)
-	{
-		temp = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_I2C0) / target_clock;
-	}
-	else if (I2Cx == LPC_I2C1)
-	{
-		temp = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_I2C1) / target_clock;
-	}
-	else if (I2Cx == LPC_I2C2)
-	{
-		temp = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_I2C2) / target_clock;
-	}
-
-	/* Set the I2C clock value to register */
-	I2Cx->I2SCLH = (uint32_t)(temp / 2);
-	I2Cx->I2SCLL = (uint32_t)(temp - I2Cx->I2SCLH);
-}
-/* End of Private Functions --------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup I2C_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief		Initializes the I2Cx peripheral with specified parameter.
- * @param[in]	I2Cx	I2C peripheral selected, should be
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	clockrate Target clock rate value to initialized I2C
- * 				peripheral (Hz)
- * @return 		None
- *********************************************************************/
-void I2C_Init(LPC_I2C_TypeDef *I2Cx, uint32_t clockrate)
-{
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-
-	if (I2Cx==LPC_I2C0)
-	{
-		/* Set up clock and power for I2C0 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C0, ENABLE);
-		/* As default, peripheral clock for I2C0 module
-		 * is set to FCCLK / 2 */
-		CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_I2C0, CLKPWR_PCLKSEL_CCLK_DIV_2);
-	}
-	else if (I2Cx==LPC_I2C1)
-	{
-		/* Set up clock and power for I2C1 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C1, ENABLE);
-		/* As default, peripheral clock for I2C1 module
-		 * is set to FCCLK / 2 */
-		CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_I2C1, CLKPWR_PCLKSEL_CCLK_DIV_2);
-	}
-	else if (I2Cx==LPC_I2C2)
-	{
-		/* Set up clock and power for I2C2 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C2, ENABLE);
-		/* As default, peripheral clock for I2C2 module
-		 * is set to FCCLK / 2 */
-		CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_I2C2, CLKPWR_PCLKSEL_CCLK_DIV_2);
-	}
-	else {
-		// Up-Support this device
-		return;
-	}
-
-    /* Set clock rate */
-    I2C_SetClock(I2Cx, clockrate);
-    /* Set I2C operation to default */
-    I2Cx->I2CONCLR = (I2C_I2CONCLR_AAC | I2C_I2CONCLR_STAC | I2C_I2CONCLR_I2ENC);
-}
-
-/*********************************************************************//**
- * @brief		De-initializes the I2C peripheral registers to their
- *                  default reset values.
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *  			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		None
- **********************************************************************/
-void I2C_DeInit(LPC_I2C_TypeDef* I2Cx)
-{
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-
-	/* Disable I2C control */
-	I2Cx->I2CONCLR = I2C_I2CONCLR_I2ENC;
-
-	if (I2Cx==LPC_I2C0)
-	{
-		/* Disable power for I2C0 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C0, DISABLE);
-	}
-	else if (I2Cx==LPC_I2C1)
-	{
-		/* Disable power for I2C1 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C1, DISABLE);
-	}
-	else if (I2Cx==LPC_I2C2)
-	{
-		/* Disable power for I2C2 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCI2C2, DISABLE);
-	}
-}
-
-/*********************************************************************//**
- * @brief		Enable or disable I2C peripheral's operation
- * @param[in]	I2Cx I2C peripheral selected, should be
- *  			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	NewState New State of I2Cx peripheral's operation
- * @return 		none
- **********************************************************************/
-void I2C_Cmd(LPC_I2C_TypeDef* I2Cx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-
-	if (NewState == ENABLE)
-	{
-		I2Cx->I2CONSET = I2C_I2CONSET_I2EN;
-	}
-	else
-	{
-		I2Cx->I2CONCLR = I2C_I2CONCLR_I2ENC;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Enable/Disable interrupt for I2C peripheral
- * @param[in]	I2Cx	I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	NewState	New State of I2C peripheral interrupt in NVIC core
- * 				should be:
- * 				- ENABLE: enable interrupt for this I2C peripheral
- * 				- DISABLE: disable interrupt for this I2C peripheral
- * @return 		None
- **********************************************************************/
-void I2C_IntCmd (LPC_I2C_TypeDef *I2Cx, Bool NewState)
-{
-	if (NewState)
-	{
-		if(I2Cx == LPC_I2C0)
-		{
-			NVIC_EnableIRQ(I2C0_IRQn);
-		}
-		else if (I2Cx == LPC_I2C1)
-		{
-			NVIC_EnableIRQ(I2C1_IRQn);
-		}
-		else if (I2Cx == LPC_I2C2)
-		{
-			NVIC_EnableIRQ(I2C2_IRQn);
-		}
-	}
-	else
-	{
-		if(I2Cx == LPC_I2C0)
-		{
-			NVIC_DisableIRQ(I2C0_IRQn);
-		}
-		else if (I2Cx == LPC_I2C1)
-		{
-			NVIC_DisableIRQ(I2C1_IRQn);
-		}
-		else if (I2Cx == LPC_I2C2)
-		{
-			NVIC_DisableIRQ(I2C2_IRQn);
-		}
-	}
-    return;
-}
-
-
-/*********************************************************************//**
- * @brief 		General Master Interrupt handler for I2C peripheral
- * @param[in]	I2Cx	I2C peripheral selected, should be:
- * 				- LPC_I2C
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		None
- **********************************************************************/
-void I2C_MasterHandler (LPC_I2C_TypeDef  *I2Cx)
-{
-	int32_t tmp;
-	uint8_t returnCode;
-	I2C_M_SETUP_Type *txrx_setup;
-
-	tmp = I2C_getNum(I2Cx);
-	txrx_setup = (I2C_M_SETUP_Type *) i2cdat[tmp].txrx_setup;
-
-	returnCode = (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-	// Save current status
-	txrx_setup->status = returnCode;
-	// there's no relevant information
-	if (returnCode == I2C_I2STAT_NO_INF){
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		return;
-	}
-
-	/* ----------------------------- TRANSMIT PHASE --------------------------*/
-	if (i2cdat[tmp].dir == 0){
-		switch (returnCode)
-		{
-		/* A start/repeat start condition has been transmitted -------------------*/
-		case I2C_I2STAT_M_TX_START:
-		case I2C_I2STAT_M_TX_RESTART:
-			I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-			/*
-			 * If there's any transmit data, then start to
-			 * send SLA+W right now, otherwise check whether if there's
-			 * any receive data for next state.
-			 */
-			if ((txrx_setup->tx_data != NULL) && (txrx_setup->tx_length != 0)){
-				I2Cx->I2DAT = (txrx_setup->sl_addr7bit << 1);
-				I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-			} else {
-				goto next_stage;
-			}
-			break;
-
-		/* SLA+W has been transmitted, ACK has been received ----------------------*/
-		case I2C_I2STAT_M_TX_SLAW_ACK:
-		/* Data has been transmitted, ACK has been received */
-		case I2C_I2STAT_M_TX_DAT_ACK:
-			/* Send more data */
-			if ((txrx_setup->tx_count < txrx_setup->tx_length) \
-					&& (txrx_setup->tx_data != NULL)){
-				I2Cx->I2DAT =  *(uint8_t *)(txrx_setup->tx_data + txrx_setup->tx_count);
-				txrx_setup->tx_count++;
-				I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-			}
-			// no more data, switch to next stage
-			else {
-next_stage:
-				// change direction
-				i2cdat[tmp].dir = 1;
-				// Check if any data to receive
-				if ((txrx_setup->rx_length != 0) && (txrx_setup->rx_data != NULL)){
-						// check whether if we need to issue an repeat start
-						if ((txrx_setup->tx_length != 0) && (txrx_setup->tx_data != NULL)){
-							// Send out an repeat start command
-							I2Cx->I2CONSET = I2C_I2CONSET_STA;
-							I2Cx->I2CONCLR = I2C_I2CONCLR_AAC | I2C_I2CONCLR_SIC;
-						}
-						// Don't need issue an repeat start, just goto send SLA+R
-						else {
-							goto send_slar;
-						}
-				}
-				// no more data send, the go to end stage now
-				else {
-					// success, goto end stage
-					txrx_setup->status |= I2C_SETUP_STATUS_DONE;
-					goto end_stage;
-				}
-			}
-			break;
-
-		/* SLA+W has been transmitted, NACK has been received ----------------------*/
-		case I2C_I2STAT_M_TX_SLAW_NACK:
-		/* Data has been transmitted, NACK has been received -----------------------*/
-		case I2C_I2STAT_M_TX_DAT_NACK:
-			// update status
-			txrx_setup->status |= I2C_SETUP_STATUS_NOACKF;
-			goto retry;
-		/* Arbitration lost in SLA+R/W or Data bytes -------------------------------*/
-		case I2C_I2STAT_M_TX_ARB_LOST:
-			// update status
-			txrx_setup->status |= I2C_SETUP_STATUS_ARBF;
-		default:
-			goto retry;
-		}
-	}
-
-	/* ----------------------------- RECEIVE PHASE --------------------------*/
-	else if (i2cdat[tmp].dir == 1){
-		switch (returnCode){
-			/* A start/repeat start condition has been transmitted ---------------------*/
-		case I2C_I2STAT_M_RX_START:
-		case I2C_I2STAT_M_RX_RESTART:
-			I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-			/*
-			 * If there's any receive data, then start to
-			 * send SLA+R right now, otherwise check whether if there's
-			 * any receive data for end of state.
-			 */
-			if ((txrx_setup->rx_data != NULL) && (txrx_setup->rx_length != 0)){
-send_slar:
-				I2Cx->I2DAT = (txrx_setup->sl_addr7bit << 1) | 0x01;
-				I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-			} else {
-				// Success, goto end stage
-				txrx_setup->status |= I2C_SETUP_STATUS_DONE;
-				goto end_stage;
-			}
-			break;
-
-		/* SLA+R has been transmitted, ACK has been received -----------------*/
-		case I2C_I2STAT_M_RX_SLAR_ACK:
-			if (txrx_setup->rx_count < (txrx_setup->rx_length - 1)) {
-				/*Data will be received,  ACK will be return*/
-				I2Cx->I2CONSET = I2C_I2CONSET_AA;
-			}
-			else {
-				/*Last data will be received,  NACK will be return*/
-				I2Cx->I2CONCLR = I2C_I2CONSET_AA;
-			}
-			I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-			break;
-
-		/* Data has been received, ACK has been returned ----------------------*/
-		case I2C_I2STAT_M_RX_DAT_ACK:
-			// Note save data and increase counter first, then check later
-			/* Save data  */
-			if ((txrx_setup->rx_data != NULL) && (txrx_setup->rx_count < txrx_setup->rx_length)){
-				*(uint8_t *)(txrx_setup->rx_data + txrx_setup->rx_count) = (I2Cx->I2DAT & I2C_I2DAT_BITMASK);
-				txrx_setup->rx_count++;
-			}
-			if (txrx_setup->rx_count < (txrx_setup->rx_length - 1)) {
-				/*Data will be received,  ACK will be return*/
-				I2Cx->I2CONSET = I2C_I2CONSET_AA;
-			}
-			else {
-				/*Last data will be received,  NACK will be return*/
-				I2Cx->I2CONCLR = I2C_I2CONSET_AA;
-			}
-
-			I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-			break;
-
-		/* Data has been received, NACK has been return -------------------------*/
-		case I2C_I2STAT_M_RX_DAT_NACK:
-			/* Save the last data */
-			if ((txrx_setup->rx_data != NULL) && (txrx_setup->rx_count < txrx_setup->rx_length)){
-				*(uint8_t *)(txrx_setup->rx_data + txrx_setup->rx_count) = (I2Cx->I2DAT & I2C_I2DAT_BITMASK);
-				txrx_setup->rx_count++;
-			}
-			// success, go to end stage
-			txrx_setup->status |= I2C_SETUP_STATUS_DONE;
-			goto end_stage;
-
-		/* SLA+R has been transmitted, NACK has been received ------------------*/
-		case I2C_I2STAT_M_RX_SLAR_NACK:
-			// update status
-			txrx_setup->status |= I2C_SETUP_STATUS_NOACKF;
-			goto retry;
-
-		/* Arbitration lost ----------------------------------------------------*/
-		case I2C_I2STAT_M_RX_ARB_LOST:
-			// update status
-			txrx_setup->status |= I2C_SETUP_STATUS_ARBF;
-		default:
-retry:
-			// check if retransmission is available
-			if (txrx_setup->retransmissions_count < txrx_setup->retransmissions_max){
-				// Clear tx count
-				txrx_setup->tx_count = 0;
-				I2Cx->I2CONSET = I2C_I2CONSET_STA;
-				I2Cx->I2CONCLR = I2C_I2CONCLR_AAC | I2C_I2CONCLR_SIC;
-				txrx_setup->retransmissions_count++;
-			}
-			// End of stage
-			else {
-end_stage:
-				// Disable interrupt
-				I2C_IntCmd(I2Cx, FALSE);
-				// Send stop
-				I2C_Stop(I2Cx);
-
-				I2C_MasterComplete[tmp] = TRUE;
-			}
-			break;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		General Slave Interrupt handler for I2C peripheral
- * @param[in]	I2Cx	I2C peripheral selected, should be:
- *  			- LPC_I2C0
- *  			- LPC_I2C1
- *  			- LPC_I2C2
- * @return 		None
- **********************************************************************/
-void I2C_SlaveHandler (LPC_I2C_TypeDef  *I2Cx)
-{
-	int32_t tmp;
-	uint8_t returnCode;
-	I2C_S_SETUP_Type *txrx_setup;
-	uint32_t timeout;
-
-	tmp = I2C_getNum(I2Cx);
-	txrx_setup = (I2C_S_SETUP_Type *) i2cdat[tmp].txrx_setup;
-
-	returnCode = (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-	// Save current status
-	txrx_setup->status = returnCode;
-	// there's no relevant information
-	if (returnCode == I2C_I2STAT_NO_INF){
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		return;
-	}
-
-
-	switch (returnCode)
-	{
-
-	/* No status information */
-	case I2C_I2STAT_NO_INF:
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		break;
-
-	/* Reading phase -------------------------------------------------------- */
-	/* Own SLA+R has been received, ACK has been returned */
-	case I2C_I2STAT_S_RX_SLAW_ACK:
-	/* General call address has been received, ACK has been returned */
-	case I2C_I2STAT_S_RX_GENCALL_ACK:
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		break;
-
-	/* Previously addressed with own SLA;
-	 * DATA byte has been received;
-	 * ACK has been returned */
-	case I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK:
-	/* DATA has been received, ACK hasn been return */
-	case I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK:
-		/*
-		 * All data bytes that over-flow the specified receive
-		 * data length, just ignore them.
-		 */
-		if ((txrx_setup->rx_count < txrx_setup->rx_length) \
-				&& (txrx_setup->rx_data != NULL)){
-			*(uint8_t *)(txrx_setup->rx_data + txrx_setup->rx_count) = (uint8_t)I2Cx->I2DAT;
-			txrx_setup->rx_count++;
-		}
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		break;
-
-	/* Previously addressed with own SLA;
-	 * DATA byte has been received;
-	 * NOT ACK has been returned */
-	case I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK:
-	/* DATA has been received, NOT ACK has been returned */
-	case I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK:
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		break;
-
-	/*
-	 * Note that: Return code only let us know a stop condition mixed
-	 * with a repeat start condition in the same code value.
-	 * So we should provide a time-out. In case this is really a stop
-	 * condition, this will return back after time out condition. Otherwise,
-	 * next session that is slave receive data will be completed.
-	 */
-
-	/* A Stop or a repeat start condition */
-	case I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX:
-		// Temporally lock the interrupt for timeout condition
-		I2C_IntCmd(I2Cx, FALSE);
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		// enable time out
-		timeout = I2C_SLAVE_TIME_OUT;
-		while(1){
-			if (I2Cx->I2CONSET & I2C_I2CONSET_SI){
-				// re-Enable interrupt
-				I2C_IntCmd(I2Cx, TRUE);
-				break;
-			} else {
-				timeout--;
-				if (timeout == 0){
-					// timeout occur, it's really a stop condition
-					txrx_setup->status |= I2C_SETUP_STATUS_DONE;
-					goto s_int_end;
-				}
-			}
-		}
-		break;
-
-	/* Writing phase -------------------------------------------------------- */
-	/* Own SLA+R has been received, ACK has been returned */
-	case I2C_I2STAT_S_TX_SLAR_ACK:
-	/* Data has been transmitted, ACK has been received */
-	case I2C_I2STAT_S_TX_DAT_ACK:
-		/*
-		 * All data bytes that over-flow the specified receive
-		 * data length, just ignore them.
-		 */
-		if ((txrx_setup->tx_count < txrx_setup->tx_length) \
-				&& (txrx_setup->tx_data != NULL)){
-			I2Cx->I2DAT = *(uint8_t *) (txrx_setup->tx_data + txrx_setup->tx_count);
-			txrx_setup->tx_count++;
-		}
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		break;
-
-	/* Data has been transmitted, NACK has been received,
-	 * that means there's no more data to send, exit now */
-	/*
-	 * Note: Don't wait for stop event since in slave transmit mode,
-	 * since there no proof lets us know when a stop signal has been received
-	 * on slave side.
-	 */
-	case I2C_I2STAT_S_TX_DAT_NACK:
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		txrx_setup->status |= I2C_SETUP_STATUS_DONE;
-		goto s_int_end;
-
-	// Other status must be captured
-	default:
-s_int_end:
-		// Disable interrupt
-		I2C_IntCmd(I2Cx, FALSE);
-		I2Cx->I2CONCLR = I2C_I2CONCLR_AAC | I2C_I2CONCLR_SIC | I2C_I2CONCLR_STAC;
-		I2C_SlaveComplete[tmp] = TRUE;
-		break;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Transmit and Receive data in master mode
- * @param[in]	I2Cx			I2C peripheral selected, should be:
- *  			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	TransferCfg		Pointer to a I2C_M_SETUP_Type structure that
- * 								contains specified information about the
- * 								configuration for master transfer.
- * @param[in]	Opt				a I2C_TRANSFER_OPT_Type type that selected for
- * 								interrupt or polling mode.
- * @return 		SUCCESS or ERROR
- *
- * Note:
- * - In case of using I2C to transmit data only, either transmit length set to 0
- * or transmit data pointer set to NULL.
- * - In case of using I2C to receive data only, either receive length set to 0
- * or receive data pointer set to NULL.
- * - In case of using I2C to transmit followed by receive data, transmit length,
- * transmit data pointer, receive length and receive data pointer should be set
- * corresponding.
- **********************************************************************/
-Status I2C_MasterTransferData(LPC_I2C_TypeDef *I2Cx, I2C_M_SETUP_Type *TransferCfg, \
-								I2C_TRANSFER_OPT_Type Opt)
-{
-	uint8_t *txdat;
-	uint8_t *rxdat;
-	uint32_t CodeStatus;
-	uint8_t tmp;
-
-	// reset all default state
-	txdat = (uint8_t *) TransferCfg->tx_data;
-	rxdat = (uint8_t *) TransferCfg->rx_data;
-	// Reset I2C setup value to default state
-	TransferCfg->tx_count = 0;
-	TransferCfg->rx_count = 0;
-	TransferCfg->status = 0;
-
-	if (Opt == I2C_TRANSFER_POLLING){
-
-		/* First Start condition -------------------------------------------------------------- */
-		TransferCfg->retransmissions_count = 0;
-retry:
-		// reset all default state
-		txdat = (uint8_t *) TransferCfg->tx_data;
-		rxdat = (uint8_t *) TransferCfg->rx_data;
-		// Reset I2C setup value to default state
-		TransferCfg->tx_count = 0;
-		TransferCfg->rx_count = 0;
-		CodeStatus = 0;
-
-		// Start command
-		CodeStatus = I2C_Start(I2Cx);
-		if ((CodeStatus != I2C_I2STAT_M_TX_START) \
-				&& (CodeStatus != I2C_I2STAT_M_TX_RESTART)){
-			TransferCfg->retransmissions_count++;
-			if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-				// save status
-				TransferCfg->status = CodeStatus;
-				goto error;
-			} else {
-				goto retry;
-			}
-		}
-
-		/* In case of sending data first --------------------------------------------------- */
-		if ((TransferCfg->tx_length != 0) && (TransferCfg->tx_data != NULL)){
-
-			/* Send slave address + WR direction bit = 0 ----------------------------------- */
-			CodeStatus = I2C_SendByte(I2Cx, (TransferCfg->sl_addr7bit << 1));
-			if (CodeStatus != I2C_I2STAT_M_TX_SLAW_ACK){
-				TransferCfg->retransmissions_count++;
-				if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-					// save status
-					TransferCfg->status = CodeStatus | I2C_SETUP_STATUS_NOACKF;
-					goto error;
-				} else {
-					goto retry;
-				}
-			}
-
-			/* Send a number of data bytes ---------------------------------------- */
-			while (TransferCfg->tx_count < TransferCfg->tx_length)
-			{
-				CodeStatus = I2C_SendByte(I2Cx, *txdat);
-				if (CodeStatus != I2C_I2STAT_M_TX_DAT_ACK){
-					TransferCfg->retransmissions_count++;
-					if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-						// save status
-						TransferCfg->status = CodeStatus | I2C_SETUP_STATUS_NOACKF;
-						goto error;
-					} else {
-						goto retry;
-					}
-				}
-
-				txdat++;
-				TransferCfg->tx_count++;
-			}
-		}
-
-		/* Second Start condition (Repeat Start) ------------------------------------------- */
-		if ((TransferCfg->tx_length != 0) && (TransferCfg->tx_data != NULL) \
-				&& (TransferCfg->rx_length != 0) && (TransferCfg->rx_data != NULL)){
-
-			CodeStatus = I2C_Start(I2Cx);
-			if ((CodeStatus != I2C_I2STAT_M_RX_START) \
-					&& (CodeStatus != I2C_I2STAT_M_RX_RESTART)){
-				TransferCfg->retransmissions_count++;
-				if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-					// Update status
-					TransferCfg->status = CodeStatus;
-					goto error;
-				} else {
-					goto retry;
-				}
-			}
-		}
-
-		/* Then, start reading after sending data -------------------------------------- */
-		if ((TransferCfg->rx_length != 0) && (TransferCfg->rx_data != NULL)){
-			/* Send slave address + RD direction bit = 1 ----------------------------------- */
-
-			CodeStatus = I2C_SendByte(I2Cx, ((TransferCfg->sl_addr7bit << 1) | 0x01));
-			if (CodeStatus != I2C_I2STAT_M_RX_SLAR_ACK){
-				TransferCfg->retransmissions_count++;
-				if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-					// update status
-					TransferCfg->status = CodeStatus | I2C_SETUP_STATUS_NOACKF;
-					goto error;
-				} else {
-					goto retry;
-				}
-			}
-
-			/* Receive a number of data bytes ------------------------------------------------- */
-			while (TransferCfg->rx_count < TransferCfg->rx_length){
-
-				/*
-				 * Note that: if data length is only one, the master should not
-				 * issue an ACK signal on bus after reading to avoid of next data frame
-				 * on slave side
-				 */
-				if (TransferCfg->rx_count < (TransferCfg->rx_length - 1)){
-					// Issue an ACK signal for next data frame
-					CodeStatus = I2C_GetByte(I2Cx, &tmp, TRUE);
-					if (CodeStatus != I2C_I2STAT_M_RX_DAT_ACK){
-						TransferCfg->retransmissions_count++;
-						if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-							// update status
-							TransferCfg->status = CodeStatus;
-							goto error;
-						} else {
-							goto retry;
-						}
-					}
-				} else {
-					// Do not issue an ACK signal
-					CodeStatus = I2C_GetByte(I2Cx, &tmp, FALSE);
-					if (CodeStatus != I2C_I2STAT_M_RX_DAT_NACK){
-						TransferCfg->retransmissions_count++;
-						if (TransferCfg->retransmissions_count > TransferCfg->retransmissions_max){
-							// update status
-							TransferCfg->status = CodeStatus;
-							goto error;
-						} else {
-							goto retry;
-						}
-					}
-				}
-				*rxdat++ = tmp;
-				TransferCfg->rx_count++;
-			}
-		}
-
-		/* Send STOP condition ------------------------------------------------- */
-		I2C_Stop(I2Cx);
-		return SUCCESS;
-
-error:
-		// Send stop condition
-		I2C_Stop(I2Cx);
-		return ERROR;
-	}
-
-	else if (Opt == I2C_TRANSFER_INTERRUPT){
-		// Setup tx_rx data, callback and interrupt handler
-		tmp = I2C_getNum(I2Cx);
-		i2cdat[tmp].txrx_setup = (uint32_t) TransferCfg;
-		// Set direction phase, write first
-		i2cdat[tmp].dir = 0;
-
-		/* First Start condition -------------------------------------------------------------- */
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-		I2Cx->I2CONSET = I2C_I2CONSET_STA;
-		I2C_IntCmd(I2Cx, TRUE);
-
-		return (SUCCESS);
-	}
-
-	return ERROR;
-}
-
-/*********************************************************************//**
- * @brief 		Receive and Transmit data in slave mode
- * @param[in]	I2Cx			I2C peripheral selected, should be
- *    			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	TransferCfg		Pointer to a I2C_S_SETUP_Type structure that
- * 								contains specified information about the
- * 								configuration for master transfer.
- * @param[in]	Opt				I2C_TRANSFER_OPT_Type type that selected for
- * 								interrupt or polling mode.
- * @return 		SUCCESS or ERROR
- *
- * Note:
- * The mode of slave's operation depends on the command sent from master on
- * the I2C bus. If the master send a SLA+W command, this sub-routine will
- * use receive data length and receive data pointer. If the master send a SLA+R
- * command, this sub-routine will use transmit data length and transmit data
- * pointer.
- * If the master issue an repeat start command or a stop command, the slave will
- * enable an time out condition, during time out condition, if there's no activity
- * on I2C bus, the slave will exit, otherwise (i.e. the master send a SLA+R/W),
- * the slave then switch to relevant operation mode. The time out should be used
- * because the return status code can not show difference from stop and repeat
- * start command in slave operation.
- * In case of the expected data length from master is greater than data length
- * that slave can support:
- * - In case of reading operation (from master): slave will return I2C_I2DAT_IDLE_CHAR
- * value.
- * - In case of writing operation (from master): slave will ignore remain data from master.
- **********************************************************************/
-Status I2C_SlaveTransferData(LPC_I2C_TypeDef *I2Cx, I2C_S_SETUP_Type *TransferCfg, \
-								I2C_TRANSFER_OPT_Type Opt)
-{
-	uint8_t *txdat;
-	uint8_t *rxdat;
-	uint32_t CodeStatus = 0;
-	uint32_t timeout;
-	int32_t time_en;
-	int32_t tmp;
-
-	// reset all default state
-	txdat = (uint8_t *) TransferCfg->tx_data;
-	rxdat = (uint8_t *) TransferCfg->rx_data;
-	// Reset I2C setup value to default state
-	TransferCfg->tx_count = 0;
-	TransferCfg->rx_count = 0;
-	TransferCfg->status = 0;
-
-
-	// Polling option
-	if (Opt == I2C_TRANSFER_POLLING){
-
-		/* Set AA bit to ACK command on I2C bus */
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		/* Clear SI bit to be ready ... */
-		I2Cx->I2CONCLR = (I2C_I2CONCLR_SIC | I2C_I2CONCLR_STAC);
-
-		time_en = 0;
-		timeout = 0;
-
-		while (1)
-		{
-			/* Check SI flag ready */
-			if (I2Cx->I2CONSET & I2C_I2CONSET_SI)
-			{
-				time_en = 0;
-
-				switch (CodeStatus = (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK))
-				{
-
-				/* No status information */
-				case I2C_I2STAT_NO_INF:
-					I2Cx->I2CONSET = I2C_I2CONSET_AA;
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					break;
-
-				/* Reading phase -------------------------------------------------------- */
-				/* Own SLA+R has been received, ACK has been returned */
-				case I2C_I2STAT_S_RX_SLAW_ACK:
-				/* General call address has been received, ACK has been returned */
-				case I2C_I2STAT_S_RX_GENCALL_ACK:
-					I2Cx->I2CONSET = I2C_I2CONSET_AA;
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					break;
-
-				/* Previously addressed with own SLA;
-				 * DATA byte has been received;
-				 * ACK has been returned */
-				case I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK:
-				/* DATA has been received, ACK hasn been return */
-				case I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK:
-					/*
-					 * All data bytes that over-flow the specified receive
-					 * data length, just ignore them.
-					 */
-					if ((TransferCfg->rx_count < TransferCfg->rx_length) \
-							&& (TransferCfg->rx_data != NULL)){
-						*rxdat++ = (uint8_t)I2Cx->I2DAT;
-						TransferCfg->rx_count++;
-					}
-					I2Cx->I2CONSET = I2C_I2CONSET_AA;
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					break;
-
-				/* Previously addressed with own SLA;
-				 * DATA byte has been received;
-				 * NOT ACK has been returned */
-				case I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK:
-				/* DATA has been received, NOT ACK has been returned */
-				case I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK:
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					break;
-
-				/*
-				 * Note that: Return code only let us know a stop condition mixed
-				 * with a repeat start condition in the same code value.
-				 * So we should provide a time-out. In case this is really a stop
-				 * condition, this will return back after time out condition. Otherwise,
-				 * next session that is slave receive data will be completed.
-				 */
-
-				/* A Stop or a repeat start condition */
-				case I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX:
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					// enable time out
-					time_en = 1;
-					timeout = 0;
-					break;
-
-				/* Writing phase -------------------------------------------------------- */
-				/* Own SLA+R has been received, ACK has been returned */
-				case I2C_I2STAT_S_TX_SLAR_ACK:
-				/* Data has been transmitted, ACK has been received */
-				case I2C_I2STAT_S_TX_DAT_ACK:
-					/*
-					 * All data bytes that over-flow the specified receive
-					 * data length, just ignore them.
-					 */
-					if ((TransferCfg->tx_count < TransferCfg->tx_length) \
-							&& (TransferCfg->tx_data != NULL)){
-						I2Cx->I2DAT = *txdat++;
-						TransferCfg->tx_count++;
-					}
-					I2Cx->I2CONSET = I2C_I2CONSET_AA;
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					break;
-
-				/* Data has been transmitted, NACK has been received,
-				 * that means there's no more data to send, exit now */
-				/*
-				 * Note: Don't wait for stop event since in slave transmit mode,
-				 * since there no proof lets us know when a stop signal has been received
-				 * on slave side.
-				 */
-				case I2C_I2STAT_S_TX_DAT_NACK:
-					I2Cx->I2CONSET = I2C_I2CONSET_AA;
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					// enable time out
-					time_en = 1;
-					timeout = 0;
-					break;
-
-				// Other status must be captured
-				default:
-					I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-					goto s_error;
-				}
-			} else if (time_en){
-				if (timeout++ > I2C_SLAVE_TIME_OUT){
-					// it's really a stop condition, goto end stage
-					goto s_end_stage;
-				}
-			}
-		}
-
-s_end_stage:
-		/* Clear AA bit to disable ACK on I2C bus */
-		I2Cx->I2CONCLR = I2C_I2CONCLR_AAC;
-		// Check if there's no error during operation
-		// Update status
-		TransferCfg->status = CodeStatus | I2C_SETUP_STATUS_DONE;
-		return SUCCESS;
-
-s_error:
-		/* Clear AA bit to disable ACK on I2C bus */
-		I2Cx->I2CONCLR = I2C_I2CONCLR_AAC;
-		// Update status
-		TransferCfg->status = CodeStatus;
-		return ERROR;
-	}
-
-	else if (Opt == I2C_TRANSFER_INTERRUPT){
-		// Setup tx_rx data, callback and interrupt handler
-		tmp = I2C_getNum(I2Cx);
-		i2cdat[tmp].txrx_setup = (uint32_t) TransferCfg;
-		// Set direction phase, read first
-		i2cdat[tmp].dir = 1;
-
-		// Enable AA
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC | I2C_I2CONCLR_STAC;
-		I2C_IntCmd(I2Cx, TRUE);
-
-		return (SUCCESS);
-	}
-
-	return ERROR;
-}
-
-/*********************************************************************//**
- * @brief		Set Own slave address in I2C peripheral corresponding to
- * 				parameter specified in OwnSlaveAddrConfigStruct.
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *    			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	OwnSlaveAddrConfigStruct	Pointer to a I2C_OWNSLAVEADDR_CFG_Type
- * 				structure that contains the configuration information for the
-*               specified I2C slave address.
- * @return 		None
- **********************************************************************/
-void I2C_SetOwnSlaveAddr(LPC_I2C_TypeDef *I2Cx, I2C_OWNSLAVEADDR_CFG_Type *OwnSlaveAddrConfigStruct)
-{
-	uint32_t tmp;
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-	CHECK_PARAM(PARAM_I2C_SLAVEADDR_CH(OwnSlaveAddrConfigStruct->SlaveAddrChannel));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(OwnSlaveAddrConfigStruct->GeneralCallState));
-
-	tmp = (((uint32_t)(OwnSlaveAddrConfigStruct->SlaveAddr_7bit << 1)) \
-			| ((OwnSlaveAddrConfigStruct->GeneralCallState == ENABLE) ? 0x01 : 0x00))& I2C_I2ADR_BITMASK;
-	switch (OwnSlaveAddrConfigStruct->SlaveAddrChannel)
-	{
-	case 0:
-		I2Cx->I2ADR0 = tmp;
-		I2Cx->I2MASK0 = I2C_I2MASK_MASK((uint32_t) \
-				(OwnSlaveAddrConfigStruct->SlaveAddrMaskValue));
-		break;
-	case 1:
-		I2Cx->I2ADR1 = tmp;
-		I2Cx->I2MASK1 = I2C_I2MASK_MASK((uint32_t) \
-				(OwnSlaveAddrConfigStruct->SlaveAddrMaskValue));
-		break;
-	case 2:
-		I2Cx->I2ADR2 = tmp;
-		I2Cx->I2MASK2 = I2C_I2MASK_MASK((uint32_t) \
-				(OwnSlaveAddrConfigStruct->SlaveAddrMaskValue));
-		break;
-	case 3:
-		I2Cx->I2ADR3 = tmp;
-		I2Cx->I2MASK3 = I2C_I2MASK_MASK((uint32_t) \
-				(OwnSlaveAddrConfigStruct->SlaveAddrMaskValue));
-		break;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Configures functionality in I2C monitor mode
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *   			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	MonitorCfgType Monitor Configuration type, should be:
- * 				- I2C_MONITOR_CFG_SCL_OUTPUT: I2C module can 'stretch'
- * 				the clock line (hold it low) until it has had time to
- * 				respond to an I2C interrupt.
- * 				- I2C_MONITOR_CFG_MATCHALL: When this bit is set to '1'
- * 				and the I2C is in monitor mode, an interrupt will be
- * 				generated on ANY address received.
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: Enable this function.
- * 				- DISABLE: Disable this function.
- * @return		None
- **********************************************************************/
-void I2C_MonitorModeConfig(LPC_I2C_TypeDef *I2Cx, uint32_t MonitorCfgType, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-	CHECK_PARAM(PARAM_I2C_MONITOR_CFG(MonitorCfgType));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		I2Cx->MMCTRL |= MonitorCfgType;
-	}
-	else
-	{
-		I2Cx->MMCTRL &= (~MonitorCfgType) & I2C_I2MMCTRL_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Enable/Disable I2C monitor mode
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *    			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: Enable monitor mode.
- * 				- DISABLE: Disable monitor mode.
- * @return		None
- **********************************************************************/
-void I2C_MonitorModeCmd(LPC_I2C_TypeDef *I2Cx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		I2Cx->MMCTRL |= I2C_I2MMCTRL_MM_ENA;
-		I2Cx->I2CONSET = I2C_I2CONSET_AA;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC | I2C_I2CONCLR_STAC;
-	}
-	else
-	{
-		I2Cx->MMCTRL &= (~I2C_I2MMCTRL_MM_ENA) & I2C_I2MMCTRL_BITMASK;
-		I2Cx->I2CONCLR = I2C_I2CONCLR_SIC | I2C_I2CONCLR_STAC | I2C_I2CONCLR_AAC;
-	}
-	I2C_MonitorBufferIndex = 0;
-}
-
-
-/*********************************************************************//**
- * @brief		Get data from I2C data buffer in monitor mode.
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *    			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return		None
- * Note:	In monitor mode, the I2C module may lose the ability to stretch
- * the clock (stall the bus) if the ENA_SCL bit is not set. This means that
- * the processor will have a limited amount of time to read the contents of
- * the data received on the bus. If the processor reads the I2DAT shift
- * register, as it ordinarily would, it could have only one bit-time to
- * respond to the interrupt before the received data is overwritten by
- * new data.
- **********************************************************************/
-uint8_t I2C_MonitorGetDatabuffer(LPC_I2C_TypeDef *I2Cx)
-{
-	CHECK_PARAM(PARAM_I2Cx(I2Cx));
-	return ((uint8_t)(I2Cx->I2DATA_BUFFER));
-}
-
-/*********************************************************************//**
- * @brief		Get data from I2C data buffer in monitor mode.
- * @param[in]	I2Cx	I2C peripheral selected, should be
- *    			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return		None
- * Note:	In monitor mode, the I2C module may lose the ability to stretch
- * the clock (stall the bus) if the ENA_SCL bit is not set. This means that
- * the processor will have a limited amount of time to read the contents of
- * the data received on the bus. If the processor reads the I2DAT shift
- * register, as it ordinarily would, it could have only one bit-time to
- * respond to the interrupt before the received data is overwritten by
- * new data.
- **********************************************************************/
-BOOL_8 I2C_MonitorHandler(LPC_I2C_TypeDef *I2Cx, uint8_t *buffer, uint32_t size)
-{
-	BOOL_8 ret=FALSE;
-
-	I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-
-	buffer[I2C_MonitorBufferIndex] = (uint8_t)(I2Cx->I2DATA_BUFFER);
-	I2C_MonitorBufferIndex++;
-	if(I2C_MonitorBufferIndex >= size)
-	{
-		ret = TRUE;
-	}
-	return ret;
-}
-/*********************************************************************//**
- * @brief 		Get status of Master Transfer
- * @param[in]	I2Cx	I2C peripheral selected, should be:
- *  			- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		Master transfer status, could be:
- * 				- TRUE	master transfer completed
- * 				- FALSE master transfer have not completed yet
- **********************************************************************/
-uint32_t I2C_MasterTransferComplete(LPC_I2C_TypeDef *I2Cx)
-{
-	uint32_t retval, tmp;
-	tmp = I2C_getNum(I2Cx);
-	retval = I2C_MasterComplete[tmp];
-	I2C_MasterComplete[tmp] = FALSE;
-	return retval;
-}
-
-/*********************************************************************//**
- * @brief 		Get status of Slave Transfer
- * @param[in]	I2Cx	I2C peripheral selected, should be:
- * 				- LPC_I2C0
- * 				- LPC_I2C1
- * 				- LPC_I2C2
- * @return 		Complete status, could be: TRUE/FALSE
- **********************************************************************/
-uint32_t I2C_SlaveTransferComplete(LPC_I2C_TypeDef *I2Cx)
-{
-	uint32_t retval, tmp;
-	tmp = I2C_getNum(I2Cx);
-	retval = I2C_SlaveComplete[tmp];
-	I2C_SlaveComplete[tmp] = FALSE;
-	return retval;
-}
-
-
-
-/**
- * @}
- */
-
-#endif /* _I2C */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2s.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_i2s.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_i2s.c				2010-09-23
-*//**
-* @file		lpc17xx_gpio.c
-* @brief	Contains all functions support for I2S firmware
-* 			library on LPC17xx
-* @version	3.1
-* @date		23. Sep. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup I2S
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_i2s.h"
-#include "lpc17xx_clkpwr.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _I2S
-
-/* Private Functions ---------------------------------------------------------- */
-
-static uint8_t i2s_GetWordWidth(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-static uint8_t i2s_GetChannel(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode);
-
-/********************************************************************//**
- * @brief		Get I2S wordwidth value
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is the I2S mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		The wordwidth value, should be: 8,16 or 32
- *********************************************************************/
-static uint8_t i2s_GetWordWidth(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode) {
-	uint8_t value;
-
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) {
-		value = (I2Sx->I2SDAO) & 0x03; /* get wordwidth bit */
-	} else {
-		value = (I2Sx->I2SDAI) & 0x03; /* get wordwidth bit */
-	}
-	switch (value) {
-	case I2S_WORDWIDTH_8:
-		return 8;
-	case I2S_WORDWIDTH_16:
-		return 16;
-	default:
-		return 32;
-	}
-}
-
-/********************************************************************//**
- * @brief		Get I2S channel value
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is the I2S mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		The channel value, should be: 1(mono) or 2(stereo)
- *********************************************************************/
-static uint8_t i2s_GetChannel(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode) {
-	uint8_t value;
-
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) {
-		value = ((I2Sx->I2SDAO) & 0x04)>>2; /* get bit[2] */
-	} else {
-		value = ((I2Sx->I2SDAI) & 0x04)>>2; /* get bit[2] */
-	}
-        if(value == I2S_MONO) return 1;
-          return 2;
-}
-
-/* End of Private Functions --------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup I2S_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief		Initialize I2S
- * 					- Turn on power and clock
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @return 		none
- *********************************************************************/
-void I2S_Init(LPC_I2S_TypeDef *I2Sx) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-
-	// Turn on power and clock
-	CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCI2S, ENABLE);
-	LPC_I2S->I2SDAI = LPC_I2S->I2SDAO = 0x00;
-}
-
-/********************************************************************//**
- * @brief		Configuration I2S, setting:
- * 					- master/slave mode
- * 					- wordwidth value
- * 					- channel mode
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode transmit/receive mode, should be:
- * 					- I2S_TX_MODE = 0: transmit mode
- * 					- I2S_RX_MODE = 1: receive mode
- * @param[in]	ConfigStruct pointer to I2S_CFG_Type structure
- *              which will be initialized.
- * @return 		none
- *********************************************************************/
-void I2S_Config(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode, I2S_CFG_Type* ConfigStruct)
-{
-	uint32_t bps, config;
-
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-
-	CHECK_PARAM(PARAM_I2S_WORDWIDTH(ConfigStruct->wordwidth));
-	CHECK_PARAM(PARAM_I2S_CHANNEL(ConfigStruct->mono));
-	CHECK_PARAM(PARAM_I2S_STOP(ConfigStruct->stop));
-	CHECK_PARAM(PARAM_I2S_RESET(ConfigStruct->reset));
-	CHECK_PARAM(PARAM_I2S_WS_SEL(ConfigStruct->ws_sel));
-	CHECK_PARAM(PARAM_I2S_MUTE(ConfigStruct->mute));
-
-	/* Setup clock */
-	bps = (ConfigStruct->wordwidth +1)*8;
-
-	/* Calculate audio config */
-	config = (bps - 1)<<6 | (ConfigStruct->ws_sel)<<5 | (ConfigStruct->reset)<<4 |
-		(ConfigStruct->stop)<<3 | (ConfigStruct->mono)<<2 | (ConfigStruct->wordwidth);
-
-	if(TRMode == I2S_RX_MODE){
-		LPC_I2S->I2SDAI = config;
-	}else{
-		LPC_I2S->I2SDAO = config;
-	}
-}
-
-/********************************************************************//**
- * @brief		DeInitial both I2S transmit or receive
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @return 		none
- *********************************************************************/
-void I2S_DeInit(LPC_I2S_TypeDef *I2Sx) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-
-	// Turn off power and clock
-	CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCI2S, DISABLE);
-}
-
-/********************************************************************//**
- * @brief		Get I2S Buffer Level
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode Transmit/receive mode, should be:
- * 					- I2S_TX_MODE = 0: transmit mode
- * 					- I2S_RX_MODE = 1: receive mode
- * @return 		current level of Transmit/Receive Buffer
- *********************************************************************/
-uint8_t I2S_GetLevel(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if(TRMode == I2S_TX_MODE)
-	{
-		return ((I2Sx->I2SSTATE >> 16) & 0xFF);
-	}
-	else
-	{
-		return ((I2Sx->I2SSTATE >> 8) & 0xFF);
-	}
-}
-
-/********************************************************************//**
- * @brief		I2S Start: clear all STOP,RESET and MUTE bit, ready to operate
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @return 		none
- *********************************************************************/
-void I2S_Start(LPC_I2S_TypeDef *I2Sx)
-{
-	//Clear STOP,RESET and MUTE bit
-	I2Sx->I2SDAO &= ~I2S_DAI_RESET;
-	I2Sx->I2SDAI &= ~I2S_DAI_RESET;
-	I2Sx->I2SDAO &= ~I2S_DAI_STOP;
-	I2Sx->I2SDAI &= ~I2S_DAI_STOP;
-	I2Sx->I2SDAO &= ~I2S_DAI_MUTE;
-}
-
-/********************************************************************//**
- * @brief		I2S Send data
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	BufferData pointer to uint32_t is the data will be send
- * @return 		none
- *********************************************************************/
-void I2S_Send(LPC_I2S_TypeDef *I2Sx, uint32_t BufferData) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-
-	I2Sx->I2STXFIFO = BufferData;
-}
-
-/********************************************************************//**
- * @brief		I2S Receive Data
- * @param[in]	I2Sx pointer to LPC_I2S_TypeDef
- * @return 		received value
- *********************************************************************/
-uint32_t I2S_Receive(LPC_I2S_TypeDef* I2Sx) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-
-	return (I2Sx->I2SRXFIFO);
-
-}
-
-/********************************************************************//**
- * @brief		I2S Pause
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_Pause(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) //Transmit mode
-	{
-		I2Sx->I2SDAO |= I2S_DAO_STOP;
-	} else //Receive mode
-	{
-		I2Sx->I2SDAI |= I2S_DAI_STOP;
-	}
-}
-
-/********************************************************************//**
- * @brief		I2S Mute
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_Mute(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) //Transmit mode
-	{
-		I2Sx->I2SDAO |= I2S_DAO_MUTE;
-	} else //Receive mode
-	{
-		I2Sx->I2SDAI |= I2S_DAI_MUTE;
-	}
-}
-
-/********************************************************************//**
- * @brief		I2S Stop
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_Stop(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) //Transmit mode
-	{
-		I2Sx->I2SDAO &= ~I2S_DAO_MUTE;
-		I2Sx->I2SDAO |= I2S_DAO_STOP;
-		I2Sx->I2SDAO |= I2S_DAO_RESET;
-	} else //Receive mode
-	{
-		I2Sx->I2SDAI |= I2S_DAI_STOP;
-		I2Sx->I2SDAI |= I2S_DAI_RESET;
-	}
-}
-
-/********************************************************************//**
- * @brief		Set frequency for I2S
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	Freq is the frequency for I2S will be set. It can range
- * 				from 16-96 kHz(16, 22.05, 32, 44.1, 48, 96kHz)
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		Status: ERROR or SUCCESS
- *********************************************************************/
-Status I2S_FreqConfig(LPC_I2S_TypeDef *I2Sx, uint32_t Freq, uint8_t TRMode) {
-
-	uint32_t i2sMclk;
-	uint8_t bitrate, channel, wordwidth;
-
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PRAM_I2S_FREQ(Freq));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	//set i2s reference is i2s_pclk/2 as default
-	i2sMclk = CLKPWR_GetPCLK(CLKPWR_PCLKSEL_I2S)/2;
-	I2Sx->I2STXRATE = 1  | (1<<8);
-	I2Sx->I2SRXRATE = 1  | (1<<8);
-	if(TRMode == I2S_TX_MODE)
-	{
-		channel = i2s_GetChannel(I2Sx,I2S_TX_MODE);
-		wordwidth = i2s_GetWordWidth(I2Sx,I2S_TX_MODE);
-	}
-	else
-	{
-		channel = i2s_GetChannel(I2Sx,I2S_RX_MODE);
-		wordwidth = i2s_GetWordWidth(I2Sx,I2S_RX_MODE);
-	}
-	bitrate = i2sMclk/(Freq * channel * wordwidth) - 1;
-	if (TRMode == I2S_TX_MODE)// Transmitter
-	{
-		I2Sx->I2STXBITRATE = bitrate;
-	} else //Receiver
-	{
-		I2Sx->I2SRXBITRATE = bitrate;
-	}
-	return SUCCESS;
-}
-
-/********************************************************************//**
- * @brief		I2S set bitrate
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	bitrate value will be set
- * 				bitrate value should be in range: 0 .. 63
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_SetBitRate(LPC_I2S_TypeDef *I2Sx, uint8_t bitrate, uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_BITRATE(bitrate));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if(TRMode == I2S_TX_MODE)
-	{
-		I2Sx->I2STXBITRATE = bitrate;
-	}
-	else
-	{
-		I2Sx->I2SRXBITRATE = bitrate;
-	}
-}
-
-/********************************************************************//**
- * @brief		Configuration operating mode for I2S
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	ModeConfig pointer to I2S_MODEConf_Type will be used to
- * 				configure
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_ModeConfig(LPC_I2S_TypeDef *I2Sx, I2S_MODEConf_Type* ModeConfig,
-		uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_CLKSEL(ModeConfig->clksel));
-	CHECK_PARAM(PARAM_I2S_4PIN(ModeConfig->fpin));
-	CHECK_PARAM(PARAM_I2S_MCLK(ModeConfig->mcena));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_TX_MODE) {
-		I2Sx->I2STXMODE &= ~0x0F; //clear bit 3:0 in I2STXMODE register
-		if (ModeConfig->clksel == I2S_CLKSEL_MCLK) {
-			I2Sx->I2STXMODE |= 0x02;
-		}
-		if (ModeConfig->fpin == I2S_4PIN_ENABLE) {
-			I2Sx->I2STXMODE |= (1 << 2);
-		}
-		if (ModeConfig->mcena == I2S_MCLK_ENABLE) {
-			I2Sx->I2STXMODE |= (1 << 3);
-		}
-	} else {
-		I2Sx->I2SRXMODE &= ~0x0F; //clear bit 3:0 in I2STXMODE register
-		if (ModeConfig->clksel == I2S_CLKSEL_MCLK) {
-			I2Sx->I2SRXMODE |= 0x02;
-		}
-		if (ModeConfig->fpin == I2S_4PIN_ENABLE) {
-			I2Sx->I2SRXMODE |= (1 << 2);
-		}
-		if (ModeConfig->mcena == I2S_MCLK_ENABLE) {
-			I2Sx->I2SRXMODE |= (1 << 3);
-		}
-	}
-}
-
-/********************************************************************//**
- * @brief		Configure DMA operation for I2S
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	DMAConfig pointer to I2S_DMAConf_Type will be used to configure
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		none
- *********************************************************************/
-void I2S_DMAConfig(LPC_I2S_TypeDef *I2Sx, I2S_DMAConf_Type* DMAConfig,
-		uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_DMA(DMAConfig->DMAIndex));
-	CHECK_PARAM(PARAM_I2S_DMA_DEPTH(DMAConfig->depth));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_RX_MODE) {
-		if (DMAConfig->DMAIndex == I2S_DMA_1) {
-			LPC_I2S->I2SDMA1 = (DMAConfig->depth) << 8;
-		} else {
-			LPC_I2S->I2SDMA2 = (DMAConfig->depth) << 8;
-		}
-	} else {
-		if (DMAConfig->DMAIndex == I2S_DMA_1) {
-			LPC_I2S->I2SDMA1 = (DMAConfig->depth) << 16;
-		} else {
-			LPC_I2S->I2SDMA2 = (DMAConfig->depth) << 16;
-		}
-	}
-}
-
-/********************************************************************//**
- * @brief		Enable/Disable DMA operation for I2S
- * @param[in]	I2Sx: I2S peripheral selected, should be: LPC_I2S
- * @param[in]	DMAIndex chose what DMA is used, should be:
- * 				- I2S_DMA_1 = 0: DMA1
- * 				- I2S_DMA_2 = 1: DMA2
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @param[in]	NewState is new state of DMA operation, should be:
- * 				- ENABLE
- * 				- DISABLE
- * @return 		none
- *********************************************************************/
-void I2S_DMACmd(LPC_I2S_TypeDef *I2Sx, uint8_t DMAIndex, uint8_t TRMode,
-		FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-	CHECK_PARAM(PARAM_I2S_DMA(DMAIndex));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-
-	if (TRMode == I2S_RX_MODE) {
-		if (DMAIndex == I2S_DMA_1) {
-			if (NewState == ENABLE)
-				I2Sx->I2SDMA1 |= 0x01;
-			else
-				I2Sx->I2SDMA1 &= ~0x01;
-		} else {
-			if (NewState == ENABLE)
-				I2Sx->I2SDMA2 |= 0x01;
-			else
-				I2Sx->I2SDMA2 &= ~0x01;
-		}
-	} else {
-		if (DMAIndex == I2S_DMA_1) {
-			if (NewState == ENABLE)
-				I2Sx->I2SDMA1 |= 0x02;
-			else
-				I2Sx->I2SDMA1 &= ~0x02;
-		} else {
-			if (NewState == ENABLE)
-				I2Sx->I2SDMA2 |= 0x02;
-			else
-				I2Sx->I2SDMA2 &= ~0x02;
-		}
-	}
-}
-
-/********************************************************************//**
- * @brief		Configure IRQ for I2S
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @param[in]	level is the FIFO level that triggers IRQ request
- * @return 		none
- *********************************************************************/
-void I2S_IRQConfig(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode, uint8_t level) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_I2S_TRX(TRMode));
-	CHECK_PARAM(PARAM_I2S_IRQ_LEVEL(level));
-
-	if (TRMode == I2S_RX_MODE) {
-		I2Sx->I2SIRQ |= (level << 8);
-	} else {
-		I2Sx->I2SIRQ |= (level << 16);
-	}
-}
-
-/********************************************************************//**
- * @brief		Enable/Disable IRQ for I2S
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @param[in]	NewState is new state of DMA operation, should be:
- * 				- ENABLE
- * 				- DISABLE
- * @return 		none
- *********************************************************************/
-void I2S_IRQCmd(LPC_I2S_TypeDef *I2Sx, uint8_t TRMode, FunctionalState NewState) {
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (TRMode == I2S_RX_MODE) {
-		if (NewState == ENABLE)
-			I2Sx->I2SIRQ |= 0x01;
-		else
-			I2Sx->I2SIRQ &= ~0x01;
-		//Enable DMA
-
-	} else {
-		if (NewState == ENABLE)
-			I2Sx->I2SIRQ |= 0x02;
-		else
-			I2Sx->I2SIRQ &= ~0x02;
-	}
-}
-
-/********************************************************************//**
- * @brief		Get I2S interrupt status
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		FunctionState	should be:
- * 				- ENABLE: interrupt is enable
- * 				- DISABLE: interrupt is disable
- *********************************************************************/
-FunctionalState I2S_GetIRQStatus(LPC_I2S_TypeDef *I2Sx,uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	if(TRMode == I2S_TX_MODE)
-		return ((FunctionalState)((I2Sx->I2SIRQ >> 1)&0x01));
-	else
-		return ((FunctionalState)((I2Sx->I2SIRQ)&0x01));
-}
-
-/********************************************************************//**
- * @brief		Get I2S interrupt depth
- * @param[in]	I2Sx I2S peripheral selected, should be: LPC_I2S
- * @param[in]	TRMode is transmit/receive mode, should be:
- * 				- I2S_TX_MODE = 0: transmit mode
- * 				- I2S_RX_MODE = 1: receive mode
- * @return 		depth of FIFO level on which to create an irq request
- *********************************************************************/
-uint8_t I2S_GetIRQDepth(LPC_I2S_TypeDef *I2Sx,uint8_t TRMode)
-{
-	CHECK_PARAM(PARAM_I2Sx(I2Sx));
-	if(TRMode == I2S_TX_MODE)
-		return (((I2Sx->I2SIRQ)>>16)&0xFF);
-	else
-		return (((I2Sx->I2SIRQ)>>8)&0xFF);
-}
-/**
- * @}
- */
-
-#endif /* _I2S */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_libcfg_default.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_libcfg_default.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_libcfg_default.c				2010-05-21
-*//**
-* @file		lpc17xx_libcfg_default.c
-* @brief	Library configuration source file (default), used to build
-* 			library without examples
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Library group ----------------------------------------------------------- */
-/** @addtogroup LIBCFG_DEFAULT
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_libcfg_default.h"
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup LIBCFG_DEFAULT_Public_Functions
- * @{
- */
-
-#ifndef __BUILD_WITH_EXAMPLE__
-
-#ifdef  DEBUG
-/*******************************************************************************
-* @brief		Reports the name of the source file and the source line number
-* 				where the CHECK_PARAM error has occurred.
-* @param[in]	file Pointer to the source file name
-* @param[in]    line assert_param error line source number
-* @return		None
-*******************************************************************************/
-void check_failed(uint8_t *file, uint32_t line)
-{
-	/* User can add his own implementation to report the file name and line number,
-	 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
-
-	/* Infinite loop */
-	while(1);
-}
-#endif /* DEBUG */
-
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_mcpwm.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_mcpwm.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_mcpwm.c				2010-05-21
-*//**
-* @file		lpc17xx_mcpwm.c
-* @brief	Contains all functions support for Motor Control PWM firmware
-* 			library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup MCPWM
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_mcpwm.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _MCPWM
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup MCPWM_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief		Initializes the MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected,
- * 				Should be: LPC_MCPWM
- * @return		None
- **********************************************************************/
-void MCPWM_Init(LPC_MCPWM_TypeDef *MCPWMx)
-{
-
-	/* Turn On MCPWM PCLK */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCMC, ENABLE);
-	/* As default, peripheral clock for MCPWM module
-	 * is set to FCCLK / 2 */
-	// CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_MC, CLKPWR_PCLKSEL_CCLK_DIV_2);
-
-	MCPWMx->MCCAP_CLR = MCPWM_CAPCLR_CAP(0) | MCPWM_CAPCLR_CAP(1) | MCPWM_CAPCLR_CAP(2);
-	MCPWMx->MCINTFLAG_CLR = MCPWM_INT_ILIM(0) | MCPWM_INT_ILIM(1) | MCPWM_INT_ILIM(2) \
-							| MCPWM_INT_IMAT(0) | MCPWM_INT_IMAT(1) | MCPWM_INT_IMAT(2) \
-							| MCPWM_INT_ICAP(0) | MCPWM_INT_ICAP(1) | MCPWM_INT_ICAP(2);
-	MCPWMx->MCINTEN_CLR = MCPWM_INT_ILIM(0) | MCPWM_INT_ILIM(1) | MCPWM_INT_ILIM(2) \
-							| MCPWM_INT_IMAT(0) | MCPWM_INT_IMAT(1) | MCPWM_INT_IMAT(2) \
-							| MCPWM_INT_ICAP(0) | MCPWM_INT_ICAP(1) | MCPWM_INT_ICAP(2);
-}
-
-
-/*********************************************************************//**
- * @brief		Configures each channel in MCPWM peripheral according to the
- * 				specified parameters in the MCPWM_CHANNEL_CFG_Type.
- * @param[in]	MCPWMx 			Motor Control PWM peripheral selected
- * 								should be: LPC_MCPWM
- * @param[in]	channelNum		Channel number, should be: 0..2.
- * @param[in]	channelSetup	Pointer to a MCPWM_CHANNEL_CFG_Type structure
-*                    			that contains the configuration information for the
-*                    			specified MCPWM channel.
- * @return		None
- **********************************************************************/
-void MCPWM_ConfigChannel(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-						MCPWM_CHANNEL_CFG_Type * channelSetup)
-{
-	if (channelNum <= 2) {
-		if (channelNum == 0) {
-			MCPWMx->MCTIM0 = channelSetup->channelTimercounterValue;
-			MCPWMx->MCPER0 = channelSetup->channelPeriodValue;
-			MCPWMx->MCPW0 = channelSetup->channelPulsewidthValue;
-		} else if (channelNum == 1) {
-			MCPWMx->MCTIM1 = channelSetup->channelTimercounterValue;
-			MCPWMx->MCPER1 = channelSetup->channelPeriodValue;
-			MCPWMx->MCPW1 = channelSetup->channelPulsewidthValue;
-		} else if (channelNum == 2) {
-			MCPWMx->MCTIM2 = channelSetup->channelTimercounterValue;
-			MCPWMx->MCPER2 = channelSetup->channelPeriodValue;
-			MCPWMx->MCPW2 = channelSetup->channelPulsewidthValue;
-		} else {
-			return;
-		}
-
-		if (channelSetup->channelType /* == MCPWM_CHANNEL_CENTER_MODE */){
-			MCPWMx->MCCON_SET = MCPWM_CON_CENTER(channelNum);
-		} else {
-			MCPWMx->MCCON_CLR = MCPWM_CON_CENTER(channelNum);
-		}
-
-		if (channelSetup->channelPolarity /* == MCPWM_CHANNEL_PASSIVE_HI */){
-			MCPWMx->MCCON_SET = MCPWM_CON_POLAR(channelNum);
-		} else {
-			MCPWMx->MCCON_CLR = MCPWM_CON_POLAR(channelNum);
-		}
-
-		if (channelSetup->channelDeadtimeEnable /* == ENABLE */){
-			MCPWMx->MCCON_SET = MCPWM_CON_DTE(channelNum);
-			MCPWMx->MCDEADTIME &= ~(MCPWM_DT(channelNum, 0x3FF));
-			MCPWMx->MCDEADTIME |= MCPWM_DT(channelNum, channelSetup->channelDeadtimeValue);
-		} else {
-			MCPWMx->MCCON_CLR = MCPWM_CON_DTE(channelNum);
-		}
-
-		if (channelSetup->channelUpdateEnable /* == ENABLE */){
-			MCPWMx->MCCON_CLR = MCPWM_CON_DISUP(channelNum);
-		} else {
-			MCPWMx->MCCON_SET = MCPWM_CON_DISUP(channelNum);
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Write to MCPWM shadow registers - Update the value for period
- * 				and pulse width in MCPWM peripheral.
- * @param[in]	MCPWMx 			Motor Control PWM peripheral selected
- * 								Should be: LPC_MCPWM
- * @param[in]	channelNum		Channel Number, should be: 0..2.
- * @param[in]	channelSetup	Pointer to a MCPWM_CHANNEL_CFG_Type structure
-*                    			that contains the configuration information for the
-*                    			specified MCPWM channel.
- * @return		None
- **********************************************************************/
-void MCPWM_WriteToShadow(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-								MCPWM_CHANNEL_CFG_Type *channelSetup)
-{
-	if (channelNum == 0){
-		MCPWMx->MCPER0 = channelSetup->channelPeriodValue;
-		MCPWMx->MCPW0 = channelSetup->channelPulsewidthValue;
-	} else if (channelNum == 1) {
-		MCPWMx->MCPER1 = channelSetup->channelPeriodValue;
-		MCPWMx->MCPW1 = channelSetup->channelPulsewidthValue;
-	} else if (channelNum == 2) {
-		MCPWMx->MCPER2 = channelSetup->channelPeriodValue;
-		MCPWMx->MCPW2 = channelSetup->channelPulsewidthValue;
-	}
-}
-
-
-
-/*********************************************************************//**
- * @brief		Configures capture function in MCPWM peripheral
- * @param[in]	MCPWMx 			Motor Control PWM peripheral selected
- * 								Should be: LPC_MCPWM
- * @param[in]	channelNum		MCI (Motor Control Input pin) number
- * 								Should be: 0..2
- * @param[in]	captureConfig	Pointer to a MCPWM_CAPTURE_CFG_Type structure
-*                    			that contains the configuration information for the
-*                    			specified MCPWM capture.
- * @return
- **********************************************************************/
-void MCPWM_ConfigCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-						MCPWM_CAPTURE_CFG_Type *captureConfig)
-{
-	if (channelNum <= 2) {
-
-		if (captureConfig->captureFalling /* == ENABLE */) {
-			MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_CAPMCI_FE(captureConfig->captureChannel, channelNum);
-		} else {
-			MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_CAPMCI_FE(captureConfig->captureChannel, channelNum);
-		}
-
-		if (captureConfig->captureRising /* == ENABLE */) {
-			MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_CAPMCI_RE(captureConfig->captureChannel, channelNum);
-		} else {
-			MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_CAPMCI_RE(captureConfig->captureChannel, channelNum);
-		}
-
-		if (captureConfig->timerReset /* == ENABLE */){
-			MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_RT(captureConfig->captureChannel);
-		} else {
-			MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_RT(captureConfig->captureChannel);
-		}
-
-		if (captureConfig->hnfEnable /* == ENABLE */){
-			MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_HNFCAP(channelNum);
-		} else {
-			MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_HNFCAP(channelNum);
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Clears current captured value in specified capture channel
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	captureChannel	Capture channel number, should be: 0..2
- * @return		None
- **********************************************************************/
-void MCPWM_ClearCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel)
-{
-	MCPWMx->MCCAP_CLR = MCPWM_CAPCLR_CAP(captureChannel);
-}
-
-/*********************************************************************//**
- * @brief		Get current captured value in specified capture channel
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected,
- * 							Should be: LPC_MCPWM
- * @param[in]	captureChannel	Capture channel number, should be: 0..2
- * @return		None
- **********************************************************************/
-uint32_t MCPWM_GetCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel)
-{
-	if (captureChannel == 0){
-		return (MCPWMx->MCCR0);
-	} else if (captureChannel == 1) {
-		return (MCPWMx->MCCR1);
-	} else if (captureChannel == 2) {
-		return (MCPWMx->MCCR2);
-	}
-	return (0);
-}
-
-
-/*********************************************************************//**
- * @brief		Configures Count control in MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	channelNum	Channel number, should be: 0..2
- * @param[in]	countMode	Count mode, should be:
- * 							- ENABLE: Enables count mode.
- * 							- DISABLE: Disable count mode, the channel is in timer mode.
- * @param[in]	countConfig	Pointer to a MCPWM_COUNT_CFG_Type structure
-*                    		that contains the configuration information for the
-*                    		specified MCPWM count control.
- * @return		None
- **********************************************************************/
-void MCPWM_CountConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
-					uint32_t countMode, MCPWM_COUNT_CFG_Type *countConfig)
-{
-	if (channelNum <= 2) {
-		if (countMode /* == ENABLE */){
-			MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_CNTR(channelNum);
-			if (countConfig->countFalling /* == ENABLE */) {
-				MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
-			} else {
-				MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
-			}
-			if (countConfig->countRising /* == ENABLE */) {
-				MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
-			} else {
-				MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
-			}
-		} else {
-			MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_CNTR(channelNum);
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Start MCPWM activity for each MCPWM channel
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	channel0	State of this command on channel 0:
- * 							- ENABLE: 'Start' command will effect on channel 0
- * 							- DISABLE: 'Start' command will not effect on channel 0
- * @param[in]	channel1	State of this command on channel 1:
- * 							- ENABLE: 'Start' command will effect on channel 1
- * 							- DISABLE: 'Start' command will not effect on channel 1
- * @param[in]	channel2	State of this command on channel 2:
- * 							- ENABLE: 'Start' command will effect on channel 2
- * 							- DISABLE: 'Start' command will not effect on channel 2
- * @return		None
- **********************************************************************/
-void MCPWM_Start(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channel0,
-					uint32_t channel1, uint32_t channel2)
-{
-	uint32_t regVal = 0;
-	regVal = (channel0 ? MCPWM_CON_RUN(0) : 0) | (channel1 ? MCPWM_CON_RUN(1) : 0) \
-				| (channel2 ? MCPWM_CON_RUN(2) : 0);
-	MCPWMx->MCCON_SET = regVal;
-}
-
-
-/*********************************************************************//**
- * @brief		Stop MCPWM activity for each MCPWM channel
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	channel0	State of this command on channel 0:
- * 							- ENABLE: 'Stop' command will effect on channel 0
- * 							- DISABLE: 'Stop' command will not effect on channel 0
- * @param[in]	channel1	State of this command on channel 1:
- * 							- ENABLE: 'Stop' command will effect on channel 1
- * 							- DISABLE: 'Stop' command will not effect on channel 1
- * @param[in]	channel2	State of this command on channel 2:
- * 							- ENABLE: 'Stop' command will effect on channel 2
- * 							- DISABLE: 'Stop' command will not effect on channel 2
- * @return		None
- **********************************************************************/
-void MCPWM_Stop(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channel0,
-		uint32_t channel1, uint32_t channel2)
-{
-	uint32_t regVal = 0;
-	regVal = (channel0 ? MCPWM_CON_RUN(0) : 0) | (channel1 ? MCPWM_CON_RUN(1) : 0) \
-				| (channel2 ? MCPWM_CON_RUN(2) : 0);
-	MCPWMx->MCCON_CLR = regVal;
-}
-
-
-/*********************************************************************//**
- * @brief		Enables/Disables 3-phase AC motor mode on MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	acMode		State of this command, should be:
- * 							- ENABLE.
- * 							- DISABLE.
- * @return		None
- **********************************************************************/
-void MCPWM_ACMode(LPC_MCPWM_TypeDef *MCPWMx, uint32_t acMode)
-{
-	if (acMode){
-		MCPWMx->MCCON_SET = MCPWM_CON_ACMODE;
-	} else {
-		MCPWMx->MCCON_CLR = MCPWM_CON_ACMODE;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Enables/Disables 3-phase DC motor mode on MCPWM peripheral
- * @param[in]	MCPWMx 			Motor Control PWM peripheral selected
- * 								Should be: LPC_MCPWM
- * @param[in]	dcMode			State of this command, should be:
- * 								- ENABLE.
- * 								- DISABLE.
- * @param[in]	outputInvered	Polarity of the MCOB outputs for all 3 channels,
- * 								should be:
- * 								- ENABLE: The MCOB outputs have opposite polarity
- * 									from the MCOA outputs.
- * 								- DISABLE: The MCOB outputs have the same basic
- * 									polarity as the MCOA outputs.
- * @param[in]	outputPattern	A value contains bits that enables/disables the specified
- * 								output pins route to the internal MCOA0 signal, should be:
-								- MCPWM_PATENT_A0: 	 MCOA0 tracks internal MCOA0
-								- MCPWM_PATENT_B0: 	 MCOB0 tracks internal MCOA0
-								- MCPWM_PATENT_A1: 	 MCOA1 tracks internal MCOA0
-								- MCPWM_PATENT_B1: 	 MCOB1 tracks internal MCOA0
-								- MCPWM_PATENT_A2: 	 MCOA2 tracks internal MCOA0
-								- MCPWM_PATENT_B2: 	 MCOB2 tracks internal MCOA0
- * @return		None
- *
- * Note: all these outputPatent values above can be ORed together for using as input parameter.
- **********************************************************************/
-void MCPWM_DCMode(LPC_MCPWM_TypeDef *MCPWMx, uint32_t dcMode,
-					uint32_t outputInvered, uint32_t outputPattern)
-{
-	if (dcMode){
-		MCPWMx->MCCON_SET = MCPWM_CON_DCMODE;
-	} else {
-		MCPWMx->MCCON_CLR = MCPWM_CON_DCMODE;
-	}
-
-	if (outputInvered) {
-		MCPWMx->MCCON_SET = MCPWM_CON_INVBDC;
-	} else {
-		MCPWMx->MCCON_CLR = MCPWM_CON_INVBDC;
-	}
-
-	MCPWMx->MCCCP = outputPattern;
-}
-
-
-/*********************************************************************//**
- * @brief		Configures the specified interrupt in MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be: LPC_MCPWM
- * @param[in]	ulIntType	Interrupt type, should be:
- * 							- MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
- * 							- MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
- * 							- MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
- * 							- MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
- * 							- MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
- * 							- MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
- * 							- MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
- * 							- MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
- * 							- MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
- * 							- MCPWM_INTFLAG_ABORT: Fast abort interrupt
- * @param[in]	NewState	New State of this command, should be:
- * 							- ENABLE.
- * 							- DISABLE.
- * @return		None
- *
- * Note: all these ulIntType values above can be ORed together for using as input parameter.
- **********************************************************************/
-void MCPWM_IntConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType, FunctionalState NewState)
-{
-	if (NewState) {
-		MCPWMx->MCINTEN_SET = ulIntType;
-	} else {
-		MCPWMx->MCINTEN_CLR = ulIntType;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Sets/Forces the specified interrupt for MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected
- * 							Should be LPC_MCPWM
- * @param[in]	ulIntType	Interrupt type, should be:
- * 							- MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
- * 							- MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
- * 							- MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
- * 							- MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
- * 							- MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
- * 							- MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
- * 							- MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
- * 							- MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
- * 							- MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
- * 							- MCPWM_INTFLAG_ABORT: Fast abort interrupt
- * @return		None
- * Note: all these ulIntType values above can be ORed together for using as input parameter.
- **********************************************************************/
-void MCPWM_IntSet(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
-{
-	MCPWMx->MCINTFLAG_SET = ulIntType;
-}
-
-
-/*********************************************************************//**
- * @brief		Clear the specified interrupt pending for MCPWM peripheral
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected,
- * 							should be: LPC_MCPWM
- * @param[in]	ulIntType	Interrupt type, should be:
- * 							- MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
- * 							- MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
- * 							- MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
- * 							- MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
- * 							- MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
- * 							- MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
- * 							- MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
- * 							- MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
- * 							- MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
- * 							- MCPWM_INTFLAG_ABORT: Fast abort interrupt
- * @return		None
- * Note: all these ulIntType values above can be ORed together for using as input parameter.
- **********************************************************************/
-void MCPWM_IntClear(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
-{
-	MCPWMx->MCINTFLAG_CLR = ulIntType;
-}
-
-
-/*********************************************************************//**
- * @brief		Check whether if the specified interrupt in MCPWM is set or not
- * @param[in]	MCPWMx 		Motor Control PWM peripheral selected,
- * 							should be: LPC_MCPWM
- * @param[in]	ulIntType	Interrupt type, should be:
- * 							- MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
- * 							- MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
- * 							- MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
- * 							- MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
- * 							- MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
- * 							- MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
- * 							- MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
- * 							- MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
- * 							- MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
- * 							- MCPWM_INTFLAG_ABORT: Fast abort interrupt
- * @return		None
- **********************************************************************/
-FlagStatus MCPWM_GetIntStatus(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
-{
-	return ((MCPWMx->MCINTFLAG & ulIntType) ? SET : RESET);
-}
-
-/**
- * @}
- */
-
-#endif /* _MCPWM */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_nvic.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_nvic.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_nvic.c				2010-05-21
-*//**
-* @file		lpc17xx_nvic.c
-* @brief	Contains all expansion functions support for
-* 			NVIC firmware library on LPC17xx. The main
-* 			NVIC functions are defined in core_cm3.h
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup NVIC
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_nvic.h"
-
-
-/* Private Macros ------------------------------------------------------------- */
-/** @addtogroup NVIC_Private_Macros
- * @{
- */
-
-/* Vector table offset bit mask */
-#define NVIC_VTOR_MASK              0x3FFFFF80
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup NVIC_Public_Functions
- * @{
- */
-
-
-/*****************************************************************************//**
- * @brief		De-initializes the NVIC peripheral registers to their default
- * 				reset values.
- * @param		None
- * @return      None
- *
- * These following NVIC peripheral registers will be de-initialized:
- * - Disable Interrupt (32 IRQ interrupt sources that matched with LPC17xx)
- * - Clear all Pending Interrupts (32 IRQ interrupt source that matched with LPC17xx)
- * - Clear all Interrupt Priorities (32 IRQ interrupt source that matched with LPC17xx)
- *******************************************************************************/
-void NVIC_DeInit(void)
-{
-	uint8_t tmp;
-
-	/* Disable all interrupts */
-	NVIC->ICER[0] = 0xFFFFFFFF;
-	NVIC->ICER[1] = 0x00000001;
-	/* Clear all pending interrupts */
-	NVIC->ICPR[0] = 0xFFFFFFFF;
-	NVIC->ICPR[1] = 0x00000001;
-
-	/* Clear all interrupt priority */
-	for (tmp = 0; tmp < 32; tmp++) {
-		NVIC->IP[tmp] = 0x00;
-	}
-}
-
-/*****************************************************************************//**
- * @brief			De-initializes the SCB peripheral registers to their default
- *                  reset values.
- * @param			none
- * @return 			none
- *
- * These following SCB NVIC peripheral registers will be de-initialized:
- * - Interrupt Control State register
- * - Interrupt Vector Table Offset register
- * - Application Interrupt/Reset Control register
- * - System Control register
- * - Configuration Control register
- * - System Handlers Priority Registers
- * - System Handler Control and State Register
- * - Configurable Fault Status Register
- * - Hard Fault Status Register
- * - Debug Fault Status Register
- *******************************************************************************/
-void NVIC_SCBDeInit(void)
-{
-	uint8_t tmp;
-
-	SCB->ICSR = 0x0A000000;
-	SCB->VTOR = 0x00000000;
-	SCB->AIRCR = 0x05FA0000;
-	SCB->SCR = 0x00000000;
-	SCB->CCR = 0x00000000;
-
-	for (tmp = 0; tmp < 32; tmp++) {
-		SCB->SHP[tmp] = 0x00;
-	}
-
-	SCB->SHCSR = 0x00000000;
-	SCB->CFSR = 0xFFFFFFFF;
-	SCB->HFSR = 0xFFFFFFFF;
-	SCB->DFSR = 0xFFFFFFFF;
-}
-
-
-/*****************************************************************************//**
- * @brief		Set Vector Table Offset value
- * @param		offset Offset value
- * @return      None
- *******************************************************************************/
-void NVIC_SetVTOR(uint32_t offset)
-{
-//	SCB->VTOR  = (offset & NVIC_VTOR_MASK);
-	SCB->VTOR  = offset;
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_pinsel.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_pinsel.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_pinsel.c				2010-05-21
-*//**
-* @file		lpc17xx_pinsel.c
-* @brief	Contains all functions support for Pin connect block firmware
-* 			library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup PINSEL
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_pinsel.h"
-
-/* Public Functions ----------------------------------------------------------- */
-
-static void set_PinFunc ( uint8_t portnum, uint8_t pinnum, uint8_t funcnum);
-static void set_ResistorMode ( uint8_t portnum, uint8_t pinnum, uint8_t modenum);
-static void set_OpenDrainMode( uint8_t portnum, uint8_t pinnum, uint8_t modenum);
-
-/*********************************************************************//**
- * @brief 		Setup the pin selection function
- * @param[in]	portnum PORT number,
- * 				should be one of the following:
- * 				- PINSEL_PORT_0	: Port 0
- * 				- PINSEL_PORT_1	: Port 1
- * 				- PINSEL_PORT_2	: Port 2
- * 				- PINSEL_PORT_3	: Port 3
- *
- * @param[in]	pinnum	Pin number,
- * 				should be one of the following:
-				- PINSEL_PIN_0 : Pin 0
-				- PINSEL_PIN_1 : Pin 1
-				- PINSEL_PIN_2 : Pin 2
-				- PINSEL_PIN_3 : Pin 3
-				- PINSEL_PIN_4 : Pin 4
-				- PINSEL_PIN_5 : Pin 5
-				- PINSEL_PIN_6 : Pin 6
-				- PINSEL_PIN_7 : Pin 7
-				- PINSEL_PIN_8 : Pin 8
-				- PINSEL_PIN_9 : Pin 9
-				- PINSEL_PIN_10 : Pin 10
-				- PINSEL_PIN_11 : Pin 11
-				- PINSEL_PIN_12 : Pin 12
-				- PINSEL_PIN_13 : Pin 13
-				- PINSEL_PIN_14 : Pin 14
-				- PINSEL_PIN_15 : Pin 15
-				- PINSEL_PIN_16 : Pin 16
-				- PINSEL_PIN_17 : Pin 17
-				- PINSEL_PIN_18 : Pin 18
-				- PINSEL_PIN_19 : Pin 19
-				- PINSEL_PIN_20 : Pin 20
-				- PINSEL_PIN_21 : Pin 21
-				- PINSEL_PIN_22 : Pin 22
-				- PINSEL_PIN_23 : Pin 23
-				- PINSEL_PIN_24 : Pin 24
-				- PINSEL_PIN_25 : Pin 25
-				- PINSEL_PIN_26 : Pin 26
-				- PINSEL_PIN_27 : Pin 27
-				- PINSEL_PIN_28 : Pin 28
-				- PINSEL_PIN_29 : Pin 29
-				- PINSEL_PIN_30 : Pin 30
-				- PINSEL_PIN_31 : Pin 31
-
- * @param[in] 	funcnum Function number,
- * 				should be one of the following:
- *				- PINSEL_FUNC_0 : default function
- *				- PINSEL_FUNC_1 : first alternate function
- *				- PINSEL_FUNC_2 : second alternate function
- *				- PINSEL_FUNC_3 : third alternate function
- *
- * @return 		None
- **********************************************************************/
-static void set_PinFunc ( uint8_t portnum, uint8_t pinnum, uint8_t funcnum)
-{
-	uint32_t pinnum_t = pinnum;
-	uint32_t pinselreg_idx = 2 * portnum;
-	volatile uint32_t *pPinCon = (volatile uint32_t *)&LPC_PINCON->PINSEL0;
-
-	if (pinnum_t >= 16) {
-		pinnum_t -= 16;
-		pinselreg_idx++;
-	}
-	*(volatile uint32_t *)(pPinCon + pinselreg_idx) &= ~(0x03UL << (pinnum_t * 2));
-	*(volatile uint32_t *)(pPinCon + pinselreg_idx) |= ((uint32_t)funcnum) << (pinnum_t * 2);
-}
-
-/*********************************************************************//**
- * @brief 		Setup resistor mode for each pin
- * @param[in]	portnum PORT number,
- * 				should be one of the following:
- * 				- PINSEL_PORT_0	: Port 0
- * 				- PINSEL_PORT_1	: Port 1
- * 				- PINSEL_PORT_2	: Port 2
- * 				- PINSEL_PORT_3	: Port 3
- * @param[in]	pinnum	Pin number,
- * 				should be one of the following:
-				- PINSEL_PIN_0 : Pin 0
-				- PINSEL_PIN_1 : Pin 1
-				- PINSEL_PIN_2 : Pin 2
-				- PINSEL_PIN_3 : Pin 3
-				- PINSEL_PIN_4 : Pin 4
-				- PINSEL_PIN_5 : Pin 5
-				- PINSEL_PIN_6 : Pin 6
-				- PINSEL_PIN_7 : Pin 7
-				- PINSEL_PIN_8 : Pin 8
-				- PINSEL_PIN_9 : Pin 9
-				- PINSEL_PIN_10 : Pin 10
-				- PINSEL_PIN_11 : Pin 11
-				- PINSEL_PIN_12 : Pin 12
-				- PINSEL_PIN_13 : Pin 13
-				- PINSEL_PIN_14 : Pin 14
-				- PINSEL_PIN_15 : Pin 15
-				- PINSEL_PIN_16 : Pin 16
-				- PINSEL_PIN_17 : Pin 17
-				- PINSEL_PIN_18 : Pin 18
-				- PINSEL_PIN_19 : Pin 19
-				- PINSEL_PIN_20 : Pin 20
-				- PINSEL_PIN_21 : Pin 21
-				- PINSEL_PIN_22 : Pin 22
-				- PINSEL_PIN_23 : Pin 23
-				- PINSEL_PIN_24 : Pin 24
-				- PINSEL_PIN_25 : Pin 25
-				- PINSEL_PIN_26 : Pin 26
-				- PINSEL_PIN_27 : Pin 27
-				- PINSEL_PIN_28 : Pin 28
-				- PINSEL_PIN_29 : Pin 29
-				- PINSEL_PIN_30 : Pin 30
-				- PINSEL_PIN_31 : Pin 31
-
- * @param[in] 	modenum: Mode number,
- * 				should be one of the following:
-				- PINSEL_PINMODE_PULLUP	: Internal pull-up resistor
-				- PINSEL_PINMODE_TRISTATE : Tri-state
-				- PINSEL_PINMODE_PULLDOWN : Internal pull-down resistor
-
- * @return 		None
- **********************************************************************/
-void set_ResistorMode ( uint8_t portnum, uint8_t pinnum, uint8_t modenum)
-{
-	uint32_t pinnum_t = pinnum;
-	uint32_t pinmodereg_idx = 2 * portnum;
-	volatile uint32_t *pPinCon = (volatile uint32_t *)&LPC_PINCON->PINMODE0;
-
-	if (pinnum_t >= 16) {
-		pinnum_t -= 16;
-		pinmodereg_idx++ ;
-	}
-
-	*(volatile uint32_t *)(pPinCon + pinmodereg_idx) &= ~(0x03UL << (pinnum_t * 2));
-	*(volatile uint32_t *)(pPinCon + pinmodereg_idx) |= ((uint32_t)modenum) << (pinnum_t * 2);
-}
-
-/*********************************************************************//**
- * @brief 		Setup Open drain mode for each pin
- * @param[in]	portnum PORT number,
- * 				should be one of the following:
- * 				- PINSEL_PORT_0	: Port 0
- * 				- PINSEL_PORT_1	: Port 1
- * 				- PINSEL_PORT_2	: Port 2
- * 				- PINSEL_PORT_3	: Port 3
- *
- * @param[in]	pinnum	Pin number,
- * 				should be one of the following:
-				- PINSEL_PIN_0 : Pin 0
-				- PINSEL_PIN_1 : Pin 1
-				- PINSEL_PIN_2 : Pin 2
-				- PINSEL_PIN_3 : Pin 3
-				- PINSEL_PIN_4 : Pin 4
-				- PINSEL_PIN_5 : Pin 5
-				- PINSEL_PIN_6 : Pin 6
-				- PINSEL_PIN_7 : Pin 7
-				- PINSEL_PIN_8 : Pin 8
-				- PINSEL_PIN_9 : Pin 9
-				- PINSEL_PIN_10 : Pin 10
-				- PINSEL_PIN_11 : Pin 11
-				- PINSEL_PIN_12 : Pin 12
-				- PINSEL_PIN_13 : Pin 13
-				- PINSEL_PIN_14 : Pin 14
-				- PINSEL_PIN_15 : Pin 15
-				- PINSEL_PIN_16 : Pin 16
-				- PINSEL_PIN_17 : Pin 17
-				- PINSEL_PIN_18 : Pin 18
-				- PINSEL_PIN_19 : Pin 19
-				- PINSEL_PIN_20 : Pin 20
-				- PINSEL_PIN_21 : Pin 21
-				- PINSEL_PIN_22 : Pin 22
-				- PINSEL_PIN_23 : Pin 23
-				- PINSEL_PIN_24 : Pin 24
-				- PINSEL_PIN_25 : Pin 25
-				- PINSEL_PIN_26 : Pin 26
-				- PINSEL_PIN_27 : Pin 27
-				- PINSEL_PIN_28 : Pin 28
-				- PINSEL_PIN_29 : Pin 29
-				- PINSEL_PIN_30 : Pin 30
-				- PINSEL_PIN_31 : Pin 31
-
- * @param[in]	modenum  Open drain mode number,
- * 				should be one of the following:
- * 				- PINSEL_PINMODE_NORMAL : Pin is in the normal (not open drain) mode
- * 				- PINSEL_PINMODE_OPENDRAIN : Pin is in the open drain mode
- *
- * @return 		None
- **********************************************************************/
-void set_OpenDrainMode( uint8_t portnum, uint8_t pinnum, uint8_t modenum)
-{
-	volatile uint32_t *pPinCon = (volatile uint32_t *)&LPC_PINCON->PINMODE_OD0;
-
-	if (modenum == PINSEL_PINMODE_OPENDRAIN){
-		*(volatile uint32_t *)(pPinCon + portnum) |= (0x01UL << pinnum);
-	} else {
-		*(volatile uint32_t *)(pPinCon + portnum) &= ~(0x01UL << pinnum);
-	}
-}
-
-/* End of Public Functions ---------------------------------------------------- */
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup PINSEL_Public_Functions
- * @{
- */
-/*********************************************************************//**
- * @brief 		Configure trace function
- * @param[in] 	NewState State of the Trace function configuration,
- * 				should be one of the following:
- * 				- ENABLE : Enable Trace Function
- * 				- DISABLE : Disable Trace Function
- *
- * @return 		None
- **********************************************************************/
-void PINSEL_ConfigTraceFunc(FunctionalState NewState)
-{
-	if (NewState == ENABLE) {
-		LPC_PINCON->PINSEL10 |= (0x01UL << 3);
-	} else if (NewState == DISABLE) {
-		LPC_PINCON->PINSEL10 &= ~(0x01UL << 3);
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Setup I2C0 pins
- * @param[in]	i2cPinMode I2C pin mode,
- * 				should be one of the following:
- * 				- PINSEL_I2C_Normal_Mode : The standard drive mode
- * 				- PINSEL_I2C_Fast_Mode : Fast Mode Plus drive mode
- *
- * @param[in]	filterSlewRateEnable  should be:
- * 				- ENABLE: Enable filter and slew rate.
- * 				- DISABLE: Disable filter and slew rate.
- *
- * @return 		None
- **********************************************************************/
-void PINSEL_SetI2C0Pins(uint8_t i2cPinMode, FunctionalState filterSlewRateEnable)
-{
-	uint32_t regVal;
-
-	if (i2cPinMode == PINSEL_I2C_Fast_Mode){
-		regVal = PINSEL_I2CPADCFG_SCLDRV0 | PINSEL_I2CPADCFG_SDADRV0;
-	}
-
-	if (filterSlewRateEnable == DISABLE){
-		regVal = PINSEL_I2CPADCFG_SCLI2C0 | PINSEL_I2CPADCFG_SDAI2C0;
-	}
-	LPC_PINCON->I2CPADCFG = regVal;
-}
-
-
-/*********************************************************************//**
- * @brief 		Configure Pin corresponding to specified parameters passed
- * 				in the PinCfg
- * @param[in]	PinCfg	Pointer to a PINSEL_CFG_Type structure
- *                    that contains the configuration information for the
- *                    specified pin.
- * @return 		None
- **********************************************************************/
-void PINSEL_ConfigPin(PINSEL_CFG_Type *PinCfg)
-{
-	set_PinFunc(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Funcnum);
-	set_ResistorMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Pinmode);
-	set_OpenDrainMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->OpenDrain);
-}
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_pwm.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_pwm.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,585 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_pwm.c				2011-03-31
-*//**
-* @file		lpc17xx_pwm.c
-* @brief	Contains all functions support for PWM firmware library on LPC17xx
-* @version	2.1
-* @date		31. Mar. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup PWM
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_pwm.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _PWM
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup PWM_Public_Functions
- * @{
- */
-
-
-/*********************************************************************//**
- * @brief 		Check whether specified interrupt flag in PWM is set or not
- * @param[in]	PWMx: PWM peripheral, should be LPC_PWM1
- * @param[in]	IntFlag: PWM interrupt flag, should be:
- * 				- PWM_INTSTAT_MR0: Interrupt flag for PWM match channel 0
- * 				- PWM_INTSTAT_MR1: Interrupt flag for PWM match channel 1
- * 				- PWM_INTSTAT_MR2: Interrupt flag for PWM match channel 2
- * 				- PWM_INTSTAT_MR3: Interrupt flag for PWM match channel 3
- * 				- PWM_INTSTAT_MR4: Interrupt flag for PWM match channel 4
- * 				- PWM_INTSTAT_MR5: Interrupt flag for PWM match channel 5
- * 				- PWM_INTSTAT_MR6: Interrupt flag for PWM match channel 6
- * 				- PWM_INTSTAT_CAP0: Interrupt flag for capture input 0
- * 				- PWM_INTSTAT_CAP1: Interrupt flag for capture input 1
- * @return 		New State of PWM interrupt flag (SET or RESET)
- **********************************************************************/
-IntStatus PWM_GetIntStatus(LPC_PWM_TypeDef *PWMx, uint32_t IntFlag)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM_INTSTAT(IntFlag));
-
-	return ((PWMx->IR & IntFlag) ? SET : RESET);
-}
-
-
-
-/*********************************************************************//**
- * @brief 		Clear specified PWM Interrupt pending
- * @param[in]	PWMx: PWM peripheral, should be LPC_PWM1
- * @param[in]	IntFlag: PWM interrupt flag, should be:
- * 				- PWM_INTSTAT_MR0: Interrupt flag for PWM match channel 0
- * 				- PWM_INTSTAT_MR1: Interrupt flag for PWM match channel 1
- * 				- PWM_INTSTAT_MR2: Interrupt flag for PWM match channel 2
- * 				- PWM_INTSTAT_MR3: Interrupt flag for PWM match channel 3
- * 				- PWM_INTSTAT_MR4: Interrupt flag for PWM match channel 4
- * 				- PWM_INTSTAT_MR5: Interrupt flag for PWM match channel 5
- * 				- PWM_INTSTAT_MR6: Interrupt flag for PWM match channel 6
- * 				- PWM_INTSTAT_CAP0: Interrupt flag for capture input 0
- * 				- PWM_INTSTAT_CAP1: Interrupt flag for capture input 1
- * @return 		None
- **********************************************************************/
-void PWM_ClearIntPending(LPC_PWM_TypeDef *PWMx, uint32_t IntFlag)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM_INTSTAT(IntFlag));
-	PWMx->IR = IntFlag;
-}
-
-
-
-/*****************************************************************************//**
-* @brief		Fills each PWM_InitStruct member with its default value:
-* 				- If PWMCounterMode = PWM_MODE_TIMER:
-* 					+ PrescaleOption = PWM_TIMER_PRESCALE_USVAL
-* 					+ PrescaleValue = 1
-* 				- If PWMCounterMode = PWM_MODE_COUNTER:
-* 					+ CountInputSelect = PWM_COUNTER_PCAP1_0
-* 					+ CounterOption = PWM_COUNTER_RISING
-* @param[in]	PWMTimerCounterMode Timer or Counter mode, should be:
-* 				- PWM_MODE_TIMER: Counter of PWM peripheral is in Timer mode
-* 				- PWM_MODE_COUNTER: Counter of PWM peripheral is in Counter mode
-* @param[in]	PWM_InitStruct Pointer to structure (PWM_TIMERCFG_Type or
-* 				 PWM_COUNTERCFG_Type) which will be initialized.
-* @return		None
-* Note: PWM_InitStruct pointer will be assigned to corresponding structure
-* 		(PWM_TIMERCFG_Type or PWM_COUNTERCFG_Type) due to PWMTimerCounterMode.
-*******************************************************************************/
-void PWM_ConfigStructInit(uint8_t PWMTimerCounterMode, void *PWM_InitStruct)
-{
-	PWM_TIMERCFG_Type *pTimeCfg;
-	PWM_COUNTERCFG_Type *pCounterCfg;
-	CHECK_PARAM(PARAM_PWM_TC_MODE(PWMTimerCounterMode));
-
-	pTimeCfg = (PWM_TIMERCFG_Type *) PWM_InitStruct;
-	pCounterCfg = (PWM_COUNTERCFG_Type *) PWM_InitStruct;
-
-	if (PWMTimerCounterMode == PWM_MODE_TIMER )
-	{
-		pTimeCfg->PrescaleOption = PWM_TIMER_PRESCALE_USVAL;
-		pTimeCfg->PrescaleValue = 1;
-	}
-	else if (PWMTimerCounterMode == PWM_MODE_COUNTER)
-	{
-		pCounterCfg->CountInputSelect = PWM_COUNTER_PCAP1_0;
-		pCounterCfg->CounterOption = PWM_COUNTER_RISING;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Initializes the PWMx peripheral corresponding to the specified
- *               parameters in the PWM_ConfigStruct.
- * @param[in]	PWMx PWM peripheral, should be LPC_PWM1
- * @param[in]	PWMTimerCounterMode Timer or Counter mode, should be:
- * 				- PWM_MODE_TIMER: Counter of PWM peripheral is in Timer mode
- * 				- PWM_MODE_COUNTER: Counter of PWM peripheral is in Counter mode
- * @param[in]	PWM_ConfigStruct Pointer to structure (PWM_TIMERCFG_Type or
- * 				 PWM_COUNTERCFG_Type) which will be initialized.
- * @return 		None
- * Note: PWM_ConfigStruct pointer will be assigned to corresponding structure
- * 		(PWM_TIMERCFG_Type or PWM_COUNTERCFG_Type) due to PWMTimerCounterMode.
- **********************************************************************/
-void PWM_Init(LPC_PWM_TypeDef *PWMx, uint32_t PWMTimerCounterMode, void *PWM_ConfigStruct)
-{
-	PWM_TIMERCFG_Type *pTimeCfg;
-	PWM_COUNTERCFG_Type *pCounterCfg;
-	uint64_t clkdlycnt;
-
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM_TC_MODE(PWMTimerCounterMode));
-
-	pTimeCfg = (PWM_TIMERCFG_Type *)PWM_ConfigStruct;
-	pCounterCfg = (PWM_COUNTERCFG_Type *)PWM_ConfigStruct;
-
-
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCPWM1, ENABLE);
-	CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_PWM1, CLKPWR_PCLKSEL_CCLK_DIV_4);
-	// Get peripheral clock of PWM1
-	clkdlycnt = (uint64_t) CLKPWR_GetPCLK (CLKPWR_PCLKSEL_PWM1);
-
-
-	// Clear all interrupts pending
-	PWMx->IR = 0xFF & PWM_IR_BITMASK;
-	PWMx->TCR = 0x00;
-	PWMx->CTCR = 0x00;
-	PWMx->MCR = 0x00;
-	PWMx->CCR = 0x00;
-	PWMx->PCR = 0x00;
-	PWMx->LER = 0x00;
-
-	if (PWMTimerCounterMode == PWM_MODE_TIMER)
-	{
-		CHECK_PARAM(PARAM_PWM_TIMER_PRESCALE(pTimeCfg->PrescaleOption));
-
-		/* Absolute prescale value */
-		if (pTimeCfg->PrescaleOption == PWM_TIMER_PRESCALE_TICKVAL)
-		{
-			PWMx->PR   = pTimeCfg->PrescaleValue - 1;
-		}
-		/* uSecond prescale value */
-		else
-		{
-			clkdlycnt = (clkdlycnt * pTimeCfg->PrescaleValue) / 1000000;
-			PWMx->PR = ((uint32_t) clkdlycnt) - 1;
-		}
-
-	}
-	else if (PWMTimerCounterMode == PWM_MODE_COUNTER)
-	{
-		CHECK_PARAM(PARAM_PWM_COUNTER_INPUTSEL(pCounterCfg->CountInputSelect));
-		CHECK_PARAM(PARAM_PWM_COUNTER_EDGE(pCounterCfg->CounterOption));
-
-		PWMx->CTCR |= (PWM_CTCR_MODE((uint32_t)pCounterCfg->CounterOption)) \
-						| (PWM_CTCR_SELECT_INPUT((uint32_t)pCounterCfg->CountInputSelect));
-	}
-}
-
-/*********************************************************************//**
- * @brief		De-initializes the PWM peripheral registers to their
-*                  default reset values.
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @return 		None
- **********************************************************************/
-void PWM_DeInit (LPC_PWM_TypeDef *PWMx)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-
-	// Disable PWM control (timer, counter and PWM)
-	PWMx->TCR = 0x00;
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCPWM1, DISABLE);
-
-}
-
-
-/*********************************************************************//**
- * @brief	 	Enable/Disable PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	NewState	New State of this function, should be:
- * 							- ENABLE: Enable PWM peripheral
- * 							- DISABLE: Disable PWM peripheral
- * @return 		None
- **********************************************************************/
-void PWM_Cmd(LPC_PWM_TypeDef *PWMx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		PWMx->TCR	|=  PWM_TCR_PWM_ENABLE;
-	}
-	else
-	{
-		PWMx->TCR &= (~PWM_TCR_PWM_ENABLE) & PWM_TCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Enable/Disable Counter in PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	NewState New State of this function, should be:
- * 							- ENABLE: Enable Counter in PWM peripheral
- * 							- DISABLE: Disable Counter in PWM peripheral
- * @return 		None
- **********************************************************************/
-void PWM_CounterCmd(LPC_PWM_TypeDef *PWMx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-	if (NewState == ENABLE)
-	{
-		PWMx->TCR	|=  PWM_TCR_COUNTER_ENABLE;
-	}
-	else
-	{
-		PWMx->TCR &= (~PWM_TCR_COUNTER_ENABLE) & PWM_TCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Reset Counter in PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @return 		None
- **********************************************************************/
-void PWM_ResetCounter(LPC_PWM_TypeDef *PWMx)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	PWMx->TCR |= PWM_TCR_COUNTER_RESET;
-	PWMx->TCR &= (~PWM_TCR_COUNTER_RESET) & PWM_TCR_BITMASK;
-}
-
-
-/*********************************************************************//**
- * @brief 		Configures match for PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]   PWM_MatchConfigStruct	Pointer to a PWM_MATCHCFG_Type structure
-*                    that contains the configuration information for the
-*                    specified PWM match function.
- * @return 		None
- **********************************************************************/
-void PWM_ConfigMatch(LPC_PWM_TypeDef *PWMx, PWM_MATCHCFG_Type *PWM_MatchConfigStruct)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_MATCH_CHANNEL(PWM_MatchConfigStruct->MatchChannel));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_MatchConfigStruct->IntOnMatch));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_MatchConfigStruct->ResetOnMatch));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_MatchConfigStruct->StopOnMatch));
-
-	//interrupt on MRn
-	if (PWM_MatchConfigStruct->IntOnMatch == ENABLE)
-	{
-		PWMx->MCR |= PWM_MCR_INT_ON_MATCH(PWM_MatchConfigStruct->MatchChannel);
-	}
-	else
-	{
-		PWMx->MCR &= (~PWM_MCR_INT_ON_MATCH(PWM_MatchConfigStruct->MatchChannel)) \
-					& PWM_MCR_BITMASK;
-	}
-
-	//reset on MRn
-	if (PWM_MatchConfigStruct->ResetOnMatch == ENABLE)
-	{
-		PWMx->MCR |= PWM_MCR_RESET_ON_MATCH(PWM_MatchConfigStruct->MatchChannel);
-	}
-	else
-	{
-		PWMx->MCR &= (~PWM_MCR_RESET_ON_MATCH(PWM_MatchConfigStruct->MatchChannel)) \
-					& PWM_MCR_BITMASK;
-	}
-
-	//stop on MRn
-	if (PWM_MatchConfigStruct->StopOnMatch == ENABLE)
-	{
-		PWMx->MCR |= PWM_MCR_STOP_ON_MATCH(PWM_MatchConfigStruct->MatchChannel);
-	}
-	else
-	{
-		PWMx->MCR &= (~PWM_MCR_STOP_ON_MATCH(PWM_MatchConfigStruct->MatchChannel)) \
-					& PWM_MCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Configures capture input for PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]   PWM_CaptureConfigStruct	Pointer to a PWM_CAPTURECFG_Type structure
-*                    that contains the configuration information for the
-*                    specified PWM capture input function.
- * @return 		None
- **********************************************************************/
-void PWM_ConfigCapture(LPC_PWM_TypeDef *PWMx, PWM_CAPTURECFG_Type *PWM_CaptureConfigStruct)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_CAPTURE_CHANNEL(PWM_CaptureConfigStruct->CaptureChannel));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_CaptureConfigStruct->FallingEdge));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_CaptureConfigStruct->IntOnCaption));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(PWM_CaptureConfigStruct->RisingEdge));
-
-	if (PWM_CaptureConfigStruct->RisingEdge == ENABLE)
-	{
-		PWMx->CCR |= PWM_CCR_CAP_RISING(PWM_CaptureConfigStruct->CaptureChannel);
-	}
-	else
-	{
-		PWMx->CCR &= (~PWM_CCR_CAP_RISING(PWM_CaptureConfigStruct->CaptureChannel)) \
-					& PWM_CCR_BITMASK;
-	}
-
-	if (PWM_CaptureConfigStruct->FallingEdge == ENABLE)
-	{
-		PWMx->CCR |= PWM_CCR_CAP_FALLING(PWM_CaptureConfigStruct->CaptureChannel);
-	}
-	else
-	{
-		PWMx->CCR &= (~PWM_CCR_CAP_FALLING(PWM_CaptureConfigStruct->CaptureChannel)) \
-					& PWM_CCR_BITMASK;
-	}
-
-	if (PWM_CaptureConfigStruct->IntOnCaption == ENABLE)
-	{
-		PWMx->CCR |= PWM_CCR_INT_ON_CAP(PWM_CaptureConfigStruct->CaptureChannel);
-	}
-	else
-	{
-		PWMx->CCR &= (~PWM_CCR_INT_ON_CAP(PWM_CaptureConfigStruct->CaptureChannel)) \
-					& PWM_CCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Read value of capture register PWM peripheral
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	CaptureChannel: capture channel number, should be in
- * 				range 0 to 1
- * @return 		Value of capture register
- **********************************************************************/
-uint32_t PWM_GetCaptureValue(LPC_PWM_TypeDef *PWMx, uint8_t CaptureChannel)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_CAPTURE_CHANNEL(CaptureChannel));
-
-	switch (CaptureChannel)
-	{
-	case 0:
-		return PWMx->CR0;
-
-	case 1:
-		return PWMx->CR1;
-
-	default:
-		return (0);
-	}
-}
-
-
-/********************************************************************//**
- * @brief 		Update value for each PWM channel with update type option
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	MatchChannel Match channel
- * @param[in]	MatchValue Match value
- * @param[in]	UpdateType Type of Update, should be:
- * 				- PWM_MATCH_UPDATE_NOW: The update value will be updated for
- * 					this channel immediately
- * 				- PWM_MATCH_UPDATE_NEXT_RST: The update value will be updated for
- * 					this channel on next reset by a PWM Match event.
- * @return		None
- *********************************************************************/
-void PWM_MatchUpdate(LPC_PWM_TypeDef *PWMx, uint8_t MatchChannel, \
-					uint32_t MatchValue, uint8_t UpdateType)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_MATCH_CHANNEL(MatchChannel));
-	CHECK_PARAM(PARAM_PWM_MATCH_UPDATE(UpdateType));
-
-	switch (MatchChannel)
-	{
-	case 0:
-		PWMx->MR0 = MatchValue;
-		break;
-
-	case 1:
-		PWMx->MR1 = MatchValue;
-		break;
-
-	case 2:
-		PWMx->MR2 = MatchValue;
-		break;
-
-	case 3:
-		PWMx->MR3 = MatchValue;
-		break;
-
-	case 4:
-		PWMx->MR4 = MatchValue;
-		break;
-
-	case 5:
-		PWMx->MR5 = MatchValue;
-		break;
-
-	case 6:
-		PWMx->MR6 = MatchValue;
-		break;
-	}
-
-	// Write Latch register
-	PWMx->LER |= PWM_LER_EN_MATCHn_LATCH(MatchChannel);
-
-	// In case of update now
-	if (UpdateType == PWM_MATCH_UPDATE_NOW)
-	{
-		PWMx->TCR |= PWM_TCR_COUNTER_RESET;
-		PWMx->TCR &= (~PWM_TCR_COUNTER_RESET) & PWM_TCR_BITMASK;
-	}
-}
-
-/********************************************************************//**
- * @brief 		Update value for multi PWM channel with update type option
- * 				at the same time
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	MatchStruct Structure that contents match value of 7 pwm channels
- * @param[in]	UpdateType Type of Update, should be:
- * 				- PWM_MATCH_UPDATE_NOW: The update value will be updated for
- * 					this channel immediately
- * 				- PWM_MATCH_UPDATE_NEXT_RST: The update value will be updated for
- * 					this channel on next reset by a PWM Match event.
- * @return		None
- *********************************************************************/
-void PWM_MultiMatchUpdate(LPC_PWM_TypeDef *PWMx, PWM_Match_T *MatchStruct , uint8_t UpdateType)
-{
-	uint8_t LatchValue = 0;
-	uint8_t i;
-
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM_MATCH_UPDATE(UpdateType));
-
-	//Update match value
-	for(i=0;i<7;i++)
-	{
-		if(MatchStruct[i].Status == SET)
-		{
-			if(i<4)
-				*((volatile unsigned int *)(&(PWMx->MR0) + i)) = MatchStruct[i].Matchvalue;
-			else
-			{
-				*((volatile unsigned int *)(&(PWMx->MR4) + (i-4))) = MatchStruct[i].Matchvalue;
-			}
-			LatchValue |=(1<<i);
-		}
-	}
-	//set update for multi-channel at the same time
-	PWMx->LER = LatchValue;
-
-	// In case of update now
-	if (UpdateType == PWM_MATCH_UPDATE_NOW)
-	{
-		PWMx->TCR |= PWM_TCR_COUNTER_RESET;
-		PWMx->TCR &= (~PWM_TCR_COUNTER_RESET) & PWM_TCR_BITMASK;
-	}
-}
-/********************************************************************//**
- * @brief 		Configure Edge mode for each PWM channel
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	PWMChannel PWM channel, should be in range from 2 to 6
- * @param[in]	ModeOption PWM mode option, should be:
- * 				- PWM_CHANNEL_SINGLE_EDGE: Single Edge mode
- * 				- PWM_CHANNEL_DUAL_EDGE: Dual Edge mode
- * @return 		None
- * Note: PWM Channel 1 can not be selected for mode option
- *********************************************************************/
-void PWM_ChannelConfig(LPC_PWM_TypeDef *PWMx, uint8_t PWMChannel, uint8_t ModeOption)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_EDGE_MODE_CHANNEL(PWMChannel));
-	CHECK_PARAM(PARAM_PWM_CHANNEL_EDGE(ModeOption));
-
-	// Single edge mode
-	if (ModeOption == PWM_CHANNEL_SINGLE_EDGE)
-	{
-		PWMx->PCR &= (~PWM_PCR_PWMSELn(PWMChannel)) & PWM_PCR_BITMASK;
-	}
-	// Double edge mode
-	else if (PWM_CHANNEL_DUAL_EDGE)
-	{
-		PWMx->PCR |= PWM_PCR_PWMSELn(PWMChannel);
-	}
-}
-
-
-
-/********************************************************************//**
- * @brief 		Enable/Disable PWM channel output
- * @param[in]	PWMx	PWM peripheral selected, should be LPC_PWM1
- * @param[in]	PWMChannel PWM channel, should be in range from 1 to 6
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: Enable this PWM channel output
- * 				- DISABLE: Disable this PWM channel output
- * @return		None
- *********************************************************************/
-void PWM_ChannelCmd(LPC_PWM_TypeDef *PWMx, uint8_t PWMChannel, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_PWMx(PWMx));
-	CHECK_PARAM(PARAM_PWM1_CHANNEL(PWMChannel));
-
-	if (NewState == ENABLE)
-	{
-		PWMx->PCR |= PWM_PCR_PWMENAn(PWMChannel);
-	}
-	else
-	{
-		PWMx->PCR &= (~PWM_PCR_PWMENAn(PWMChannel)) & PWM_PCR_BITMASK;
-	}
-}
-
-/**
- * @}
- */
-
-#endif /* _PWM */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_qei.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_qei.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,511 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_qei.c				2010-05-21
-*//**
-* @file		lpc17xx_qei.c
-* @brief	Contains all functions support for QEI firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup QEI
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_qei.h"
-#include "lpc17xx_clkpwr.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _QEI
-
-/* Private Types -------------------------------------------------------------- */
-/** @defgroup QEI_Private_Types QEI Private Types
- * @{
- */
-
-/**
- * @brief QEI configuration union type definition
- */
-typedef union {
-	QEI_CFG_Type bmQEIConfig;
-	uint32_t ulQEIConfig;
-} QEI_CFGOPT_Type;
-
-/**
- * @}
- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup QEI_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief		Resets value for each type of QEI value, such as velocity,
- * 				counter, position, etc..
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulResetType		QEI Reset Type, should be one of the following:
- * 								- QEI_RESET_POS: Reset Position Counter
- * 								- QEI_RESET_POSOnIDX: Reset Position Counter on Index signal
- * 								- QEI_RESET_VEL: Reset Velocity
- * 								- QEI_RESET_IDX: Reset Index Counter
- * @return		None
- **********************************************************************/
-void QEI_Reset(LPC_QEI_TypeDef *QEIx, uint32_t ulResetType)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_RESET(ulResetType));
-
-	QEIx->QEICON = ulResetType;
-}
-
-/*********************************************************************//**
- * @brief		Initializes the QEI peripheral according to the specified
-*               parameters in the QEI_ConfigStruct.
- * @param[in]	QEIx				QEI peripheral, should be LPC_QEI
- * @param[in]	QEI_ConfigStruct	Pointer to a QEI_CFG_Type structure
-*                    that contains the configuration information for the
-*                    specified QEI peripheral
- * @return		None
- **********************************************************************/
-void QEI_Init(LPC_QEI_TypeDef *QEIx, QEI_CFG_Type *QEI_ConfigStruct)
-{
-
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_DIRINV(QEI_ConfigStruct->DirectionInvert));
-	CHECK_PARAM(PARAM_QEI_SIGNALMODE(QEI_ConfigStruct->SignalMode));
-	CHECK_PARAM(PARAM_QEI_CAPMODE(QEI_ConfigStruct->CaptureMode));
-	CHECK_PARAM(PARAM_QEI_INVINX(QEI_ConfigStruct->InvertIndex));
-
-	/* Set up clock and power for QEI module */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCQEI, ENABLE);
-
-	/* As default, peripheral clock for QEI module
-	 * is set to FCCLK / 2 */
-	CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_QEI, CLKPWR_PCLKSEL_CCLK_DIV_1);
-
-	// Reset all remaining value in QEI peripheral
-	QEIx->QEICON = QEI_CON_RESP | QEI_CON_RESV | QEI_CON_RESI;
-	QEIx->QEIMAXPOS = 0x00;
-	QEIx->CMPOS0 = 0x00;
-	QEIx->CMPOS1 = 0x00;
-	QEIx->CMPOS2 = 0x00;
-	QEIx->INXCMP = 0x00;
-	QEIx->QEILOAD = 0x00;
-	QEIx->VELCOMP = 0x00;
-	QEIx->FILTER = 0x00;
-	// Disable all Interrupt
-	QEIx->QEIIEC = QEI_IECLR_BITMASK;
-	// Clear all Interrupt pending
-	QEIx->QEICLR = QEI_INTCLR_BITMASK;
-	// Set QEI configuration value corresponding to its setting up value
-	QEIx->QEICONF = ((QEI_CFGOPT_Type *)QEI_ConfigStruct)->ulQEIConfig;
-}
-
-
-/*********************************************************************//**
- * @brief		De-initializes the QEI peripheral registers to their
-*                  default reset values.
- * @param[in]	QEIx	QEI peripheral, should be LPC_QEI
- * @return 		None
- **********************************************************************/
-void QEI_DeInit(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-
-	/* Turn off clock and power for QEI module */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCQEI, DISABLE);
-}
-
-
-/*****************************************************************************//**
-* @brief		Fills each QIE_InitStruct member with its default value:
-* 				- DirectionInvert = QEI_DIRINV_NONE
-* 				- SignalMode = QEI_SIGNALMODE_QUAD
-* 				- CaptureMode = QEI_CAPMODE_4X
-* 				- InvertIndex = QEI_INVINX_NONE
-* @param[in]	QIE_InitStruct Pointer to a QEI_CFG_Type structure
-*                    which will be initialized.
-* @return		None
-*******************************************************************************/
-void QEI_ConfigStructInit(QEI_CFG_Type *QIE_InitStruct)
-{
-	QIE_InitStruct->CaptureMode = QEI_CAPMODE_4X;
-	QIE_InitStruct->DirectionInvert = QEI_DIRINV_NONE;
-	QIE_InitStruct->InvertIndex = QEI_INVINX_NONE;
-	QIE_InitStruct->SignalMode = QEI_SIGNALMODE_QUAD;
-}
-
-
-/*********************************************************************//**
- * @brief		Check whether if specified flag status is set or not
- * @param[in]	QEIx		QEI peripheral, should be LPC_QEI
- * @param[in]	ulFlagType	Status Flag Type, should be one of the following:
- * 							- QEI_STATUS_DIR: Direction Status
- * @return		New Status of this status flag (SET or RESET)
- **********************************************************************/
-FlagStatus QEI_GetStatus(LPC_QEI_TypeDef *QEIx, uint32_t ulFlagType)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_STATUS(ulFlagType));
-	return ((QEIx->QEISTAT & ulFlagType) ? SET : RESET);
-}
-
-/*********************************************************************//**
- * @brief		Get current position value in QEI peripheral
- * @param[in]	QEIx	QEI peripheral, should be LPC_QEI
- * @return		Current position value of QEI peripheral
- **********************************************************************/
-uint32_t QEI_GetPosition(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	return (QEIx->QEIPOS);
-}
-
-/*********************************************************************//**
- * @brief		Set max position value for QEI peripheral
- * @param[in]	QEIx		QEI peripheral, should be LPC_QEI
- * @param[in]	ulMaxPos	Max position value to set
- * @return		None
- **********************************************************************/
-void QEI_SetMaxPosition(LPC_QEI_TypeDef *QEIx, uint32_t ulMaxPos)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	QEIx->QEIMAXPOS = ulMaxPos;
-}
-
-/*********************************************************************//**
- * @brief		Set position compare value for QEI peripheral
- * @param[in]	QEIx		QEI peripheral, should be LPC_QEI
- * @param[in]	bPosCompCh	Compare Position channel, should be:
- * 							- QEI_COMPPOS_CH_0: QEI compare position channel 0
- * 							- QEI_COMPPOS_CH_1: QEI compare position channel 1
- * 							- QEI_COMPPOS_CH_2: QEI compare position channel 2
- * @param[in]	ulPosComp	Compare Position value to set
- * @return		None
- **********************************************************************/
-void QEI_SetPositionComp(LPC_QEI_TypeDef *QEIx, uint8_t bPosCompCh, uint32_t ulPosComp)
-{
-	volatile uint32_t *tmp;
-
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_COMPPOS_CH(bPosCompCh));
-	tmp = (volatile uint32_t *) (&(QEIx->CMPOS0) + bPosCompCh * 4);
-	*tmp = ulPosComp;
-
-}
-
-/*********************************************************************//**
- * @brief		Get current index counter of QEI peripheral
- * @param[in]	QEIx		QEI peripheral, should be LPC_QEI
- * @return		Current value of QEI index counter
- **********************************************************************/
-uint32_t QEI_GetIndex(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	return (QEIx->INXCNT);
-}
-
-/*********************************************************************//**
- * @brief		Set value for index compare in QEI peripheral
- * @param[in]	QEIx		QEI peripheral, should be LPC_QEI
- * @param[in]	ulIndexComp		Compare Index Value to set
- * @return		None
- **********************************************************************/
-void QEI_SetIndexComp(LPC_QEI_TypeDef *QEIx, uint32_t ulIndexComp)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	QEIx->INXCMP = ulIndexComp;
-}
-
-/*********************************************************************//**
- * @brief		Set timer reload value for QEI peripheral. When the velocity timer is
- * 				over-flow, the value that set for Timer Reload register will be loaded
- * 				into the velocity timer for next period. The calculated velocity in RPM
- * 				therefore will be affect by this value.
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	QEIReloadStruct	QEI reload structure
- * @return		None
- **********************************************************************/
-void QEI_SetTimerReload(LPC_QEI_TypeDef *QEIx, QEI_RELOADCFG_Type *QEIReloadStruct)
-{
-	uint64_t pclk;
-
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_TIMERRELOAD(QEIReloadStruct->ReloadOption));
-
-	if (QEIReloadStruct->ReloadOption == QEI_TIMERRELOAD_TICKVAL) {
-		QEIx->QEILOAD = QEIReloadStruct->ReloadValue - 1;
-	} else {
-		pclk = (uint64_t)CLKPWR_GetPCLK(CLKPWR_PCLKSEL_QEI);
-		pclk = (pclk /(1000000/QEIReloadStruct->ReloadValue)) - 1;
-		QEIx->QEILOAD = (uint32_t)pclk;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Get current timer counter in QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @return		Current timer counter in QEI peripheral
- **********************************************************************/
-uint32_t QEI_GetTimer(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	return (QEIx->QEITIME);
-}
-
-/*********************************************************************//**
- * @brief		Get current velocity pulse counter in current time period
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @return		Current velocity pulse counter value
- **********************************************************************/
-uint32_t QEI_GetVelocity(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	return (QEIx->QEIVEL);
-}
-
-/*********************************************************************//**
- * @brief		Get the most recently measured velocity of the QEI. When
- * 				the Velocity timer in QEI is over-flow, the current velocity
- * 				value will be loaded into Velocity Capture register.
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @return		The most recently measured velocity value
- **********************************************************************/
-uint32_t QEI_GetVelocityCap(LPC_QEI_TypeDef *QEIx)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	return (QEIx->QEICAP);
-}
-
-/*********************************************************************//**
- * @brief		Set Velocity Compare value for QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulVelComp		Compare Velocity value to set
- * @return		None
- **********************************************************************/
-void QEI_SetVelocityComp(LPC_QEI_TypeDef *QEIx, uint32_t ulVelComp)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	QEIx->VELCOMP = ulVelComp;
-}
-
-/*********************************************************************//**
- * @brief		Set value of sampling count for the digital filter in
- * 				QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulSamplingPulse	Value of sampling count to set
- * @return		None
- **********************************************************************/
-void QEI_SetDigiFilter(LPC_QEI_TypeDef *QEIx, uint32_t ulSamplingPulse)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	QEIx->FILTER = ulSamplingPulse;
-}
-
-/*********************************************************************//**
- * @brief		Check whether if specified interrupt flag status in QEI
- * 				peripheral is set or not
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulIntType		Interrupt Flag Status type, should be:
-								- QEI_INTFLAG_INX_Int: index pulse was detected interrupt
-								- QEI_INTFLAG_TIM_Int: Velocity timer over flow interrupt
-								- QEI_INTFLAG_VELC_Int: Capture velocity is less than compare interrupt
-								- QEI_INTFLAG_DIR_Int: Change of direction interrupt
-								- QEI_INTFLAG_ERR_Int: An encoder phase error interrupt
-								- QEI_INTFLAG_ENCLK_Int: An encoder clock pulse was detected interrupt
-								- QEI_INTFLAG_POS0_Int: position 0 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS1_Int: position 1 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS2_Int: position 2 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_REV_Int: Index compare value is equal to the current
-														index count interrupt
-								- QEI_INTFLAG_POS0REV_Int: Combined position 0 and revolution count interrupt
-								- QEI_INTFLAG_POS1REV_Int: Combined position 1 and revolution count interrupt
-								- QEI_INTFLAG_POS2REV_Int: Combined position 2 and revolution count interrupt
- * @return		New State of specified interrupt flag status (SET or RESET)
- **********************************************************************/
-FlagStatus QEI_GetIntStatus(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_INTFLAG(ulIntType));
-
-	return((QEIx->QEIINTSTAT & ulIntType) ? SET : RESET);
-}
-
-/*********************************************************************//**
- * @brief		Enable/Disable specified interrupt in QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulIntType		Interrupt Flag Status type, should be:
- * 								- QEI_INTFLAG_INX_Int: index pulse was detected interrupt
- *								- QEI_INTFLAG_TIM_Int: Velocity timer over flow interrupt
- *								- QEI_INTFLAG_VELC_Int: Capture velocity is less than compare interrupt
- * 								- QEI_INTFLAG_DIR_Int: Change of direction interrupt
- *  							- QEI_INTFLAG_ERR_Int: An encoder phase error interrupt
- * 								- QEI_INTFLAG_ENCLK_Int: An encoder clock pulse was detected interrupt
- *								- QEI_INTFLAG_POS0_Int: position 0 compare value is equal to the
- *														current position interrupt
- *								- QEI_INTFLAG_POS1_Int: position 1 compare value is equal to the
- *														current position interrupt
- *								- QEI_INTFLAG_POS2_Int: position 2 compare value is equal to the
- *														current position interrupt
- *								- QEI_INTFLAG_REV_Int: Index compare value is equal to the current
- *														index count interrupt
- *								- QEI_INTFLAG_POS0REV_Int: Combined position 0 and revolution count interrupt
- *								- QEI_INTFLAG_POS1REV_Int: Combined position 1 and revolution count interrupt
- *								- QEI_INTFLAG_POS2REV_Int: Combined position 2 and revolution count interrupt
- * @param[in]	NewState		New function state, should be:
- *								- DISABLE
- *								- ENABLE
- * @return		None
- **********************************************************************/
-void QEI_IntCmd(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_INTFLAG(ulIntType));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE) {
-		QEIx->QEIIES = ulIntType;
-	} else {
-		QEIx->QEIIEC = ulIntType;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Sets (forces) specified interrupt in QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulIntType		Interrupt Flag Status type, should be:
-								- QEI_INTFLAG_INX_Int: index pulse was detected interrupt
-								- QEI_INTFLAG_TIM_Int: Velocity timer over flow interrupt
-								- QEI_INTFLAG_VELC_Int: Capture velocity is less than compare interrupt
-								- QEI_INTFLAG_DIR_Int: Change of direction interrupt
-								- QEI_INTFLAG_ERR_Int: An encoder phase error interrupt
-								- QEI_INTFLAG_ENCLK_Int: An encoder clock pulse was detected interrupt
-								- QEI_INTFLAG_POS0_Int: position 0 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS1_Int: position 1 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS2_Int: position 2 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_REV_Int: Index compare value is equal to the current
-														index count interrupt
-								- QEI_INTFLAG_POS0REV_Int: Combined position 0 and revolution count interrupt
-								- QEI_INTFLAG_POS1REV_Int: Combined position 1 and revolution count interrupt
-								- QEI_INTFLAG_POS2REV_Int: Combined position 2 and revolution count interrupt
- * @return		None
- **********************************************************************/
-void QEI_IntSet(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_INTFLAG(ulIntType));
-
-	QEIx->QEISET = ulIntType;
-}
-
-/*********************************************************************//**
- * @brief		Clear (force) specified interrupt (pending) in QEI peripheral
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulIntType		Interrupt Flag Status type, should be:
-								- QEI_INTFLAG_INX_Int: index pulse was detected interrupt
-								- QEI_INTFLAG_TIM_Int: Velocity timer over flow interrupt
-								- QEI_INTFLAG_VELC_Int: Capture velocity is less than compare interrupt
-								- QEI_INTFLAG_DIR_Int: Change of direction interrupt
-								- QEI_INTFLAG_ERR_Int: An encoder phase error interrupt
-								- QEI_INTFLAG_ENCLK_Int: An encoder clock pulse was detected interrupt
-								- QEI_INTFLAG_POS0_Int: position 0 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS1_Int: position 1 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_POS2_Int: position 2 compare value is equal to the
-														current position interrupt
-								- QEI_INTFLAG_REV_Int: Index compare value is equal to the current
-														index count interrupt
-								- QEI_INTFLAG_POS0REV_Int: Combined position 0 and revolution count interrupt
-								- QEI_INTFLAG_POS1REV_Int: Combined position 1 and revolution count interrupt
-								- QEI_INTFLAG_POS2REV_Int: Combined position 2 and revolution count interrupt
- * @return		None
- **********************************************************************/
-void QEI_IntClear(LPC_QEI_TypeDef *QEIx, uint32_t ulIntType)
-{
-	CHECK_PARAM(PARAM_QEIx(QEIx));
-	CHECK_PARAM(PARAM_QEI_INTFLAG(ulIntType));
-
-	QEIx->QEICLR = ulIntType;
-}
-
-
-/*********************************************************************//**
- * @brief		Calculates the actual velocity in RPM passed via velocity
- * 				capture value and Pulse Per Round (of the encoder) value
- * 				parameter input.
- * @param[in]	QEIx			QEI peripheral, should be LPC_QEI
- * @param[in]	ulVelCapValue	Velocity capture input value that can
- * 								be got from QEI_GetVelocityCap() function
- * @param[in]	ulPPR			Pulse per round of encoder
- * @return		The actual value of velocity in RPM (Round per minute)
- **********************************************************************/
-uint32_t QEI_CalculateRPM(LPC_QEI_TypeDef *QEIx, uint32_t ulVelCapValue, uint32_t ulPPR)
-{
-	uint64_t rpm, clock, Load, edges;
-
-	// Get current Clock rate for timer input
-	clock = (uint64_t)CLKPWR_GetPCLK(CLKPWR_PCLKSEL_QEI);
-	// Get Timer load value (velocity capture period)
-	Load  = (uint64_t)(QEIx->QEILOAD + 1);
-	// Get Edge
-	edges = (uint64_t)((QEIx->QEICONF & QEI_CONF_CAPMODE) ? 4 : 2);
-	// Calculate RPM
-	rpm = ((clock * ulVelCapValue * 60) / (Load * ulPPR * edges));
-
-	return (uint32_t)(rpm);
-}
-
-
-/**
- * @}
- */
-
-#endif /* _QEI */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_rit.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_rit.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_rit.c				2010-05-21
-*//**
-* @file		lpc17xx_rit.c
-* @brief	Contains all functions support for RIT firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup RIT
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_rit.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-#ifdef _RIT
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup RIT_Public_Functions
- * @{
- */
-
-/******************************************************************************//*
- * @brief 		Initial for RIT
- * 					- Turn on power and clock
- * 					- Setup default register values
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @return 		None
- *******************************************************************************/
-void RIT_Init(LPC_RIT_TypeDef *RITx)
-{
-	CHECK_PARAM(PARAM_RITx(RITx));
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRIT, ENABLE);
-	//Set up default register values
-	RITx->RICOMPVAL = 0xFFFFFFFF;
-	RITx->RIMASK	= 0x00000000;
-	RITx->RICTRL	= 0x0C;
-	RITx->RICOUNTER	= 0x00000000;
-	// Turn on power and clock
-
-}
-/******************************************************************************//*
- * @brief 		DeInitial for RIT
- * 					- Turn off power and clock
- * 					- ReSetup default register values
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @return 		None
- *******************************************************************************/
-void RIT_DeInit(LPC_RIT_TypeDef *RITx)
-{
-	CHECK_PARAM(PARAM_RITx(RITx));
-
-	// Turn off power and clock
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRIT, DISABLE);
-	//ReSetup default register values
-	RITx->RICOMPVAL = 0xFFFFFFFF;
-	RITx->RIMASK	= 0x00000000;
-	RITx->RICTRL	= 0x0C;
-	RITx->RICOUNTER	= 0x00000000;
-}
-
-/******************************************************************************//*
- * @brief 		Set compare value, mask value and time counter value
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @param[in]	time_interval: timer interval value (ms)
- * @return 		None
- *******************************************************************************/
-void RIT_TimerConfig(LPC_RIT_TypeDef *RITx, uint32_t time_interval)
-{
-	uint32_t clock_rate, cmp_value;
-	CHECK_PARAM(PARAM_RITx(RITx));
-
-	// Get PCLK value of RIT
-	clock_rate = CLKPWR_GetPCLK(CLKPWR_PCLKSEL_RIT);
-
-	/* calculate compare value for RIT to generate interrupt at
-	 * specified time interval
-	 * COMPVAL = (RIT_PCLK * time_interval)/1000
-	 * (with time_interval unit is millisecond)
-	 */
-	cmp_value = (clock_rate /1000) * time_interval;
-	RITx->RICOMPVAL = cmp_value;
-
-	/* Set timer enable clear bit to clear timer to 0 whenever
-	 * counter value equals the contents of RICOMPVAL
-	 */
-	RITx->RICTRL |= (1<<1);
-}
-
-
-/******************************************************************************//*
- * @brief 		Enable/Disable Timer
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @param[in]	NewState 	New State of this function
- * 					-ENABLE: Enable Timer
- * 					-DISABLE: Disable Timer
- * @return 		None
- *******************************************************************************/
-void RIT_Cmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RITx(RITx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	//Enable or Disable Timer
-	if(NewState==ENABLE)
-	{
-		RITx->RICTRL |= RIT_CTRL_TEN;
-	}
-	else
-	{
-		RITx->RICTRL &= ~RIT_CTRL_TEN;
-	}
-}
-
-/******************************************************************************//*
- * @brief 		Timer Enable/Disable on debug
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @param[in]	NewState 	New State of this function
- * 					-ENABLE: The timer is halted whenever a hardware break condition occurs
- * 					-DISABLE: Hardware break has no effect on the timer operation
- * @return 		None
- *******************************************************************************/
-void RIT_TimerDebugCmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RITx(RITx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	//Timer Enable/Disable on break
-	if(NewState==ENABLE)
-	{
-		RITx->RICTRL |= RIT_CTRL_ENBR;
-	}
-	else
-	{
-		RITx->RICTRL &= ~RIT_CTRL_ENBR;
-	}
-}
-/******************************************************************************//*
- * @brief 		Check whether interrupt flag is set or not
- * @param[in]	RITx is RIT peripheral selected, should be: LPC_RIT
- * @return 		Current interrupt status, could be: SET/RESET
- *******************************************************************************/
-IntStatus RIT_GetIntStatus(LPC_RIT_TypeDef *RITx)
-{
-	uint8_t result;
-	CHECK_PARAM(PARAM_RITx(RITx));
-	if((RITx->RICTRL&RIT_CTRL_INTEN)==1)	result= SET;
-	else return RESET;
-	//clear interrupt flag
-	RITx->RICTRL |= RIT_CTRL_INTEN;
-	return (IntStatus)result;
-}
-
-/**
- * @}
- */
-
-#endif /* _RIT */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_rtc.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_rtc.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,780 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_rtc.c				2011-06-06
-*//**
-* @file		lpc17xx_rtc.c
-* @brief	Contains all functions support for RTC firmware library on LPC17xx
-* @version	3.1
-* @date		6. June. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup RTC
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_rtc.h"
-#include "lpc17xx_clkpwr.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _RTC
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup RTC_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief		Initializes the RTC peripheral.
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @return 		None
- *********************************************************************/
-void RTC_Init (LPC_RTC_TypeDef *RTCx)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	/* Set up clock and power for RTC module */
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRTC, ENABLE);
-
-	// Clear all register to be default
-	RTCx->ILR = 0x00;
-	RTCx->CCR = 0x00;
-	RTCx->CIIR = 0x00;
-	RTCx->AMR = 0xFF;
-	RTCx->CALIBRATION = 0x00;
-}
-
-
-/*********************************************************************//**
- * @brief		De-initializes the RTC peripheral registers to their
-*                  default reset values.
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @return 		None
- **********************************************************************/
-void RTC_DeInit(LPC_RTC_TypeDef *RTCx)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	RTCx->CCR = 0x00;
-	// Disable power and clock for RTC module
-	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRTC, DISABLE);
-}
-
-/*********************************************************************//**
- * @brief 		Reset clock tick counter in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @return 		None
- **********************************************************************/
-void RTC_ResetClockTickCounter(LPC_RTC_TypeDef *RTCx)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	RTCx->CCR |= RTC_CCR_CTCRST;
-	RTCx->CCR &= (~RTC_CCR_CTCRST) & RTC_CCR_BITMASK;
-}
-
-/*********************************************************************//**
- * @brief 		Start/Stop RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: The time counters are enabled
- * 				- DISABLE: The time counters are disabled
- * @return 		None
- **********************************************************************/
-void RTC_Cmd (LPC_RTC_TypeDef *RTCx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		RTCx->CCR |= RTC_CCR_CLKEN;
-	}
-	else
-	{
-		RTCx->CCR &= (~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Enable/Disable Counter increment interrupt for each time type
- * 				in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	CntIncrIntType: Counter Increment Interrupt type,
- * 				an increment of this type value below will generates
- * 				an interrupt, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: Counter Increment interrupt for this
- * 					time type are enabled
- * 				- DISABLE: Counter Increment interrupt for this
- * 					time type are disabled
- * @return 		None
- **********************************************************************/
-void RTC_CntIncrIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t CntIncrIntType, \
-								FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-	CHECK_PARAM(PARAM_RTC_TIMETYPE(CntIncrIntType));
-
-	if (NewState ==  ENABLE)
-	{
-		switch (CntIncrIntType)
-		{
-		case RTC_TIMETYPE_SECOND:
-			RTCx->CIIR |= RTC_CIIR_IMSEC;
-			break;
-		case RTC_TIMETYPE_MINUTE:
-			RTCx->CIIR |= RTC_CIIR_IMMIN;
-			break;
-		case RTC_TIMETYPE_HOUR:
-			RTCx->CIIR |= RTC_CIIR_IMHOUR;
-			break;
-		case RTC_TIMETYPE_DAYOFWEEK:
-			RTCx->CIIR |= RTC_CIIR_IMDOW;
-			break;
-		case RTC_TIMETYPE_DAYOFMONTH:
-			RTCx->CIIR |= RTC_CIIR_IMDOM;
-			break;
-		case RTC_TIMETYPE_DAYOFYEAR:
-			RTCx->CIIR |= RTC_CIIR_IMDOY;
-			break;
-		case RTC_TIMETYPE_MONTH:
-			RTCx->CIIR |= RTC_CIIR_IMMON;
-			break;
-		case RTC_TIMETYPE_YEAR:
-			RTCx->CIIR |= RTC_CIIR_IMYEAR;
-			break;
-		}
-	}
-	else
-	{
-		switch (CntIncrIntType)
-		{
-		case RTC_TIMETYPE_SECOND:
-			RTCx->CIIR &= (~RTC_CIIR_IMSEC) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_MINUTE:
-			RTCx->CIIR &= (~RTC_CIIR_IMMIN) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_HOUR:
-			RTCx->CIIR &= (~RTC_CIIR_IMHOUR) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFWEEK:
-			RTCx->CIIR &= (~RTC_CIIR_IMDOW) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFMONTH:
-			RTCx->CIIR &= (~RTC_CIIR_IMDOM) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFYEAR:
-			RTCx->CIIR &= (~RTC_CIIR_IMDOY) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_MONTH:
-			RTCx->CIIR &= (~RTC_CIIR_IMMON) & RTC_CIIR_BITMASK;
-			break;
-		case RTC_TIMETYPE_YEAR:
-			RTCx->CIIR &= (~RTC_CIIR_IMYEAR) & RTC_CIIR_BITMASK;
-			break;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Enable/Disable Alarm interrupt for each time type
- * 				in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	AlarmTimeType: Alarm Time Interrupt type,
- * 				an matching of this type value below with current time
- * 				in RTC will generates an interrupt, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: Alarm interrupt for this
- * 					time type are enabled
- * 				- DISABLE: Alarm interrupt for this
- * 					time type are disabled
- * @return 		None
- **********************************************************************/
-void RTC_AlarmIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t AlarmTimeType, \
-								FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-	CHECK_PARAM(PARAM_RTC_TIMETYPE(AlarmTimeType));
-
-	if (NewState == ENABLE)
-	{
-		switch (AlarmTimeType)
-		{
-		case RTC_TIMETYPE_SECOND:
-			RTCx->AMR &= (~RTC_AMR_AMRSEC) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_MINUTE:
-			RTCx->AMR &= (~RTC_AMR_AMRMIN) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_HOUR:
-			RTCx->AMR &= (~RTC_AMR_AMRHOUR) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFWEEK:
-			RTCx->AMR &= (~RTC_AMR_AMRDOW) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFMONTH:
-			RTCx->AMR &= (~RTC_AMR_AMRDOM) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_DAYOFYEAR:
-			RTCx->AMR &= (~RTC_AMR_AMRDOY) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_MONTH:
-			RTCx->AMR &= (~RTC_AMR_AMRMON) & RTC_AMR_BITMASK;
-			break;
-		case RTC_TIMETYPE_YEAR:
-			RTCx->AMR &= (~RTC_AMR_AMRYEAR) & RTC_AMR_BITMASK;
-			break;
-		}
-	}
-	else
-	{
-		switch (AlarmTimeType)
-		{
-		case RTC_TIMETYPE_SECOND:
-			RTCx->AMR |= (RTC_AMR_AMRSEC);
-			break;
-		case RTC_TIMETYPE_MINUTE:
-			RTCx->AMR |= (RTC_AMR_AMRMIN);
-			break;
-		case RTC_TIMETYPE_HOUR:
-			RTCx->AMR |= (RTC_AMR_AMRHOUR);
-			break;
-		case RTC_TIMETYPE_DAYOFWEEK:
-			RTCx->AMR |= (RTC_AMR_AMRDOW);
-			break;
-		case RTC_TIMETYPE_DAYOFMONTH:
-			RTCx->AMR |= (RTC_AMR_AMRDOM);
-			break;
-		case RTC_TIMETYPE_DAYOFYEAR:
-			RTCx->AMR |= (RTC_AMR_AMRDOY);
-			break;
-		case RTC_TIMETYPE_MONTH:
-			RTCx->AMR |= (RTC_AMR_AMRMON);
-			break;
-		case RTC_TIMETYPE_YEAR:
-			RTCx->AMR |= (RTC_AMR_AMRYEAR);
-			break;
-		}
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Set current time value for each time type in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Timetype: Time Type, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
- * @param[in]	TimeValue Time value to set
- * @return 		None
- **********************************************************************/
-void RTC_SetTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t TimeValue)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_TIMETYPE(Timetype));
-
-	switch ( Timetype)
-	{
-	case RTC_TIMETYPE_SECOND:
-		CHECK_PARAM(TimeValue <= RTC_SECOND_MAX);
-
-		RTCx->SEC = TimeValue & RTC_SEC_MASK;
-		break;
-
-	case RTC_TIMETYPE_MINUTE:
-		CHECK_PARAM(TimeValue <= RTC_MINUTE_MAX);
-
-		RTCx->MIN = TimeValue & RTC_MIN_MASK;
-		break;
-
-	case RTC_TIMETYPE_HOUR:
-		CHECK_PARAM(TimeValue <= RTC_HOUR_MAX);
-
-		RTCx->HOUR = TimeValue & RTC_HOUR_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFWEEK:
-		CHECK_PARAM(TimeValue <= RTC_DAYOFWEEK_MAX);
-
-		RTCx->DOW = TimeValue & RTC_DOW_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFMONTH:
-		CHECK_PARAM((TimeValue <= RTC_DAYOFMONTH_MAX) \
-				&& (TimeValue >= RTC_DAYOFMONTH_MIN));
-
-		RTCx->DOM = TimeValue & RTC_DOM_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFYEAR:
-		CHECK_PARAM((TimeValue >= RTC_DAYOFYEAR_MIN) \
-				&& (TimeValue <= RTC_DAYOFYEAR_MAX));
-
-		RTCx->DOY = TimeValue & RTC_DOY_MASK;
-		break;
-
-	case RTC_TIMETYPE_MONTH:
-		CHECK_PARAM((TimeValue >= RTC_MONTH_MIN) \
-				&& (TimeValue <= RTC_MONTH_MAX));
-
-		RTCx->MONTH = TimeValue & RTC_MONTH_MASK;
-		break;
-
-	case RTC_TIMETYPE_YEAR:
-		CHECK_PARAM(TimeValue <= RTC_YEAR_MAX);
-
-		RTCx->YEAR = TimeValue & RTC_YEAR_MASK;
-		break;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Get current time value for each type time type
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Timetype: Time Type, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
- * @return 		Value of time according to specified time type
- **********************************************************************/
-uint32_t RTC_GetTime(LPC_RTC_TypeDef *RTCx, uint32_t Timetype)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_TIMETYPE(Timetype));
-
-	switch (Timetype)
-	{
-	case RTC_TIMETYPE_SECOND:
-		return (RTCx->SEC & RTC_SEC_MASK);
-	case RTC_TIMETYPE_MINUTE:
-		return (RTCx->MIN & RTC_MIN_MASK);
-	case RTC_TIMETYPE_HOUR:
-		return (RTCx->HOUR & RTC_HOUR_MASK);
-	case RTC_TIMETYPE_DAYOFWEEK:
-		return (RTCx->DOW & RTC_DOW_MASK);
-	case RTC_TIMETYPE_DAYOFMONTH:
-		return (RTCx->DOM & RTC_DOM_MASK);
-	case RTC_TIMETYPE_DAYOFYEAR:
-		return (RTCx->DOY & RTC_DOY_MASK);
-	case RTC_TIMETYPE_MONTH:
-		return (RTCx->MONTH & RTC_MONTH_MASK);
-	case RTC_TIMETYPE_YEAR:
-		return (RTCx->YEAR & RTC_YEAR_MASK);
-	default:
-		return (0);
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Set full of time in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	pFullTime Pointer to a RTC_TIME_Type structure that
- * 				contains time value in full.
- * @return 		None
- **********************************************************************/
-void RTC_SetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	RTCx->DOM = pFullTime->DOM & RTC_DOM_MASK;
-	RTCx->DOW = pFullTime->DOW & RTC_DOW_MASK;
-	RTCx->DOY = pFullTime->DOY & RTC_DOY_MASK;
-	RTCx->HOUR = pFullTime->HOUR & RTC_HOUR_MASK;
-	RTCx->MIN = pFullTime->MIN & RTC_MIN_MASK;
-	RTCx->SEC = pFullTime->SEC & RTC_SEC_MASK;
-	RTCx->MONTH = pFullTime->MONTH & RTC_MONTH_MASK;
-	RTCx->YEAR = pFullTime->YEAR & RTC_YEAR_MASK;
-}
-
-
-/*********************************************************************//**
- * @brief 		Get full of time in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	pFullTime Pointer to a RTC_TIME_Type structure that
- * 				will be stored time in full.
- * @return 		None
- **********************************************************************/
-void RTC_GetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	pFullTime->DOM = RTCx->DOM & RTC_DOM_MASK;
-	pFullTime->DOW = RTCx->DOW & RTC_DOW_MASK;
-	pFullTime->DOY = RTCx->DOY & RTC_DOY_MASK;
-	pFullTime->HOUR = RTCx->HOUR & RTC_HOUR_MASK;
-	pFullTime->MIN = RTCx->MIN & RTC_MIN_MASK;
-	pFullTime->SEC = RTCx->SEC & RTC_SEC_MASK;
-	pFullTime->MONTH = RTCx->MONTH & RTC_MONTH_MASK;
-	pFullTime->YEAR = RTCx->YEAR & RTC_YEAR_MASK;
-}
-
-
-/*********************************************************************//**
- * @brief 		Set alarm time value for each time type
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Timetype: Time Type, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
- * @param[in]	ALValue Alarm time value to set
- * @return 		None
- **********************************************************************/
-void RTC_SetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t ALValue)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	switch (Timetype)
-	{
-	case RTC_TIMETYPE_SECOND:
-		CHECK_PARAM(ALValue <= RTC_SECOND_MAX);
-
-		RTCx->ALSEC = ALValue & RTC_SEC_MASK;
-		break;
-
-	case RTC_TIMETYPE_MINUTE:
-		CHECK_PARAM(ALValue <= RTC_MINUTE_MAX);
-
-		RTCx->ALMIN = ALValue & RTC_MIN_MASK;
-		break;
-
-	case RTC_TIMETYPE_HOUR:
-		CHECK_PARAM(ALValue <= RTC_HOUR_MAX);
-
-		RTCx->ALHOUR = ALValue & RTC_HOUR_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFWEEK:
-		CHECK_PARAM(ALValue <= RTC_DAYOFWEEK_MAX);
-
-		RTCx->ALDOW = ALValue & RTC_DOW_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFMONTH:
-		CHECK_PARAM((ALValue <= RTC_DAYOFMONTH_MAX) \
-				&& (ALValue >= RTC_DAYOFMONTH_MIN));
-
-		RTCx->ALDOM = ALValue & RTC_DOM_MASK;
-		break;
-
-	case RTC_TIMETYPE_DAYOFYEAR:
-		CHECK_PARAM((ALValue >= RTC_DAYOFYEAR_MIN) \
-				&& (ALValue <= RTC_DAYOFYEAR_MAX));
-
-		RTCx->ALDOY = ALValue & RTC_DOY_MASK;
-		break;
-
-	case RTC_TIMETYPE_MONTH:
-		CHECK_PARAM((ALValue >= RTC_MONTH_MIN) \
-				&& (ALValue <= RTC_MONTH_MAX));
-
-		RTCx->ALMON = ALValue & RTC_MONTH_MASK;
-		break;
-
-	case RTC_TIMETYPE_YEAR:
-		CHECK_PARAM(ALValue <= RTC_YEAR_MAX);
-
-		RTCx->ALYEAR = ALValue & RTC_YEAR_MASK;
-		break;
-	}
-}
-
-
-
-/*********************************************************************//**
- * @brief 		Get alarm time value for each time type
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Timetype: Time Type, should be:
- * 				- RTC_TIMETYPE_SECOND
- * 				- RTC_TIMETYPE_MINUTE
- * 				- RTC_TIMETYPE_HOUR
- * 				- RTC_TIMETYPE_DAYOFWEEK
- * 				- RTC_TIMETYPE_DAYOFMONTH
- * 				- RTC_TIMETYPE_DAYOFYEAR
- * 				- RTC_TIMETYPE_MONTH
- * 				- RTC_TIMETYPE_YEAR
-  * @return 	Value of Alarm time according to specified time type
- **********************************************************************/
-uint32_t RTC_GetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype)
-{
-	switch (Timetype)
-	{
-	case RTC_TIMETYPE_SECOND:
-		return (RTCx->ALSEC & RTC_SEC_MASK);
-	case RTC_TIMETYPE_MINUTE:
-		return (RTCx->ALMIN & RTC_MIN_MASK);
-	case RTC_TIMETYPE_HOUR:
-		return (RTCx->ALHOUR & RTC_HOUR_MASK);
-	case RTC_TIMETYPE_DAYOFWEEK:
-		return (RTCx->ALDOW & RTC_DOW_MASK);
-	case RTC_TIMETYPE_DAYOFMONTH:
-		return (RTCx->ALDOM & RTC_DOM_MASK);
-	case RTC_TIMETYPE_DAYOFYEAR:
-		return (RTCx->ALDOY & RTC_DOY_MASK);
-	case RTC_TIMETYPE_MONTH:
-		return (RTCx->ALMON & RTC_MONTH_MASK);
-	case RTC_TIMETYPE_YEAR:
-		return (RTCx->ALYEAR & RTC_YEAR_MASK);
-	default:
-		return (0);
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Set full of alarm time in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	pFullTime Pointer to a RTC_TIME_Type structure that
- * 				contains alarm time value in full.
- * @return 		None
- **********************************************************************/
-void RTC_SetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	RTCx->ALDOM = pFullTime->DOM & RTC_DOM_MASK;
-	RTCx->ALDOW = pFullTime->DOW & RTC_DOW_MASK;
-	RTCx->ALDOY = pFullTime->DOY & RTC_DOY_MASK;
-	RTCx->ALHOUR = pFullTime->HOUR & RTC_HOUR_MASK;
-	RTCx->ALMIN = pFullTime->MIN & RTC_MIN_MASK;
-	RTCx->ALSEC = pFullTime->SEC & RTC_SEC_MASK;
-	RTCx->ALMON = pFullTime->MONTH & RTC_MONTH_MASK;
-	RTCx->ALYEAR = pFullTime->YEAR & RTC_YEAR_MASK;
-}
-
-
-/*********************************************************************//**
- * @brief 		Get full of alarm time in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	pFullTime Pointer to a RTC_TIME_Type structure that
- * 				will be stored alarm time in full.
- * @return 		None
- **********************************************************************/
-void RTC_GetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-
-	pFullTime->DOM = RTCx->ALDOM & RTC_DOM_MASK;
-	pFullTime->DOW = RTCx->ALDOW & RTC_DOW_MASK;
-	pFullTime->DOY = RTCx->ALDOY & RTC_DOY_MASK;
-	pFullTime->HOUR = RTCx->ALHOUR & RTC_HOUR_MASK;
-	pFullTime->MIN = RTCx->ALMIN & RTC_MIN_MASK;
-	pFullTime->SEC = RTCx->ALSEC & RTC_SEC_MASK;
-	pFullTime->MONTH = RTCx->ALMON & RTC_MONTH_MASK;
-	pFullTime->YEAR = RTCx->ALYEAR & RTC_YEAR_MASK;
-}
-
-
-/*********************************************************************//**
- * @brief 		Check whether if specified Location interrupt in
- * 				RTC peripheral is set or not
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	IntType Interrupt location type, should be:
- * 						- RTC_INT_COUNTER_INCREASE: Counter Increment Interrupt
- * 							block generated an interrupt.
- * 						- RTC_INT_ALARM: Alarm generated an
- * 							interrupt.
- * @return 		New state of specified Location interrupt in RTC peripheral
- * 				(SET or RESET)
- **********************************************************************/
-IntStatus RTC_GetIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_INT(IntType));
-
-	return ((RTCx->ILR & IntType) ? SET : RESET);
-}
-
-
-/*********************************************************************//**
- * @brief 		Clear specified Location interrupt pending in
- * 				RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	IntType Interrupt location type, should be:
- * 						- RTC_INT_COUNTER_INCREASE: Clear Counter Increment
- * 						Interrupt pending.
- * 						- RTC_INT_ALARM: Clear alarm interrupt pending
- * @return 		None
- **********************************************************************/
-void RTC_ClearIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_INT(IntType));
-
-	RTCx->ILR |= IntType;
-}
-
-/*********************************************************************//**
- * @brief 		Enable/Disable calibration counter in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	NewState New State of this function, should be:
- * 				- ENABLE: The calibration counter is enabled and counting
- * 				- DISABLE: The calibration counter is disabled and reset to zero
- * @return 		None
- **********************************************************************/
-void RTC_CalibCounterCmd(LPC_RTC_TypeDef *RTCx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		RTCx->CCR &= (~RTC_CCR_CCALEN) & RTC_CCR_BITMASK;
-	}
-	else
-	{
-		RTCx->CCR |= RTC_CCR_CCALEN;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief 		Configures Calibration in RTC peripheral
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	CalibValue Calibration value, should be in range from
- * 					0 to 131,072
- * @param[in]	CalibDir Calibration Direction, should be:
- * 					- RTC_CALIB_DIR_FORWARD: Forward calibration
- * 					- RTC_CALIB_DIR_BACKWARD: Backward calibration
- * @return 		None
- **********************************************************************/
-void RTC_CalibConfig(LPC_RTC_TypeDef *RTCx, uint32_t CalibValue, uint8_t CalibDir)
-{
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_CALIB_DIR(CalibDir));
-	CHECK_PARAM(CalibValue < RTC_CALIBRATION_MAX);
-
-	RTCx->CALIBRATION = ((CalibValue - 1) & RTC_CALIBRATION_CALVAL_MASK) \
-			| ((CalibDir == RTC_CALIB_DIR_BACKWARD) ? RTC_CALIBRATION_LIBDIR : 0);
-}
-
-
-/*********************************************************************//**
- * @brief 		Write value to General purpose registers
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Channel General purpose registers Channel number,
- * 				should be in range from 0 to 4.
- * @param[in]	Value Value to write
- * @return 		None
- * Note: These General purpose registers can be used to store important
- * information when the main power supply is off. The value in these
- * registers is not affected by chip reset.
- **********************************************************************/
-void RTC_WriteGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel, uint32_t Value)
-{
-	volatile uint32_t *preg;
-
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_GPREG_CH(Channel));
-
-	preg = (volatile uint32_t *)&RTCx->GPREG0;
-	preg += Channel;
-	*preg = Value;
-}
-
-
-/*********************************************************************//**
- * @brief 		Read value from General purpose registers
- * @param[in]	RTCx	RTC peripheral selected, should be LPC_RTC
- * @param[in]	Channel General purpose registers Channel number,
- * 				should be in range from 0 to 4.
- * @return 		Read Value
- * Note: These General purpose registers can be used to store important
- * information when the main power supply is off. The value in these
- * registers is not affected by chip reset.
- **********************************************************************/
-uint32_t RTC_ReadGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel)
-{
-	volatile uint32_t *preg;
-	uint32_t value;
-
-	CHECK_PARAM(PARAM_RTCx(RTCx));
-	CHECK_PARAM(PARAM_RTC_GPREG_CH(Channel));
-
-	preg = (volatile uint32_t *)&RTCx->GPREG0;
-	preg += Channel;
-	value = *preg;
-	return (value);
-}
-
-/**
- * @}
- */
-
-#endif /* _RTC */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_spi.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_spi.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,440 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_spi.c				2010-05-21
-*//**
-* @file		lpc17xx_spi.c
-* @brief	Contains all functions support for SPI firmware library on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup SPI
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_spi.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-#ifdef _SPI
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup SPI_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Setup clock rate for SPI device
- * @param[in] 	SPIx	SPI peripheral definition, should be LPC_SPI
- * @param[in]	target_clock : clock of SPI (Hz)
- * @return 		None
- ***********************************************************************/
-void SPI_SetClock (LPC_SPI_TypeDef *SPIx, uint32_t target_clock)
-{
-	uint32_t spi_pclk;
-	uint32_t prescale, temp;
-
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	if (SPIx == LPC_SPI){
-		spi_pclk =  CLKPWR_GetPCLK (CLKPWR_PCLKSEL_SPI);
-	} else {
-		return;
-	}
-
-	prescale = 8;
-	// Find closest clock to target clock
-	while (1){
-		temp = target_clock * prescale;
-		if (temp >= spi_pclk){
-			break;
-		}
-		prescale += 2;
-		if(prescale >= 254){
-			break;
-		}
-	}
-
-	// Write to register
-	SPIx->SPCCR = SPI_SPCCR_COUNTER(prescale);
-}
-
-
-/*********************************************************************//**
- * @brief		De-initializes the SPIx peripheral registers to their
-*                  default reset values.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return 		None
- **********************************************************************/
-void SPI_DeInit(LPC_SPI_TypeDef *SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	if (SPIx == LPC_SPI){
-		/* Set up clock and power for SPI module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSPI, DISABLE);
-	}
-}
-
-/*********************************************************************//**
- * @brief		Get data bit size per transfer
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return 		number of bit per transfer, could be 8-16
- **********************************************************************/
-uint8_t SPI_GetDataSize (LPC_SPI_TypeDef *SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-	return ((SPIx->SPCR)>>8 & 0xF);
-}
-
-/********************************************************************//**
- * @brief		Initializes the SPIx peripheral according to the specified
-*               parameters in the UART_ConfigStruct.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @param[in]	SPI_ConfigStruct Pointer to a SPI_CFG_Type structure
-*                    that contains the configuration information for the
-*                    specified SPI peripheral.
- * @return 		None
- *********************************************************************/
-void SPI_Init(LPC_SPI_TypeDef *SPIx, SPI_CFG_Type *SPI_ConfigStruct)
-{
-	uint32_t tmp;
-
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	if(SPIx == LPC_SPI){
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSPI, ENABLE);
-	} else {
-		return;
-	}
-
-	// Configure SPI, interrupt is disable as default
-	tmp = ((SPI_ConfigStruct->CPHA) | (SPI_ConfigStruct->CPOL) \
-		| (SPI_ConfigStruct->DataOrder) | (SPI_ConfigStruct->Databit) \
-		| (SPI_ConfigStruct->Mode) | SPI_SPCR_BIT_EN) & SPI_SPCR_BITMASK;
-	// write back to SPI control register
-	SPIx->SPCR = tmp;
-
-	// Set clock rate for SPI peripheral
-	SPI_SetClock(SPIx, SPI_ConfigStruct->ClockRate);
-
-	// If interrupt flag is set, Write '1' to Clear interrupt flag
-	if (SPIx->SPINT & SPI_SPINT_INTFLAG){
-		SPIx->SPINT = SPI_SPINT_INTFLAG;
-	}
-}
-
-
-
-/*****************************************************************************//**
-* @brief		Fills each SPI_InitStruct member with its default value:
-* 				- CPHA = SPI_CPHA_FIRST
-* 				- CPOL = SPI_CPOL_HI
-* 				- ClockRate = 1000000
-* 				- DataOrder = SPI_DATA_MSB_FIRST
-* 				- Databit = SPI_DATABIT_8
-* 				- Mode = SPI_MASTER_MODE
-* @param[in]	SPI_InitStruct Pointer to a SPI_CFG_Type structure
-*                    which will be initialized.
-* @return		None
-*******************************************************************************/
-void SPI_ConfigStructInit(SPI_CFG_Type *SPI_InitStruct)
-{
-	SPI_InitStruct->CPHA = SPI_CPHA_FIRST;
-	SPI_InitStruct->CPOL = SPI_CPOL_HI;
-	SPI_InitStruct->ClockRate = 1000000;
-	SPI_InitStruct->DataOrder = SPI_DATA_MSB_FIRST;
-	SPI_InitStruct->Databit = SPI_DATABIT_8;
-	SPI_InitStruct->Mode = SPI_MASTER_MODE;
-}
-
-/*********************************************************************//**
- * @brief		Transmit a single data through SPIx peripheral
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @param[in]	Data	Data to transmit (must be 16 or 8-bit long,
- * 						this depend on SPI data bit number configured)
- * @return 		none
- **********************************************************************/
-void SPI_SendData(LPC_SPI_TypeDef* SPIx, uint16_t Data)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	SPIx->SPDR = Data & SPI_SPDR_BITMASK;
-}
-
-
-
-/*********************************************************************//**
- * @brief		Receive a single data from SPIx peripheral
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return 		Data received (16-bit long)
- **********************************************************************/
-uint16_t SPI_ReceiveData(LPC_SPI_TypeDef* SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	return ((uint16_t) (SPIx->SPDR & SPI_SPDR_BITMASK));
-}
-
-/*********************************************************************//**
- * @brief 		SPI 	Read write data function
- * @param[in]	SPIx 	Pointer to SPI peripheral, should be LPC_SPI
- * @param[in]	dataCfg	Pointer to a SPI_DATA_SETUP_Type structure that
- * 						contains specified information about transmit
- * 						data configuration.
- * @param[in]	xfType	Transfer type, should be:
- * 						- SPI_TRANSFER_POLLING: Polling mode
- * 						- SPI_TRANSFER_INTERRUPT: Interrupt mode
- * @return 		Actual Data length has been transferred in polling mode.
- * 				In interrupt mode, always return (0)
- * 				Return (-1) if error.
- * Note: This function can be used in both master and slave mode.
- ***********************************************************************/
-int32_t SPI_ReadWrite (LPC_SPI_TypeDef *SPIx, SPI_DATA_SETUP_Type *dataCfg, \
-						SPI_TRANSFER_Type xfType)
-{
-	uint8_t *rdata8 = NULL;
-    uint8_t *wdata8 = NULL;
-	uint16_t *rdata16 = NULL;
-    uint16_t *wdata16 = NULL;
-    uint32_t stat = 0;
-    uint32_t temp;
-    uint8_t dataword;
-
-	//read for empty buffer
-	temp = SPIx->SPDR;
-	//dummy to clear status
-	temp = SPIx->SPSR;
-	dataCfg->counter = 0;
-	dataCfg->status = 0;
-
-	if(SPI_GetDataSize (SPIx) == 8)
-		dataword = 0;
-	else dataword = 1;
-	if (xfType == SPI_TRANSFER_POLLING){
-
-		if (dataword == 0){
-			rdata8 = (uint8_t *)dataCfg->rx_data;
-			wdata8 = (uint8_t *)dataCfg->tx_data;
-		} else {
-			rdata16 = (uint16_t *)dataCfg->rx_data;
-			wdata16 = (uint16_t *)dataCfg->tx_data;
-		}
-
-		while(dataCfg->counter < dataCfg->length)
-		{
-			// Write data to buffer
-			if(dataCfg->tx_data == NULL){
-				if (dataword == 0){
-					SPI_SendData(SPIx, 0xFF);
-				} else {
-					SPI_SendData(SPIx, 0xFFFF);
-				}
-			} else {
-				if (dataword == 0){
-					SPI_SendData(SPIx, *wdata8);
-					wdata8++;
-				} else {
-					SPI_SendData(SPIx, *wdata16);
-					wdata16++;
-				}
-			}
-			// Wait for transfer complete
-			while (!((stat = SPIx->SPSR) & SPI_SPSR_SPIF));
-			// Check for error
-			if (stat & (SPI_SPSR_ABRT | SPI_SPSR_MODF | SPI_SPSR_ROVR | SPI_SPSR_WCOL)){
-				// save status
-				dataCfg->status = stat | SPI_STAT_ERROR;
-				return (dataCfg->counter);
-			}
-			// Read data from SPI dat
-			temp = (uint32_t) SPI_ReceiveData(SPIx);
-
-			// Store data to destination
-			if (dataCfg->rx_data != NULL)
-			{
-				if (dataword == 0){
-					*(rdata8) = (uint8_t) temp;
-					rdata8++;
-				} else {
-					*(rdata16) = (uint16_t) temp;
-					rdata16++;
-				}
-			}
-			// Increase counter
-			if (dataword == 0){
-				dataCfg->counter++;
-			} else {
-				dataCfg->counter += 2;
-			}
-		}
-
-		// Return length of actual data transferred
-		// save status
-		dataCfg->status = stat | SPI_STAT_DONE;
-		return (dataCfg->counter);
-	}
-	// Interrupt mode
-	else {
-
-		// Check if interrupt flag is already set
-		if(SPIx->SPINT & SPI_SPINT_INTFLAG){
-			SPIx->SPINT = SPI_SPINT_INTFLAG;
-		}
-		if (dataCfg->counter < dataCfg->length){
-			// Write data to buffer
-			if(dataCfg->tx_data == NULL){
-				if (dataword == 0){
-					SPI_SendData(SPIx, 0xFF);
-				} else {
-					SPI_SendData(SPIx, 0xFFFF);
-				}
-			} else {
-				if (dataword == 0){
-					SPI_SendData(SPIx, (*(uint8_t *)dataCfg->tx_data));
-				} else {
-					SPI_SendData(SPIx, (*(uint16_t *)dataCfg->tx_data));
-				}
-			}
-			SPI_IntCmd(SPIx, ENABLE);
-		} else {
-			// Save status
-			dataCfg->status = SPI_STAT_DONE;
-		}
-		return (0);
-	}
-}
-
-
-/********************************************************************//**
- * @brief 		Enable or disable SPIx interrupt.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @param[in]	NewState New state of specified UART interrupt type,
- * 				should be:
- * 				- ENALBE: Enable this SPI interrupt.
-* 				- DISALBE: Disable this SPI interrupt.
- * @return 		None
- *********************************************************************/
-void SPI_IntCmd(LPC_SPI_TypeDef *SPIx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		SPIx->SPCR |= SPI_SPCR_SPIE;
-	}
-	else
-	{
-		SPIx->SPCR &= (~SPI_SPCR_SPIE) & SPI_SPCR_BITMASK;
-	}
-}
-
-
-/********************************************************************//**
- * @brief 		Checks whether the SPI interrupt flag is set or not.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return 		The new state of SPI Interrupt Flag (SET or RESET)
- *********************************************************************/
-IntStatus SPI_GetIntStatus (LPC_SPI_TypeDef *SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	return ((SPIx->SPINT & SPI_SPINT_INTFLAG) ? SET : RESET);
-}
-
-/********************************************************************//**
- * @brief 		Clear SPI interrupt flag.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return 		None
- *********************************************************************/
-void SPI_ClearIntPending(LPC_SPI_TypeDef *SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	SPIx->SPINT = SPI_SPINT_INTFLAG;
-}
-
-/********************************************************************//**
- * @brief 		Get current value of SPI Status register in SPIx peripheral.
- * @param[in]	SPIx	SPI peripheral selected, should be LPC_SPI
- * @return		Current value of SPI Status register in SPI peripheral.
- * Note:	The return value of this function must be used with
- * 			SPI_CheckStatus() to determine current flag status
- * 			corresponding to each SPI status type. Because some flags in
- * 			SPI Status register will be cleared after reading, the next reading
- * 			SPI Status register could not be correct. So this function used to
- * 			read SPI status register in one time only, then the return value
- * 			used to check all flags.
- *********************************************************************/
-uint32_t SPI_GetStatus(LPC_SPI_TypeDef* SPIx)
-{
-	CHECK_PARAM(PARAM_SPIx(SPIx));
-
-	return (SPIx->SPSR & SPI_SPSR_BITMASK);
-}
-
-/********************************************************************//**
- * @brief 		Checks whether the specified SPI Status flag is set or not
- * 				via inputSPIStatus parameter.
- * @param[in]	inputSPIStatus Value to check status of each flag type.
- * 				This value is the return value from SPI_GetStatus().
- * @param[in]	SPIStatus	Specifies the SPI status flag to check,
- * 				should be one of the following:
-				- SPI_STAT_ABRT: Slave abort.
-				- SPI_STAT_MODF: Mode fault.
-				- SPI_STAT_ROVR: Read overrun.
-				- SPI_STAT_WCOL: Write collision.
-				- SPI_STAT_SPIF: SPI transfer complete.
- * @return 		The new state of SPIStatus (SET or RESET)
- *********************************************************************/
-FlagStatus SPI_CheckStatus (uint32_t inputSPIStatus,  uint8_t SPIStatus)
-{
-	CHECK_PARAM(PARAM_SPI_STAT(SPIStatus));
-
-	return ((inputSPIStatus & SPIStatus) ? SET : RESET);
-}
-
-
-/**
- * @}
- */
-
-#endif /* _SPI */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_ssp.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_ssp.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,691 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_ssp.c				2010-06-18
-*//**
-* @file		lpc17xx_ssp.c
-* @brief	Contains all functions support for SSP firmware library on LPC17xx
-* @version	3.0
-* @date		18. June. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup SSP
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_ssp.h"
-#include "lpc17xx_clkpwr.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _SSP
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup SSP_Public_Functions
- * @{
- */
-static void setSSPclock (LPC_SSP_TypeDef *SSPx, uint32_t target_clock);
-
-/*********************************************************************//**
- * @brief 		Setup clock rate for SSP device
- * @param[in] 	SSPx	SSP peripheral definition, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	target_clock : clock of SSP (Hz)
- * @return 		None
- ***********************************************************************/
-static void setSSPclock (LPC_SSP_TypeDef *SSPx, uint32_t target_clock)
-{
-    uint32_t prescale, cr0_div, cmp_clk, ssp_clk;
-
-    CHECK_PARAM(PARAM_SSPx(SSPx));
-
-    /* The SSP clock is derived from the (main system oscillator / 2),
-       so compute the best divider from that clock */
-    if (SSPx == LPC_SSP0){
-    	ssp_clk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_SSP0);
-    } else if (SSPx == LPC_SSP1) {
-    	ssp_clk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_SSP1);
-    } else {
-    	return;
-    }
-
-	/* Find closest divider to get at or under the target frequency.
-	   Use smallest prescale possible and rely on the divider to get
-	   the closest target frequency */
-	cr0_div = 0;
-	cmp_clk = 0xFFFFFFFF;
-	prescale = 2;
-	while (cmp_clk > target_clock)
-	{
-		cmp_clk = ssp_clk / ((cr0_div + 1) * prescale);
-		if (cmp_clk > target_clock)
-		{
-			cr0_div++;
-			if (cr0_div > 0xFF)
-			{
-				cr0_div = 0;
-				prescale += 2;
-			}
-		}
-	}
-
-    /* Write computed prescaler and divider back to register */
-    SSPx->CR0 &= (~SSP_CR0_SCR(0xFF)) & SSP_CR0_BITMASK;
-    SSPx->CR0 |= (SSP_CR0_SCR(cr0_div)) & SSP_CR0_BITMASK;
-    SSPx->CPSR = prescale & SSP_CPSR_BITMASK;
-}
-
-/**
- * @}
- */
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup SSP_Public_Functions
- * @{
- */
-
-/********************************************************************//**
- * @brief		Initializes the SSPx peripheral according to the specified
-*               parameters in the SSP_ConfigStruct.
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 				 		- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	SSP_ConfigStruct Pointer to a SSP_CFG_Type structure
-*                    that contains the configuration information for the
-*                    specified SSP peripheral.
- * @return 		None
- *********************************************************************/
-void SSP_Init(LPC_SSP_TypeDef *SSPx, SSP_CFG_Type *SSP_ConfigStruct)
-{
-	uint32_t tmp;
-
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-
-	if(SSPx == LPC_SSP0) {
-		/* Set up clock and power for SSP0 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP0, ENABLE);
-	} else if(SSPx == LPC_SSP1) {
-		/* Set up clock and power for SSP1 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP1, ENABLE);
-	} else {
-		return;
-	}
-
-	/* Configure SSP, interrupt is disable, LoopBack mode is disable,
-	 * SSP is disable, Slave output is disable as default
-	 */
-	tmp = ((SSP_ConfigStruct->CPHA) | (SSP_ConfigStruct->CPOL) \
-		| (SSP_ConfigStruct->FrameFormat) | (SSP_ConfigStruct->Databit))
-		& SSP_CR0_BITMASK;
-	// write back to SSP control register
-	SSPx->CR0 = tmp;
-
-	tmp = SSP_ConfigStruct->Mode & SSP_CR1_BITMASK;
-	// Write back to CR1
-	SSPx->CR1 = tmp;
-
-	// Set clock rate for SSP peripheral
-	setSSPclock(SSPx, SSP_ConfigStruct->ClockRate);
-}
-
-/*********************************************************************//**
- * @brief		De-initializes the SSPx peripheral registers to their
-*                  default reset values.
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 				 		- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @return 		None
- **********************************************************************/
-void SSP_DeInit(LPC_SSP_TypeDef* SSPx)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-
-	if (SSPx == LPC_SSP0){
-		/* Set up clock and power for SSP0 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP0, DISABLE);
-	} else if (SSPx == LPC_SSP1) {
-		/* Set up clock and power for SSP1 module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP1, DISABLE);
-	}
-}
-
-/*****************************************************************************//**
-* @brief		Get data size bit selected
-* @param[in]	SSPx pointer to LPC_SSP_TypeDef structure, should be:
-* 				- LPC_SSP0: SSP0 peripheral
-* 				- LPC_SSP1: SSP1 peripheral
-* @return		Data size, could be:
-*				- SSP_DATABIT_4: 4 bit transfer
-*				- SSP_DATABIT_5: 5 bit transfer
-*				...
-*				- SSP_DATABIT_16: 16 bit transfer
-*******************************************************************************/
-uint8_t SSP_GetDataSize(LPC_SSP_TypeDef* SSPx)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	return (SSPx->CR0 & (0xF));
-}
-
-/*****************************************************************************//**
-* @brief		Fills each SSP_InitStruct member with its default value:
-* 				- CPHA = SSP_CPHA_FIRST
-* 				- CPOL = SSP_CPOL_HI
-* 				- ClockRate = 1000000
-* 				- Databit = SSP_DATABIT_8
-* 				- Mode = SSP_MASTER_MODE
-* 				- FrameFormat = SSP_FRAME_SSP
-* @param[in]	SSP_InitStruct Pointer to a SSP_CFG_Type structure
-*                    which will be initialized.
-* @return		None
-*******************************************************************************/
-void SSP_ConfigStructInit(SSP_CFG_Type *SSP_InitStruct)
-{
-	SSP_InitStruct->CPHA = SSP_CPHA_FIRST;
-	SSP_InitStruct->CPOL = SSP_CPOL_HI;
-	SSP_InitStruct->ClockRate = 1000000;
-	SSP_InitStruct->Databit = SSP_DATABIT_8;
-	SSP_InitStruct->Mode = SSP_MASTER_MODE;
-	SSP_InitStruct->FrameFormat = SSP_FRAME_SPI;
-}
-
-
-/*********************************************************************//**
- * @brief		Enable or disable SSP peripheral's operation
- * @param[in]	SSPx	SSP peripheral, should be:
- * 				- LPC_SSP0: SSP0 peripheral
- * 				- LPC_SSP1: SSP1 peripheral
- * @param[in]	NewState New State of SSPx peripheral's operation
- * @return 		none
- **********************************************************************/
-void SSP_Cmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		SSPx->CR1 |= SSP_CR1_SSP_EN;
-	}
-	else
-	{
-		SSPx->CR1 &= (~SSP_CR1_SSP_EN) & SSP_CR1_BITMASK;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Enable or disable Loop Back mode function in SSP peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- *  					- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	NewState	New State of Loop Back mode, should be:
- * 							- ENABLE: Enable this function
- * 							- DISABLE: Disable this function
- * @return 		None
- **********************************************************************/
-void SSP_LoopBackCmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		SSPx->CR1 |= SSP_CR1_LBM_EN;
-	}
-	else
-	{
-		SSPx->CR1 &= (~SSP_CR1_LBM_EN) & SSP_CR1_BITMASK;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Enable or disable Slave Output function in SSP peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	NewState	New State of Slave Output function, should be:
- * 							- ENABLE: Slave Output in normal operation
- * 							- DISABLE: Slave Output is disabled. This blocks
- * 							SSP controller from driving the transmit data
- * 							line (MISO)
- * Note: 		This function is available when SSP peripheral in Slave mode
- * @return 		None
- **********************************************************************/
-void SSP_SlaveOutputCmd(LPC_SSP_TypeDef* SSPx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		SSPx->CR1 &= (~SSP_CR1_SO_DISABLE) & SSP_CR1_BITMASK;
-	}
-	else
-	{
-		SSPx->CR1 |= SSP_CR1_SO_DISABLE;
-	}
-}
-
-
-
-/*********************************************************************//**
- * @brief		Transmit a single data through SSPx peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	Data	Data to transmit (must be 16 or 8-bit long,
- * 						this depend on SSP data bit number configured)
- * @return 		none
- **********************************************************************/
-void SSP_SendData(LPC_SSP_TypeDef* SSPx, uint16_t Data)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-
-	SSPx->DR = SSP_DR_BITMASK(Data);
-}
-
-
-
-/*********************************************************************//**
- * @brief		Receive a single data from SSPx peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @return 		Data received (16-bit long)
- **********************************************************************/
-uint16_t SSP_ReceiveData(LPC_SSP_TypeDef* SSPx)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-
-	return ((uint16_t) (SSP_DR_BITMASK(SSPx->DR)));
-}
-
-/*********************************************************************//**
- * @brief 		SSP Read write data function
- * @param[in]	SSPx 	Pointer to SSP peripheral, should be
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	dataCfg	Pointer to a SSP_DATA_SETUP_Type structure that
- * 						contains specified information about transmit
- * 						data configuration.
- * @param[in]	xfType	Transfer type, should be:
- * 						- SSP_TRANSFER_POLLING: Polling mode
- * 						- SSP_TRANSFER_INTERRUPT: Interrupt mode
- * @return 		Actual Data length has been transferred in polling mode.
- * 				In interrupt mode, always return (0)
- * 				Return (-1) if error.
- * Note: This function can be used in both master and slave mode.
- ***********************************************************************/
-int32_t SSP_ReadWrite (LPC_SSP_TypeDef *SSPx, SSP_DATA_SETUP_Type *dataCfg, \
-						SSP_TRANSFER_Type xfType)
-{
-	uint8_t *rdata8 = NULL;
-    uint8_t *wdata8 = NULL;
-	uint16_t *rdata16 = NULL;
-    uint16_t *wdata16 = NULL;
-    uint32_t stat;
-    uint32_t tmp;
-    int32_t dataword;
-
-    dataCfg->rx_cnt = 0;
-    dataCfg->tx_cnt = 0;
-    dataCfg->status = 0;
-
-
-	/* Clear all remaining data in RX FIFO */
-	while (SSPx->SR & SSP_SR_RNE){
-		tmp = (uint32_t) SSP_ReceiveData(SSPx);
-	}
-
-	// Clear status
-	SSPx->ICR = SSP_ICR_BITMASK;
-	if(SSP_GetDataSize(SSPx)>8)
-		dataword = 1;
-	else dataword = 0;
-
-	// Polling mode ----------------------------------------------------------------------
-	if (xfType == SSP_TRANSFER_POLLING){
-		if (dataword == 0){
-			rdata8 = (uint8_t *)dataCfg->rx_data;
-			wdata8 = (uint8_t *)dataCfg->tx_data;
-		} else {
-			rdata16 = (uint16_t *)dataCfg->rx_data;
-			wdata16 = (uint16_t *)dataCfg->tx_data;
-		}
-		while ((dataCfg->tx_cnt != dataCfg->length) || (dataCfg->rx_cnt != dataCfg->length)){
-			if ((SSPx->SR & SSP_SR_TNF) && (dataCfg->tx_cnt != dataCfg->length)){
-				// Write data to buffer
-				if(dataCfg->tx_data == NULL){
-					if (dataword == 0){
-						SSP_SendData(SSPx, 0xFF);
-						dataCfg->tx_cnt++;
-					} else {
-						SSP_SendData(SSPx, 0xFFFF);
-						dataCfg->tx_cnt += 2;
-					}
-				} else {
-					if (dataword == 0){
-						SSP_SendData(SSPx, *wdata8);
-						wdata8++;
-						dataCfg->tx_cnt++;
-					} else {
-						SSP_SendData(SSPx, *wdata16);
-						wdata16++;
-						dataCfg->tx_cnt += 2;
-					}
-				}
-			}
-
-			// Check overrun error
-			if ((stat = SSPx->RIS) & SSP_RIS_ROR){
-				// save status and return
-				dataCfg->status = stat | SSP_STAT_ERROR;
-				return (-1);
-			}
-
-			// Check for any data available in RX FIFO
-			while ((SSPx->SR & SSP_SR_RNE) && (dataCfg->rx_cnt != dataCfg->length)){
-				// Read data from SSP data
-				tmp = SSP_ReceiveData(SSPx);
-
-				// Store data to destination
-				if (dataCfg->rx_data != NULL)
-				{
-					if (dataword == 0){
-						*(rdata8) = (uint8_t) tmp;
-						rdata8++;
-					} else {
-						*(rdata16) = (uint16_t) tmp;
-						rdata16++;
-					}
-				}
-				// Increase counter
-				if (dataword == 0){
-					dataCfg->rx_cnt++;
-				} else {
-					dataCfg->rx_cnt += 2;
-				}
-			}
-		}
-
-		// save status
-		dataCfg->status = SSP_STAT_DONE;
-
-		if (dataCfg->tx_data != NULL){
-			return dataCfg->tx_cnt;
-		} else if (dataCfg->rx_data != NULL){
-			return dataCfg->rx_cnt;
-		} else {
-			return (0);
-		}
-	}
-
-	// Interrupt mode ----------------------------------------------------------------------
-	else if (xfType == SSP_TRANSFER_INTERRUPT){
-
-		while ((SSPx->SR & SSP_SR_TNF) && (dataCfg->tx_cnt != dataCfg->length)){
-			// Write data to buffer
-			if(dataCfg->tx_data == NULL){
-				if (dataword == 0){
-					SSP_SendData(SSPx, 0xFF);
-					dataCfg->tx_cnt++;
-				} else {
-					SSP_SendData(SSPx, 0xFFFF);
-					dataCfg->tx_cnt += 2;
-				}
-			} else {
-				if (dataword == 0){
-					SSP_SendData(SSPx, (*(uint8_t *)((uint32_t)dataCfg->tx_data + dataCfg->tx_cnt)));
-					dataCfg->tx_cnt++;
-				} else {
-					SSP_SendData(SSPx, (*(uint16_t *)((uint32_t)dataCfg->tx_data + dataCfg->tx_cnt)));
-					dataCfg->tx_cnt += 2;
-				}
-			}
-
-			// Check error
-			if ((stat = SSPx->RIS) & SSP_RIS_ROR){
-				// save status and return
-				dataCfg->status = stat | SSP_STAT_ERROR;
-				return (-1);
-			}
-
-			// Check for any data available in RX FIFO
-			while ((SSPx->SR & SSP_SR_RNE) && (dataCfg->rx_cnt != dataCfg->length)){
-				// Read data from SSP data
-				tmp = SSP_ReceiveData(SSPx);
-
-				// Store data to destination
-				if (dataCfg->rx_data != NULL)
-				{
-					if (dataword == 0){
-						*(uint8_t *)((uint32_t)dataCfg->rx_data + dataCfg->rx_cnt) = (uint8_t) tmp;
-					} else {
-						*(uint16_t *)((uint32_t)dataCfg->rx_data + dataCfg->rx_cnt) = (uint16_t) tmp;
-					}
-				}
-				// Increase counter
-				if (dataword == 0){
-					dataCfg->rx_cnt++;
-				} else {
-					dataCfg->rx_cnt += 2;
-				}
-			}
-		}
-
-		// If there more data to sent or receive
-		if ((dataCfg->rx_cnt != dataCfg->length) || (dataCfg->tx_cnt != dataCfg->length)){
-			// Enable all interrupt
-			SSPx->IMSC = SSP_IMSC_BITMASK;
-		} else {
-			// Save status
-			dataCfg->status = SSP_STAT_DONE;
-		}
-		return (0);
-	}
-
-	return (-1);
-}
-
-/*********************************************************************//**
- * @brief		Checks whether the specified SSP status flag is set or not
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 		 				- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	FlagType	Type of flag to check status, should be one
- * 							of following:
- *							- SSP_STAT_TXFIFO_EMPTY: TX FIFO is empty
- *							- SSP_STAT_TXFIFO_NOTFULL: TX FIFO is not full
- *							- SSP_STAT_RXFIFO_NOTEMPTY: RX FIFO is not empty
- *							- SSP_STAT_RXFIFO_FULL: RX FIFO is full
- *							- SSP_STAT_BUSY: SSP peripheral is busy
- * @return		New State of specified SSP status flag
- **********************************************************************/
-FlagStatus SSP_GetStatus(LPC_SSP_TypeDef* SSPx, uint32_t FlagType)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_SSP_STAT(FlagType));
-
-	return ((SSPx->SR & FlagType) ? SET : RESET);
-}
-
-/*********************************************************************//**
- * @brief		Enable or disable specified interrupt type in SSP peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	IntType	Interrupt type in SSP peripheral, should be:
- * 				- SSP_INTCFG_ROR: Receive Overrun interrupt
- * 				- SSP_INTCFG_RT: Receive Time out interrupt
- * 				- SSP_INTCFG_RX: RX FIFO is at least half full interrupt
- * 				- SSP_INTCFG_TX: TX FIFO is at least half empty interrupt
- * @param[in]	NewState New State of specified interrupt type, should be:
- * 				- ENABLE: Enable this interrupt type
- * 				- DISABLE: Disable this interrupt type
- * @return		None
- * Note: We can enable/disable multi-interrupt type by OR multi value
- **********************************************************************/
-void SSP_IntConfig(LPC_SSP_TypeDef *SSPx, uint32_t IntType, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-
-	if (NewState == ENABLE)
-	{
-		SSPx->IMSC |= IntType;
-	}
-	else
-	{
-		SSPx->IMSC &= (~IntType) & SSP_IMSC_BITMASK;
-	}
-}
-
-/*********************************************************************//**
- * @brief	Check whether the specified Raw interrupt status flag is
- * 			set or not
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	RawIntType	Raw Interrupt Type, should be:
- * 				- SSP_INTSTAT_RAW_ROR: Receive Overrun interrupt
- * 				- SSP_INTSTAT_RAW_RT: Receive Time out interrupt
- * 				- SSP_INTSTAT_RAW_RX: RX FIFO is at least half full interrupt
- * 				- SSP_INTSTAT_RAW_TX: TX FIFO is at least half empty interrupt
- * @return	New State of specified Raw interrupt status flag in SSP peripheral
- * Note: Enabling/Disabling specified interrupt in SSP peripheral does not
- * 		effect to Raw Interrupt Status flag.
- **********************************************************************/
-IntStatus SSP_GetRawIntStatus(LPC_SSP_TypeDef *SSPx, uint32_t RawIntType)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_SSP_INTSTAT_RAW(RawIntType));
-
-	return ((SSPx->RIS & RawIntType) ? SET : RESET);
-}
-
-/*********************************************************************//**
- * @brief		Get Raw Interrupt Status register
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @return		Raw Interrupt Status (RIS) register value
- **********************************************************************/
-uint32_t SSP_GetRawIntStatusReg(LPC_SSP_TypeDef *SSPx)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	return (SSPx->RIS);
-}
-
-/*********************************************************************//**
- * @brief	Check whether the specified interrupt status flag is
- * 			set or not
- * @param[in]	SSPx	SSP peripheral selected, should be:
- * 						- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	IntType	Raw Interrupt Type, should be:
- * 				- SSP_INTSTAT_ROR: Receive Overrun interrupt
- * 				- SSP_INTSTAT_RT: Receive Time out interrupt
- * 				- SSP_INTSTAT_RX: RX FIFO is at least half full interrupt
- * 				- SSP_INTSTAT_TX: TX FIFO is at least half empty interrupt
- * @return	New State of specified interrupt status flag in SSP peripheral
- * Note: Enabling/Disabling specified interrupt in SSP peripheral effects
- * 			to Interrupt Status flag.
- **********************************************************************/
-IntStatus SSP_GetIntStatus (LPC_SSP_TypeDef *SSPx, uint32_t IntType)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_SSP_INTSTAT(IntType));
-
-	return ((SSPx->MIS & IntType) ? SET :RESET);
-}
-
-/*********************************************************************//**
- * @brief				Clear specified interrupt pending in SSP peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- *  					- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	IntType	Interrupt pending to clear, should be:
- * 						- SSP_INTCLR_ROR: clears the "frame was received when
- * 						RxFIFO was full" interrupt.
- * 						- SSP_INTCLR_RT: clears the "Rx FIFO was not empty and
- * 						has not been read for a timeout period" interrupt.
- * @return		None
- **********************************************************************/
-void SSP_ClearIntPending(LPC_SSP_TypeDef *SSPx, uint32_t IntType)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_SSP_INTCLR(IntType));
-
-	SSPx->ICR = IntType;
-}
-
-/*********************************************************************//**
- * @brief				Enable/Disable DMA function for SSP peripheral
- * @param[in]	SSPx	SSP peripheral selected, should be:
- *  					- LPC_SSP0: SSP0 peripheral
- * 						- LPC_SSP1: SSP1 peripheral
- * @param[in]	DMAMode	Type of DMA, should be:
- * 						- SSP_DMA_TX: DMA for the transmit FIFO
- * 						- SSP_DMA_RX: DMA for the Receive FIFO
- * @param[in]	NewState	New State of DMA function on SSP peripheral,
- * 						should be:
- * 						- ENALBE: Enable this function
- * 						- DISABLE: Disable this function
- * @return		None
- **********************************************************************/
-void SSP_DMACmd(LPC_SSP_TypeDef *SSPx, uint32_t DMAMode, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_SSPx(SSPx));
-	CHECK_PARAM(PARAM_SSP_DMA(DMAMode));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		SSPx->DMACR |= DMAMode;
-	}
-	else
-	{
-		SSPx->DMACR &= (~DMAMode) & SSP_DMA_BITMASK;
-	}
-}
-
-/**
- * @}
- */
-
-#endif /* _SSP */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_systick.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_systick.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_systick.c				2010-05-21
-*//**
-* @file		lpc17xx_systick.c
-* @brief	Contains all functions support for SYSTICK firmware library
-* 			on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup SYSTICK
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_systick.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _SYSTICK
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup SYSTICK_Public_Functions
- * @{
- */
-/*********************************************************************//**
- * @brief 		Initial System Tick with using internal CPU clock source
- * @param[in]	time	time interval(ms)
- * @return 		None
- **********************************************************************/
-void SYSTICK_InternalInit(uint32_t time)
-{
-	uint32_t cclk;
-	float maxtime;
-
-	cclk = SystemCoreClock;
-	/* With internal CPU clock frequency for LPC17xx is 'SystemCoreClock'
-	 * And limit 24 bit for RELOAD value
-	 * So the maximum time can be set:
-	 * 1/SystemCoreClock * (2^24) * 1000 (ms)
-	 */
-	//check time value is available or not
-	maxtime = (1<<24)/(SystemCoreClock / 1000) ;
-	if(time > maxtime)
-		//Error loop
-		while(1);
-	else
-	{
-		//Select CPU clock is System Tick clock source
-		SysTick->CTRL |= ST_CTRL_CLKSOURCE;
-		/* Set RELOAD value
-		 * RELOAD = (SystemCoreClock/1000) * time - 1
-		 * with time base is millisecond
-		 */
-		SysTick->LOAD = (cclk/1000)*time - 1;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Initial System Tick with using external clock source
- * @param[in]	freq	external clock frequency(Hz)
- * @param[in]	time	time interval(ms)
- * @return 		None
- **********************************************************************/
-void SYSTICK_ExternalInit(uint32_t freq, uint32_t time)
-{
-	float maxtime;
-
-	/* With external clock frequency for LPC17xx is 'freq'
-	 * And limit 24 bit for RELOAD value
-	 * So the maximum time can be set:
-	 * 1/freq * (2^24) * 1000 (ms)
-	 */
-	//check time value is available or not
-	maxtime = (1<<24)/(freq / 1000) ;
-	if (time>maxtime)
-		//Error Loop
-		while(1);
-	else
-	{
-		//Select external clock is System Tick clock source
-		SysTick->CTRL &= ~ ST_CTRL_CLKSOURCE;
-		/* Set RELOAD value
-		 * RELOAD = (freq/1000) * time - 1
-		 * with time base is millisecond
-		 */
-		maxtime = (freq/1000)*time - 1;
-		SysTick->LOAD = (freq/1000)*time - 1;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Enable/disable System Tick counter
- * @param[in]	NewState	System Tick counter status, should be:
- * 					- ENABLE
- * 					- DISABLE
- * @return 		None
- **********************************************************************/
-void SYSTICK_Cmd(FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if(NewState == ENABLE)
-		//Enable System Tick counter
-		SysTick->CTRL |= ST_CTRL_ENABLE;
-	else
-		//Disable System Tick counter
-		SysTick->CTRL &= ~ST_CTRL_ENABLE;
-}
-
-/*********************************************************************//**
- * @brief 		Enable/disable System Tick interrupt
- * @param[in]	NewState	System Tick interrupt status, should be:
- * 					- ENABLE
- * 					- DISABLE
- * @return 		None
- **********************************************************************/
-void SYSTICK_IntCmd(FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if(NewState == ENABLE)
-		//Enable System Tick counter
-		SysTick->CTRL |= ST_CTRL_TICKINT;
-	else
-		//Disable System Tick counter
-		SysTick->CTRL &= ~ST_CTRL_TICKINT;
-}
-
-/*********************************************************************//**
- * @brief 		Get current value of System Tick counter
- * @param[in]	None
- * @return 		current value of System Tick counter
- **********************************************************************/
-uint32_t SYSTICK_GetCurrentValue(void)
-{
-	return (SysTick->VAL);
-}
-
-/*********************************************************************//**
- * @brief 		Clear Counter flag
- * @param[in]	None
- * @return 		None
- **********************************************************************/
-void SYSTICK_ClearCounterFlag(void)
-{
-	SysTick->CTRL &= ~ST_CTRL_COUNTFLAG;
-}
-/**
- * @}
- */
-
-#endif /* _SYSTICK */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_timer.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_timer.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,606 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_timer.c				2011-03-10
-*//**
-* @file		lpc17xx_timer.c
-* @brief	Contains all functions support for Timer firmware library
-* 			on LPC17xx
-* @version	3.1
-* @date		10. March. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup TIM
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_timer.h"
-#include "lpc17xx_clkpwr.h"
-#include "lpc17xx_pinsel.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-#ifdef _TIM
-
-/* Private Functions ---------------------------------------------------------- */
-
-static uint32_t getPClock (uint32_t timernum);
-static uint32_t converUSecToVal (uint32_t timernum, uint32_t usec);
-static uint32_t converPtrToTimeNum (LPC_TIM_TypeDef *TIMx);
-
-
-/*********************************************************************//**
- * @brief 		Get peripheral clock of each timer controller
- * @param[in]	timernum Timer number
- * @return 		Peripheral clock of timer
- **********************************************************************/
-static uint32_t getPClock (uint32_t timernum)
-{
-	uint32_t clkdlycnt = 0;
-	switch (timernum)
-	{
-	case 0:
-		clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER0);
-		break;
-
-	case 1:
-		clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER1);
-		break;
-
-	case 2:
-		clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER2);
-		break;
-
-	case 3:
-		clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER3);
-		break;
-	}
-	return clkdlycnt;
-}
-
-
-/*********************************************************************//**
- * @brief 		Convert a time to a timer count value
- * @param[in]	timernum Timer number
- * @param[in]	usec Time in microseconds
- * @return 		The number of required clock ticks to give the time delay
- **********************************************************************/
-uint32_t converUSecToVal (uint32_t timernum, uint32_t usec)
-{
-	uint64_t clkdlycnt;
-
-	// Get Pclock of timer
-	clkdlycnt = (uint64_t) getPClock(timernum);
-
-	clkdlycnt = (clkdlycnt * usec) / 1000000;
-	return (uint32_t) clkdlycnt;
-}
-
-
-/*********************************************************************//**
- * @brief 		Convert a timer register pointer to a timer number
- * @param[in]	TIMx Pointer to LPC_TIM_TypeDef, should be:
- * 				- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @return 		The timer number (0 to 3) or -1 if register pointer is bad
- **********************************************************************/
-uint32_t converPtrToTimeNum (LPC_TIM_TypeDef *TIMx)
-{
-	uint32_t tnum = (uint32_t)-1;
-
-	if (TIMx == LPC_TIM0)
-	{
-		tnum = 0;
-	}
-	else if (TIMx == LPC_TIM1)
-	{
-		tnum = 1;
-	}
-	else if (TIMx == LPC_TIM2)
-	{
-		tnum = 2;
-	}
-	else if (TIMx == LPC_TIM3)
-	{
-		tnum = 3;
-	}
-
-	return tnum;
-}
-
-/* End of Private Functions ---------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup TIM_Public_Functions
- * @{
- */
-
-/*********************************************************************//**
- * @brief 		Get Interrupt Status
- * @param[in]	TIMx Timer selection, should be:
- *   			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	IntFlag: interrupt type, should be:
- * 				- TIM_MR0_INT: Interrupt for Match channel 0
- * 				- TIM_MR1_INT: Interrupt for Match channel 1
- * 				- TIM_MR2_INT: Interrupt for Match channel 2
- * 				- TIM_MR3_INT: Interrupt for Match channel 3
- * 				- TIM_CR0_INT: Interrupt for Capture channel 0
- * 				- TIM_CR1_INT: Interrupt for Capture channel 1
- * @return 		FlagStatus
- * 				- SET : interrupt
- * 				- RESET : no interrupt
- **********************************************************************/
-FlagStatus TIM_GetIntStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)
-{
-	uint8_t temp;
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag));
-	temp = (TIMx->IR)& TIM_IR_CLR(IntFlag);
-	if (temp)
-		return SET;
-
-	return RESET;
-
-}
-/*********************************************************************//**
- * @brief 		Get Capture Interrupt Status
- * @param[in]	TIMx Timer selection, should be:
- *  	   		- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	IntFlag: interrupt type, should be:
- * 				- TIM_MR0_INT: Interrupt for Match channel 0
- * 				- TIM_MR1_INT: Interrupt for Match channel 1
- * 				- TIM_MR2_INT: Interrupt for Match channel 2
- * 				- TIM_MR3_INT: Interrupt for Match channel 3
- * 				- TIM_CR0_INT: Interrupt for Capture channel 0
- * 				- TIM_CR1_INT: Interrupt for Capture channel 1
- * @return 		FlagStatus
- * 				- SET : interrupt
- * 				- RESET : no interrupt
- **********************************************************************/
-FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)
-{
-	uint8_t temp;
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag));
-	temp = (TIMx->IR) & (1<<(4+IntFlag));
-	if(temp)
-		return SET;
-	return RESET;
-}
-/*********************************************************************//**
- * @brief 		Clear Interrupt pending
- * @param[in]	TIMx Timer selection, should be:
- *    			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	IntFlag: interrupt type, should be:
- * 				- TIM_MR0_INT: Interrupt for Match channel 0
- * 				- TIM_MR1_INT: Interrupt for Match channel 1
- * 				- TIM_MR2_INT: Interrupt for Match channel 2
- * 				- TIM_MR3_INT: Interrupt for Match channel 3
- * 				- TIM_CR0_INT: Interrupt for Capture channel 0
- * 				- TIM_CR1_INT: Interrupt for Capture channel 1
- * @return 		None
- **********************************************************************/
-void TIM_ClearIntPending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag));
-	TIMx->IR = TIM_IR_CLR(IntFlag);
-}
-
-/*********************************************************************//**
- * @brief 		Clear Capture Interrupt pending
- * @param[in]	TIMx Timer selection, should be
- *    			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	IntFlag interrupt type, should be:
- *				- TIM_MR0_INT: Interrupt for Match channel 0
- * 				- TIM_MR1_INT: Interrupt for Match channel 1
- * 				- TIM_MR2_INT: Interrupt for Match channel 2
- * 				- TIM_MR3_INT: Interrupt for Match channel 3
- * 				- TIM_CR0_INT: Interrupt for Capture channel 0
- * 				- TIM_CR1_INT: Interrupt for Capture channel 1
- * @return 		None
- **********************************************************************/
-void TIM_ClearIntCapturePending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag));
-	TIMx->IR = (1<<(4+IntFlag));
-}
-
-/*********************************************************************//**
- * @brief 		Configuration for Timer at initial time
- * @param[in] 	TimerCounterMode timer counter mode, should be:
- * 				- TIM_TIMER_MODE: Timer mode
- * 				- TIM_COUNTER_RISING_MODE: Counter rising mode
- * 				- TIM_COUNTER_FALLING_MODE: Counter falling mode
- * 				- TIM_COUNTER_ANY_MODE:Counter on both edges
- * @param[in] 	TIM_ConfigStruct pointer to TIM_TIMERCFG_Type or
- * 				TIM_COUNTERCFG_Type
- * @return 		None
- **********************************************************************/
-void TIM_ConfigStructInit(TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct)
-{
-	if (TimerCounterMode == TIM_TIMER_MODE )
-	{
-		TIM_TIMERCFG_Type * pTimeCfg = (TIM_TIMERCFG_Type *)TIM_ConfigStruct;
-		pTimeCfg->PrescaleOption = TIM_PRESCALE_USVAL;
-		pTimeCfg->PrescaleValue = 1;
-	}
-	else
-	{
-		TIM_COUNTERCFG_Type * pCounterCfg = (TIM_COUNTERCFG_Type *)TIM_ConfigStruct;
-		pCounterCfg->CountInputSelect = TIM_COUNTER_INCAP0;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Initial Timer/Counter device
- * 				 	Set Clock frequency for Timer
- * 					Set initial configuration for Timer
- * @param[in]	TIMx  Timer selection, should be:
- * 				- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	TimerCounterMode Timer counter mode, should be:
- * 				- TIM_TIMER_MODE: Timer mode
- * 				- TIM_COUNTER_RISING_MODE: Counter rising mode
- * 				- TIM_COUNTER_FALLING_MODE: Counter falling mode
- * 				- TIM_COUNTER_ANY_MODE:Counter on both edges
- * @param[in]	TIM_ConfigStruct pointer to TIM_TIMERCFG_Type
- * 				that contains the configuration information for the
- *                    specified Timer peripheral.
- * @return 		None
- **********************************************************************/
-void TIM_Init(LPC_TIM_TypeDef *TIMx, TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct)
-{
-	TIM_TIMERCFG_Type *pTimeCfg;
-	TIM_COUNTERCFG_Type *pCounterCfg;
-
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_MODE_OPT(TimerCounterMode));
-
-	//set power
-
-	if (TIMx== LPC_TIM0)
-	{
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM0, ENABLE);
-		//PCLK_Timer0 = CCLK/4
-		CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER0, CLKPWR_PCLKSEL_CCLK_DIV_4);
-	}
-	else if (TIMx== LPC_TIM1)
-	{
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM1, ENABLE);
-		//PCLK_Timer1 = CCLK/4
-		CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER1, CLKPWR_PCLKSEL_CCLK_DIV_4);
-
-	}
-
-	else if (TIMx== LPC_TIM2)
-	{
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, ENABLE);
-		//PCLK_Timer2= CCLK/4
-		CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER2, CLKPWR_PCLKSEL_CCLK_DIV_4);
-	}
-	else if (TIMx== LPC_TIM3)
-	{
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM3, ENABLE);
-		//PCLK_Timer3= CCLK/4
-		CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER3, CLKPWR_PCLKSEL_CCLK_DIV_4);
-
-	}
-
-	TIMx->CCR &= ~TIM_CTCR_MODE_MASK;
-	TIMx->CCR |= TIM_TIMER_MODE;
-
-	TIMx->TC =0;
-	TIMx->PC =0;
-	TIMx->PR =0;
-	TIMx->TCR |= (1<<1); //Reset Counter
-	TIMx->TCR &= ~(1<<1); //release reset
-	if (TimerCounterMode == TIM_TIMER_MODE )
-	{
-		pTimeCfg = (TIM_TIMERCFG_Type *)TIM_ConfigStruct;
-		if (pTimeCfg->PrescaleOption  == TIM_PRESCALE_TICKVAL)
-		{
-			TIMx->PR   = pTimeCfg->PrescaleValue -1  ;
-		}
-		else
-		{
-			TIMx->PR   = converUSecToVal (converPtrToTimeNum(TIMx),pTimeCfg->PrescaleValue)-1;
-		}
-	}
-	else
-	{
-
-		pCounterCfg = (TIM_COUNTERCFG_Type *)TIM_ConfigStruct;
-		TIMx->CCR  &= ~TIM_CTCR_INPUT_MASK;
-		if (pCounterCfg->CountInputSelect == TIM_COUNTER_INCAP1)
-			TIMx->CCR |= _BIT(2);
-	}
-
-	// Clear interrupt pending
-	TIMx->IR = 0xFFFFFFFF;
-
-}
-
-/*********************************************************************//**
- * @brief 		Close Timer/Counter device
- * @param[in]	TIMx  Pointer to timer device, should be:
- * 				- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @return 		None
- **********************************************************************/
-void TIM_DeInit (LPC_TIM_TypeDef *TIMx)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	// Disable timer/counter
-	TIMx->TCR = 0x00;
-
-	// Disable power
-	if (TIMx== LPC_TIM0)
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM0, DISABLE);
-
-	else if (TIMx== LPC_TIM1)
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM1, DISABLE);
-
-	else if (TIMx== LPC_TIM2)
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, DISABLE);
-
-	else if (TIMx== LPC_TIM3)
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, DISABLE);
-
-}
-
-/*********************************************************************//**
- * @brief	 	Start/Stop Timer/Counter device
- * @param[in]	TIMx Pointer to timer device, should be:
- *  			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	NewState
- * 				-	ENABLE  : set timer enable
- * 				-	DISABLE : disable timer
- * @return 		None
- **********************************************************************/
-void TIM_Cmd(LPC_TIM_TypeDef *TIMx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	if (NewState == ENABLE)
-	{
-		TIMx->TCR	|=  TIM_ENABLE;
-	}
-	else
-	{
-		TIMx->TCR &= ~TIM_ENABLE;
-	}
-}
-
-/*********************************************************************//**
- * @brief 		Reset Timer/Counter device,
- * 					Make TC and PC are synchronously reset on the next
- * 					positive edge of PCLK
- * @param[in]	TIMx Pointer to timer device, should be:
- *   			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @return 		None
- **********************************************************************/
-void TIM_ResetCounter(LPC_TIM_TypeDef *TIMx)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	TIMx->TCR |= TIM_RESET;
-	TIMx->TCR &= ~TIM_RESET;
-}
-
-/*********************************************************************//**
- * @brief 		Configuration for Match register
- * @param[in]	TIMx Pointer to timer device, should be:
- *   			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]   TIM_MatchConfigStruct Pointer to TIM_MATCHCFG_Type
- * 					- MatchChannel : choose channel 0 or 1
- * 					- IntOnMatch	 : if SET, interrupt will be generated when MRxx match
- * 									the value in TC
- * 					- StopOnMatch	 : if SET, TC and PC will be stopped whenM Rxx match
- * 									the value in TC
- * 					- ResetOnMatch : if SET, Reset on MR0 when MRxx match
- * 									the value in TC
- * 					-ExtMatchOutputType: Select output for external match
- * 						 +	 0:	Do nothing for external output pin if match
- *						 +   1:	Force external output pin to low if match
- *						 + 	 2: Force external output pin to high if match
- *						 + 	 3: Toggle external output pin if match
- *					MatchValue: Set the value to be compared with TC value
- * @return 		None
- **********************************************************************/
-void TIM_ConfigMatch(LPC_TIM_TypeDef *TIMx, TIM_MATCHCFG_Type *TIM_MatchConfigStruct)
-{
-
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_EXTMATCH_OPT(TIM_MatchConfigStruct->ExtMatchOutputType));
-
-	switch(TIM_MatchConfigStruct->MatchChannel)
-	{
-	case 0:
-		TIMx->MR0 = TIM_MatchConfigStruct->MatchValue;
-		break;
-	case 1:
-		TIMx->MR1 = TIM_MatchConfigStruct->MatchValue;
-		break;
-	case 2:
-		TIMx->MR2 = TIM_MatchConfigStruct->MatchValue;
-		break;
-	case 3:
-		TIMx->MR3 = TIM_MatchConfigStruct->MatchValue;
-		break;
-	default:
-		//Error match value
-		//Error loop
-		while(1);
-	}
-	//interrupt on MRn
-	TIMx->MCR &=~TIM_MCR_CHANNEL_MASKBIT(TIM_MatchConfigStruct->MatchChannel);
-
-	if (TIM_MatchConfigStruct->IntOnMatch)
-		TIMx->MCR |= TIM_INT_ON_MATCH(TIM_MatchConfigStruct->MatchChannel);
-
-	//reset on MRn
-	if (TIM_MatchConfigStruct->ResetOnMatch)
-		TIMx->MCR |= TIM_RESET_ON_MATCH(TIM_MatchConfigStruct->MatchChannel);
-
-	//stop on MRn
-	if (TIM_MatchConfigStruct->StopOnMatch)
-		TIMx->MCR |= TIM_STOP_ON_MATCH(TIM_MatchConfigStruct->MatchChannel);
-
-	// match output type
-
-	TIMx->EMR 	&= ~TIM_EM_MASK(TIM_MatchConfigStruct->MatchChannel);
-	TIMx->EMR   |= TIM_EM_SET(TIM_MatchConfigStruct->MatchChannel,TIM_MatchConfigStruct->ExtMatchOutputType);
-}
-/*********************************************************************//**
- * @brief 		Update Match value
- * @param[in]	TIMx Pointer to timer device, should be:
- *   			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	MatchChannel	Match channel, should be: 0..3
- * @param[in]	MatchValue		updated match value
- * @return 		None
- **********************************************************************/
-void TIM_UpdateMatchValue(LPC_TIM_TypeDef *TIMx,uint8_t MatchChannel, uint32_t MatchValue)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	switch(MatchChannel)
-	{
-	case 0:
-		TIMx->MR0 = MatchValue;
-		break;
-	case 1:
-		TIMx->MR1 = MatchValue;
-		break;
-	case 2:
-		TIMx->MR2 = MatchValue;
-		break;
-	case 3:
-		TIMx->MR3 = MatchValue;
-		break;
-	default:
-		//Error Loop
-		while(1);
-	}
-
-}
-/*********************************************************************//**
- * @brief 		Configuration for Capture register
- * @param[in]	TIMx Pointer to timer device, should be:
- *   			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * 					- CaptureChannel: set the channel to capture data
- * 					- RisingEdge    : if SET, Capture at rising edge
- * 					- FallingEdge	: if SET, Capture at falling edge
- * 					- IntOnCaption  : if SET, Capture generate interrupt
- * @param[in]   TIM_CaptureConfigStruct	Pointer to TIM_CAPTURECFG_Type
- * @return 		None
- **********************************************************************/
-void TIM_ConfigCapture(LPC_TIM_TypeDef *TIMx, TIM_CAPTURECFG_Type *TIM_CaptureConfigStruct)
-{
-
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	TIMx->CCR &= ~TIM_CCR_CHANNEL_MASKBIT(TIM_CaptureConfigStruct->CaptureChannel);
-
-	if (TIM_CaptureConfigStruct->RisingEdge)
-		TIMx->CCR |= TIM_CAP_RISING(TIM_CaptureConfigStruct->CaptureChannel);
-
-	if (TIM_CaptureConfigStruct->FallingEdge)
-		TIMx->CCR |= TIM_CAP_FALLING(TIM_CaptureConfigStruct->CaptureChannel);
-
-	if (TIM_CaptureConfigStruct->IntOnCaption)
-		TIMx->CCR |= TIM_INT_ON_CAP(TIM_CaptureConfigStruct->CaptureChannel);
-}
-
-/*********************************************************************//**
- * @brief 		Read value of capture register in timer/counter device
- * @param[in]	TIMx Pointer to timer/counter device, should be:
- *  			- LPC_TIM0: TIMER0 peripheral
- * 				- LPC_TIM1: TIMER1 peripheral
- * 				- LPC_TIM2: TIMER2 peripheral
- * 				- LPC_TIM3: TIMER3 peripheral
- * @param[in]	CaptureChannel: capture channel number, should be:
- * 				- TIM_COUNTER_INCAP0: CAPn.0 input pin for TIMERn
- * 				- TIM_COUNTER_INCAP1: CAPn.1 input pin for TIMERn
- * @return 		Value of capture register
- **********************************************************************/
-uint32_t TIM_GetCaptureValue(LPC_TIM_TypeDef *TIMx, TIM_COUNTER_INPUT_OPT CaptureChannel)
-{
-	CHECK_PARAM(PARAM_TIMx(TIMx));
-	CHECK_PARAM(PARAM_TIM_COUNTER_INPUT_OPT(CaptureChannel));
-
-	if(CaptureChannel==0)
-		return TIMx->CR0;
-	else
-		return TIMx->CR1;
-}
-
-/**
- * @}
- */
-
-#endif /* _TIMER */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_uart.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_uart.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1379 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_uart.c			2011-06-06
-*//**
-* @file		lpc17xx_uart.c
-* @brief	Contains all functions support for UART firmware library
-* 			on LPC17xx
-* @version	3.2
-* @date		25. July. 2011
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2011, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup UART
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_uart.h"
-#include "lpc17xx_clkpwr.h"
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _UART
-
-/* Private Functions ---------------------------------------------------------- */
-
-static Status uart_set_divisors(LPC_UART_TypeDef *UARTx, uint32_t baudrate);
-
-
-/*********************************************************************//**
- * @brief		Determines best dividers to get a target clock rate
- * @param[in]	UARTx	Pointer to selected UART peripheral, should be:
- * 				- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	baudrate Desired UART baud rate.
- * @return 		Error status, could be:
- * 				- SUCCESS
- * 				- ERROR
- **********************************************************************/
-static Status uart_set_divisors(LPC_UART_TypeDef *UARTx, uint32_t baudrate)
-{
-	Status errorStatus = ERROR;
-
-	uint32_t uClk = 0;
-	uint32_t d, m, bestd, bestm, tmp;
-	uint64_t best_divisor, divisor;
-	uint32_t current_error, best_error;
-	uint32_t recalcbaud;
-
-	/* get UART block clock */
-	if (UARTx == (LPC_UART_TypeDef *) LPC_UART0)
-	{
-		uClk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_UART0);
-	}
-	else if (UARTx == (LPC_UART_TypeDef *)LPC_UART1)
-	{
-		uClk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_UART1);
-	}
-	else if (UARTx == LPC_UART2)
-	{
-		uClk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_UART2);
-	}
-	else if (UARTx == LPC_UART3)
-	{
-		uClk = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_UART3);
-	}
-
-
-	/* In the Uart IP block, baud rate is calculated using FDR and DLL-DLM registers
-	* The formula is :
-	* BaudRate= uClk * (mulFracDiv/(mulFracDiv+dividerAddFracDiv) / (16 * (DLL)
-	* It involves floating point calculations. That's the reason the formulae are adjusted with
-	* Multiply and divide method.*/
-	/* The value of mulFracDiv and dividerAddFracDiv should comply to the following expressions:
-	* 0 < mulFracDiv <= 15, 0 <= dividerAddFracDiv <= 15 */
-	best_error = 0xFFFFFFFF; /* Worst case */
-	bestd = 0;
-	bestm = 0;
-	best_divisor = 0;
-	for (m = 1 ; m <= 15 ;m++)
-	{
-		for (d = 0 ; d < m ; d++)
-		{
-		  divisor = ((uint64_t)uClk<<28)*m/(baudrate*(m+d));
-		  current_error = divisor & 0xFFFFFFFF;
-
-		  tmp = divisor>>32;
-
-		  /* Adjust error */
-		  if(current_error > ((uint32_t)1<<31)){
-			current_error = -current_error;
-			tmp++;
-			}
-
-		  if(tmp<1 || tmp>65536) /* Out of range */
-		  continue;
-
-		  if( current_error < best_error){
-			best_error = current_error;
-			best_divisor = tmp;
-			bestd = d;
-			bestm = m;
-			if(best_error == 0) break;
-			}
-		} /* end of inner for loop */
-
-		if (best_error == 0)
-		  break;
-	} /* end of outer for loop  */
-
-	if(best_divisor == 0) return ERROR; /* can not find best match */
-
-	recalcbaud = (uClk>>4) * bestm/(best_divisor * (bestm + bestd));
-
-	/* reuse best_error to evaluate baud error*/
-	if(baudrate>recalcbaud) best_error = baudrate - recalcbaud;
-	else best_error = recalcbaud -baudrate;
-
-	best_error = best_error * 100 / baudrate;
-
-	if (best_error < UART_ACCEPTED_BAUDRATE_ERROR)
-		{
-			if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-			{
-				((LPC_UART1_TypeDef *)UARTx)->LCR |= UART_LCR_DLAB_EN;
-				((LPC_UART1_TypeDef *)UARTx)->/*DLIER.*/DLM = UART_LOAD_DLM(best_divisor);
-				((LPC_UART1_TypeDef *)UARTx)->/*RBTHDLR.*/DLL = UART_LOAD_DLL(best_divisor);
-				/* Then reset DLAB bit */
-				((LPC_UART1_TypeDef *)UARTx)->LCR &= (~UART_LCR_DLAB_EN) & UART_LCR_BITMASK;
-				((LPC_UART1_TypeDef *)UARTx)->FDR = (UART_FDR_MULVAL(bestm) \
-						| UART_FDR_DIVADDVAL(bestd)) & UART_FDR_BITMASK;
-			}
-			else
-			{
-				UARTx->LCR |= UART_LCR_DLAB_EN;
-				UARTx->/*DLIER.*/DLM = UART_LOAD_DLM(best_divisor);
-				UARTx->/*RBTHDLR.*/DLL = UART_LOAD_DLL(best_divisor);
-				/* Then reset DLAB bit */
-				UARTx->LCR &= (~UART_LCR_DLAB_EN) & UART_LCR_BITMASK;
-				UARTx->FDR = (UART_FDR_MULVAL(bestm) \
-						| UART_FDR_DIVADDVAL(bestd)) & UART_FDR_BITMASK;
-			}
-			errorStatus = SUCCESS;
-		}
-
-		return errorStatus;
-}
-
-/* End of Private Functions ---------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup UART_Public_Functions
- * @{
- */
-/* UART Init/DeInit functions -------------------------------------------------*/
-/********************************************************************//**
- * @brief		Initializes the UARTx peripheral according to the specified
- *               parameters in the UART_ConfigStruct.
- * @param[in]	UARTx	UART peripheral selected, should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	UART_ConfigStruct Pointer to a UART_CFG_Type structure
-*                    that contains the configuration information for the
-*                    specified UART peripheral.
- * @return 		None
- *********************************************************************/
-void UART_Init(LPC_UART_TypeDef *UARTx, UART_CFG_Type *UART_ConfigStruct)
-{
-	uint32_t tmp;
-
-	// For debug mode
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	CHECK_PARAM(PARAM_UART_DATABIT(UART_ConfigStruct->Databits));
-	CHECK_PARAM(PARAM_UART_STOPBIT(UART_ConfigStruct->Stopbits));
-	CHECK_PARAM(PARAM_UART_PARITY(UART_ConfigStruct->Parity));
-
-#ifdef _UART0
-	if(UARTx == (LPC_UART_TypeDef *) LPC_UART0)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART0, ENABLE);
-	}
-#endif
-
-#ifdef _UART1
-	if(((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART1, ENABLE);
-	}
-#endif
-
-#ifdef _UART2
-	if(UARTx == LPC_UART2)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, ENABLE);
-	}
-#endif
-
-#ifdef _UART3
-	if(UARTx == LPC_UART3)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART3, ENABLE);
-	}
-#endif
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		/* FIFOs are empty */
-		((LPC_UART1_TypeDef *)UARTx)->/*IIFCR.*/FCR = ( UART_FCR_FIFO_EN \
-				| UART_FCR_RX_RS | UART_FCR_TX_RS);
-		// Disable FIFO
-		((LPC_UART1_TypeDef *)UARTx)->/*IIFCR.*/FCR = 0;
-
-		// Dummy reading
-		while (((LPC_UART1_TypeDef *)UARTx)->LSR & UART_LSR_RDR)
-		{
-			tmp = ((LPC_UART1_TypeDef *)UARTx)->/*RBTHDLR.*/RBR;
-		}
-
-		((LPC_UART1_TypeDef *)UARTx)->TER = UART_TER_TXEN;
-		// Wait for current transmit complete
-		while (!(((LPC_UART1_TypeDef *)UARTx)->LSR & UART_LSR_THRE));
-		// Disable Tx
-		((LPC_UART1_TypeDef *)UARTx)->TER = 0;
-
-		// Disable interrupt
-		((LPC_UART1_TypeDef *)UARTx)->/*DLIER.*/IER = 0;
-		// Set LCR to default state
-		((LPC_UART1_TypeDef *)UARTx)->LCR = 0;
-		// Set ACR to default state
-		((LPC_UART1_TypeDef *)UARTx)->ACR = 0;
-		// Set Modem Control to default state
-		((LPC_UART1_TypeDef *)UARTx)->MCR = 0;
-		// Set RS485 control to default state
-		((LPC_UART1_TypeDef *)UARTx)->RS485CTRL = 0;
-		// Set RS485 delay timer to default state
-		((LPC_UART1_TypeDef *)UARTx)->RS485DLY = 0;
-		// Set RS485 addr match to default state
-		((LPC_UART1_TypeDef *)UARTx)->ADRMATCH = 0;
-		//Dummy Reading to Clear Status
-		tmp = ((LPC_UART1_TypeDef *)UARTx)->MSR;
-		tmp = ((LPC_UART1_TypeDef *)UARTx)->LSR;
-	}
-	else
-	{
-		/* FIFOs are empty */
-		UARTx->/*IIFCR.*/FCR = ( UART_FCR_FIFO_EN | UART_FCR_RX_RS | UART_FCR_TX_RS);
-		// Disable FIFO
-		UARTx->/*IIFCR.*/FCR = 0;
-
-		// Dummy reading
-		while (UARTx->LSR & UART_LSR_RDR)
-		{
-			tmp = UARTx->/*RBTHDLR.*/RBR;
-		}
-
-		UARTx->TER = UART_TER_TXEN;
-		// Wait for current transmit complete
-		while (!(UARTx->LSR & UART_LSR_THRE));
-		// Disable Tx
-		UARTx->TER = 0;
-
-		// Disable interrupt
-		UARTx->/*DLIER.*/IER = 0;
-		// Set LCR to default state
-		UARTx->LCR = 0;
-		// Set ACR to default state
-		UARTx->ACR = 0;
-		// Dummy reading
-		tmp = UARTx->LSR;
-	}
-
-	if (UARTx == LPC_UART3)
-	{
-		// Set IrDA to default state
-		UARTx->ICR = 0;
-	}
-
-	// Set Line Control register ----------------------------
-
-	uart_set_divisors(UARTx, (UART_ConfigStruct->Baud_rate));
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		tmp = (((LPC_UART1_TypeDef *)UARTx)->LCR & (UART_LCR_DLAB_EN | UART_LCR_BREAK_EN)) \
-				& UART_LCR_BITMASK;
-	}
-	else
-	{
-		tmp = (UARTx->LCR & (UART_LCR_DLAB_EN | UART_LCR_BREAK_EN)) & UART_LCR_BITMASK;
-	}
-
-	switch (UART_ConfigStruct->Databits){
-	case UART_DATABIT_5:
-		tmp |= UART_LCR_WLEN5;
-		break;
-	case UART_DATABIT_6:
-		tmp |= UART_LCR_WLEN6;
-		break;
-	case UART_DATABIT_7:
-		tmp |= UART_LCR_WLEN7;
-		break;
-	case UART_DATABIT_8:
-	default:
-		tmp |= UART_LCR_WLEN8;
-		break;
-	}
-
-	if (UART_ConfigStruct->Parity == UART_PARITY_NONE)
-	{
-		// Do nothing...
-	}
-	else
-	{
-		tmp |= UART_LCR_PARITY_EN;
-		switch (UART_ConfigStruct->Parity)
-		{
-		case UART_PARITY_ODD:
-			tmp |= UART_LCR_PARITY_ODD;
-			break;
-
-		case UART_PARITY_EVEN:
-			tmp |= UART_LCR_PARITY_EVEN;
-			break;
-
-		case UART_PARITY_SP_1:
-			tmp |= UART_LCR_PARITY_F_1;
-			break;
-
-		case UART_PARITY_SP_0:
-			tmp |= UART_LCR_PARITY_F_0;
-			break;
-		default:
-			break;
-		}
-	}
-
-	switch (UART_ConfigStruct->Stopbits){
-	case UART_STOPBIT_2:
-		tmp |= UART_LCR_STOPBIT_SEL;
-		break;
-	case UART_STOPBIT_1:
-	default:
-		// Do no thing
-		break;
-	}
-
-
-	// Write back to LCR, configure FIFO and Disable Tx
-	if (((LPC_UART1_TypeDef *)UARTx) ==  LPC_UART1)
-	{
-		((LPC_UART1_TypeDef *)UARTx)->LCR = (uint8_t)(tmp & UART_LCR_BITMASK);
-	}
-	else
-	{
-		UARTx->LCR = (uint8_t)(tmp & UART_LCR_BITMASK);
-	}
-}
-
-/*********************************************************************//**
- * @brief		De-initializes the UARTx peripheral registers to their
- *                  default reset values.
- * @param[in]	UARTx	UART peripheral selected, should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return 		None
- **********************************************************************/
-void UART_DeInit(LPC_UART_TypeDef* UARTx)
-{
-	// For debug mode
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-
-	UART_TxCmd(UARTx, DISABLE);
-
-#ifdef _UART0
-	if (UARTx == (LPC_UART_TypeDef *) LPC_UART0)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART0, DISABLE);
-	}
-#endif
-
-#ifdef _UART1
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART1, DISABLE);
-	}
-#endif
-
-#ifdef _UART2
-	if (UARTx == LPC_UART2)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, DISABLE);
-	}
-#endif
-
-#ifdef _UART3
-	if (UARTx == LPC_UART3)
-	{
-		/* Set up clock and power for UART module */
-		CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART3, DISABLE);
-	}
-#endif
-}
-
-/*****************************************************************************//**
-* @brief		Fills each UART_InitStruct member with its default value:
-* 				- 9600 bps
-* 				- 8-bit data
-* 				- 1 Stopbit
-* 				- None Parity
-* @param[in]	UART_InitStruct Pointer to a UART_CFG_Type structure
-*                    which will be initialized.
-* @return		None
-*******************************************************************************/
-void UART_ConfigStructInit(UART_CFG_Type *UART_InitStruct)
-{
-	UART_InitStruct->Baud_rate = 9600;
-	UART_InitStruct->Databits = UART_DATABIT_8;
-	UART_InitStruct->Parity = UART_PARITY_NONE;
-	UART_InitStruct->Stopbits = UART_STOPBIT_1;
-}
-
-/* UART Send/Recieve functions -------------------------------------------------*/
-/*********************************************************************//**
- * @brief		Transmit a single data through UART peripheral
- * @param[in]	UARTx	UART peripheral selected, should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	Data	Data to transmit (must be 8-bit long)
- * @return 		None
- **********************************************************************/
-void UART_SendByte(LPC_UART_TypeDef* UARTx, uint8_t Data)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		((LPC_UART1_TypeDef *)UARTx)->/*RBTHDLR.*/THR = Data & UART_THR_MASKBIT;
-	}
-	else
-	{
-		UARTx->/*RBTHDLR.*/THR = Data & UART_THR_MASKBIT;
-	}
-
-}
-
-
-/*********************************************************************//**
- * @brief		Receive a single data from UART peripheral
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return 		Data received
- **********************************************************************/
-uint8_t UART_ReceiveByte(LPC_UART_TypeDef* UARTx)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		return (((LPC_UART1_TypeDef *)UARTx)->/*RBTHDLR.*/RBR & UART_RBR_MASKBIT);
-	}
-	else
-	{
-		return (UARTx->/*RBTHDLR.*/RBR & UART_RBR_MASKBIT);
-	}
-}
-
-/*********************************************************************//**
- * @brief		Send a block of data via UART peripheral
- * @param[in]	UARTx	Selected UART peripheral used to send data, should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	txbuf 	Pointer to Transmit buffer
- * @param[in]	buflen 	Length of Transmit buffer
- * @param[in] 	flag 	Flag used in  UART transfer, should be
- * 						NONE_BLOCKING or BLOCKING
- * @return 		Number of bytes sent.
- *
- * Note: when using UART in BLOCKING mode, a time-out condition is used
- * via defined symbol UART_BLOCKING_TIMEOUT.
- **********************************************************************/
-uint32_t UART_Send(LPC_UART_TypeDef *UARTx, uint8_t *txbuf,
-		uint32_t buflen, TRANSFER_BLOCK_Type flag)
-{
-	uint32_t bToSend, bSent, timeOut, fifo_cnt;
-	uint8_t *pChar = txbuf;
-
-	bToSend = buflen;
-
-	// blocking mode
-	if (flag == BLOCKING) {
-		bSent = 0;
-		while (bToSend){
-			timeOut = UART_BLOCKING_TIMEOUT;
-			// Wait for THR empty with timeout
-			while (!(UARTx->LSR & UART_LSR_THRE)) {
-				if (timeOut == 0) break;
-				timeOut--;
-			}
-			// Time out!
-			if(timeOut == 0) break;
-			fifo_cnt = UART_TX_FIFO_SIZE;
-			while (fifo_cnt && bToSend){
-				UART_SendByte(UARTx, (*pChar++));
-				fifo_cnt--;
-				bToSend--;
-				bSent++;
-			}
-		}
-	}
-	// None blocking mode
-	else {
-		bSent = 0;
-		while (bToSend) {
-			if (!(UARTx->LSR & UART_LSR_THRE)){
-				break;
-			}
-			fifo_cnt = UART_TX_FIFO_SIZE;
-			while (fifo_cnt && bToSend) {
-				UART_SendByte(UARTx, (*pChar++));
-				bToSend--;
-				fifo_cnt--;
-				bSent++;
-			}
-		}
-	}
-	return bSent;
-}
-
-/*********************************************************************//**
- * @brief		Receive a block of data via UART peripheral
- * @param[in]	UARTx	Selected UART peripheral used to send data,
- * 				should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[out]	rxbuf 	Pointer to Received buffer
- * @param[in]	buflen 	Length of Received buffer
- * @param[in] 	flag 	Flag mode, should be NONE_BLOCKING or BLOCKING
-
- * @return 		Number of bytes received
- *
- * Note: when using UART in BLOCKING mode, a time-out condition is used
- * via defined symbol UART_BLOCKING_TIMEOUT.
- **********************************************************************/
-uint32_t UART_Receive(LPC_UART_TypeDef *UARTx, uint8_t *rxbuf, \
-		uint32_t buflen, TRANSFER_BLOCK_Type flag)
-{
-	uint32_t bToRecv, bRecv, timeOut;
-	uint8_t *pChar = rxbuf;
-
-	bToRecv = buflen;
-
-	// Blocking mode
-	if (flag == BLOCKING) {
-		bRecv = 0;
-		while (bToRecv){
-			timeOut = UART_BLOCKING_TIMEOUT;
-			while (!(UARTx->LSR & UART_LSR_RDR)){
-				if (timeOut == 0) break;
-				timeOut--;
-			}
-			// Time out!
-			if(timeOut == 0) break;
-			// Get data from the buffer
-			(*pChar++) = UART_ReceiveByte(UARTx);
-			bToRecv--;
-			bRecv++;
-		}
-	}
-	// None blocking mode
-	else {
-		bRecv = 0;
-		while (bToRecv) {
-			if (!(UARTx->LSR & UART_LSR_RDR)) {
-				break;
-			} else {
-				(*pChar++) = UART_ReceiveByte(UARTx);
-				bRecv++;
-				bToRecv--;
-			}
-		}
-	}
-	return bRecv;
-}
-
-/*********************************************************************//**
- * @brief		Force BREAK character on UART line, output pin UARTx TXD is
-				forced to logic 0.
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return 		None
- **********************************************************************/
-void UART_ForceBreak(LPC_UART_TypeDef* UARTx)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		((LPC_UART1_TypeDef *)UARTx)->LCR |= UART_LCR_BREAK_EN;
-	}
-	else
-	{
-		UARTx->LCR |= UART_LCR_BREAK_EN;
-	}
-}
-
-
-/********************************************************************//**
- * @brief 		Enable or disable specified UART interrupt.
- * @param[in]	UARTx	UART peripheral selected, should be
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	UARTIntCfg	Specifies the interrupt flag,
- * 				should be one of the following:
-				- UART_INTCFG_RBR 	:  RBR Interrupt enable
-				- UART_INTCFG_THRE 	:  THR Interrupt enable
-				- UART_INTCFG_RLS 	:  RX line status interrupt enable
-				- UART1_INTCFG_MS	:  Modem status interrupt enable (UART1 only)
-				- UART1_INTCFG_CTS	:  CTS1 signal transition interrupt enable (UART1 only)
-				- UART_INTCFG_ABEO 	:  Enables the end of auto-baud interrupt
-				- UART_INTCFG_ABTO 	:  Enables the auto-baud time-out interrupt
- * @param[in]	NewState New state of specified UART interrupt type,
- * 				should be:
- * 				- ENALBE: Enable this UART interrupt type.
-* 				- DISALBE: Disable this UART interrupt type.
- * @return 		None
- *********************************************************************/
-void UART_IntConfig(LPC_UART_TypeDef *UARTx, UART_INT_Type UARTIntCfg, FunctionalState NewState)
-{
-	uint32_t tmp = 0;
-
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	switch(UARTIntCfg){
-		case UART_INTCFG_RBR:
-			tmp = UART_IER_RBRINT_EN;
-			break;
-		case UART_INTCFG_THRE:
-			tmp = UART_IER_THREINT_EN;
-			break;
-		case UART_INTCFG_RLS:
-			tmp = UART_IER_RLSINT_EN;
-			break;
-		case UART1_INTCFG_MS:
-			tmp = UART1_IER_MSINT_EN;
-			break;
-		case UART1_INTCFG_CTS:
-			tmp = UART1_IER_CTSINT_EN;
-			break;
-		case UART_INTCFG_ABEO:
-			tmp = UART_IER_ABEOINT_EN;
-			break;
-		case UART_INTCFG_ABTO:
-			tmp = UART_IER_ABTOINT_EN;
-			break;
-	}
-
-	if ((LPC_UART1_TypeDef *) UARTx == LPC_UART1)
-	{
-		CHECK_PARAM((PARAM_UART_INTCFG(UARTIntCfg)) || (PARAM_UART1_INTCFG(UARTIntCfg)));
-	}
-	else
-	{
-		CHECK_PARAM(PARAM_UART_INTCFG(UARTIntCfg));
-	}
-
-	if (NewState == ENABLE)
-	{
-		if ((LPC_UART1_TypeDef *) UARTx == LPC_UART1)
-		{
-			((LPC_UART1_TypeDef *)UARTx)->/*DLIER.*/IER |= tmp;
-		}
-		else
-		{
-			UARTx->/*DLIER.*/IER |= tmp;
-		}
-	}
-	else
-	{
-		if ((LPC_UART1_TypeDef *) UARTx == LPC_UART1)
-		{
-			((LPC_UART1_TypeDef *)UARTx)->/*DLIER.*/IER &= (~tmp) & UART1_IER_BITMASK;
-		}
-		else
-		{
-			UARTx->/*DLIER.*/IER &= (~tmp) & UART_IER_BITMASK;
-		}
-	}
-}
-
-
-/********************************************************************//**
- * @brief 		Get current value of Line Status register in UART peripheral.
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return		Current value of Line Status register in UART peripheral.
- * Note:	The return value of this function must be ANDed with each member in
- * 			UART_LS_Type enumeration to determine current flag status
- * 			corresponding to each Line status type. Because some flags in
- * 			Line Status register will be cleared after reading, the next reading
- * 			Line Status register could not be correct. So this function used to
- * 			read Line status register in one time only, then the return value
- * 			used to check all flags.
- *********************************************************************/
-uint8_t UART_GetLineStatus(LPC_UART_TypeDef* UARTx)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		return ((((LPC_UART1_TypeDef *)LPC_UART1)->LSR) & UART_LSR_BITMASK);
-	}
-	else
-	{
-		return ((UARTx->LSR) & UART_LSR_BITMASK);
-	}
-}
-
-/********************************************************************//**
- * @brief 		Get Interrupt Identification value
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return		Current value of UART UIIR register in UART peripheral.
- *********************************************************************/
-uint32_t UART_GetIntId(LPC_UART_TypeDef* UARTx)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	return (UARTx->IIR & 0x03CF);
-}
-
-/*********************************************************************//**
- * @brief		Check whether if UART is busy or not
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @return		RESET if UART is not busy, otherwise return SET.
- **********************************************************************/
-FlagStatus UART_CheckBusy(LPC_UART_TypeDef *UARTx)
-{
-	if (UARTx->LSR & UART_LSR_TEMT){
-		return RESET;
-	} else {
-		return SET;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Configure FIFO function on selected UART peripheral
- * @param[in]	UARTx	UART peripheral selected, should be:
- *  			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	FIFOCfg	Pointer to a UART_FIFO_CFG_Type Structure that
- * 						contains specified information about FIFO configuration
- * @return 		none
- **********************************************************************/
-void UART_FIFOConfig(LPC_UART_TypeDef *UARTx, UART_FIFO_CFG_Type *FIFOCfg)
-{
-	uint8_t tmp = 0;
-
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	CHECK_PARAM(PARAM_UART_FIFO_LEVEL(FIFOCfg->FIFO_Level));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(FIFOCfg->FIFO_DMAMode));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(FIFOCfg->FIFO_ResetRxBuf));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(FIFOCfg->FIFO_ResetTxBuf));
-
-	tmp |= UART_FCR_FIFO_EN;
-	switch (FIFOCfg->FIFO_Level){
-	case UART_FIFO_TRGLEV0:
-		tmp |= UART_FCR_TRG_LEV0;
-		break;
-	case UART_FIFO_TRGLEV1:
-		tmp |= UART_FCR_TRG_LEV1;
-		break;
-	case UART_FIFO_TRGLEV2:
-		tmp |= UART_FCR_TRG_LEV2;
-		break;
-	case UART_FIFO_TRGLEV3:
-	default:
-		tmp |= UART_FCR_TRG_LEV3;
-		break;
-	}
-
-	if (FIFOCfg->FIFO_ResetTxBuf == ENABLE)
-	{
-		tmp |= UART_FCR_TX_RS;
-	}
-	if (FIFOCfg->FIFO_ResetRxBuf == ENABLE)
-	{
-		tmp |= UART_FCR_RX_RS;
-	}
-	if (FIFOCfg->FIFO_DMAMode == ENABLE)
-	{
-		tmp |= UART_FCR_DMAMODE_SEL;
-	}
-
-
-	//write to FIFO control register
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		((LPC_UART1_TypeDef *)UARTx)->/*IIFCR.*/FCR = tmp & UART_FCR_BITMASK;
-	}
-	else
-	{
-		UARTx->/*IIFCR.*/FCR = tmp & UART_FCR_BITMASK;
-	}
-}
-
-/*****************************************************************************//**
-* @brief		Fills each UART_FIFOInitStruct member with its default value:
-* 				- FIFO_DMAMode = DISABLE
-* 				- FIFO_Level = UART_FIFO_TRGLEV0
-* 				- FIFO_ResetRxBuf = ENABLE
-* 				- FIFO_ResetTxBuf = ENABLE
-* 				- FIFO_State = ENABLE
-
-* @param[in]	UART_FIFOInitStruct Pointer to a UART_FIFO_CFG_Type structure
-*                    which will be initialized.
-* @return		None
-*******************************************************************************/
-void UART_FIFOConfigStructInit(UART_FIFO_CFG_Type *UART_FIFOInitStruct)
-{
-	UART_FIFOInitStruct->FIFO_DMAMode = DISABLE;
-	UART_FIFOInitStruct->FIFO_Level = UART_FIFO_TRGLEV0;
-	UART_FIFOInitStruct->FIFO_ResetRxBuf = ENABLE;
-	UART_FIFOInitStruct->FIFO_ResetTxBuf = ENABLE;
-}
-
-
-/*********************************************************************//**
- * @brief		Start/Stop Auto Baudrate activity
- * @param[in]	UARTx	UART peripheral selected, should be
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	ABConfigStruct	A pointer to UART_AB_CFG_Type structure that
- * 								contains specified information about UART
- * 								auto baudrate configuration
- * @param[in]	NewState New State of Auto baudrate activity, should be:
- * 				- ENABLE: Start this activity
- *				- DISABLE: Stop this activity
- * Note:		Auto-baudrate mode enable bit will be cleared once this mode
- * 				completed.
- * @return 		none
- **********************************************************************/
-void UART_ABCmd(LPC_UART_TypeDef *UARTx, UART_AB_CFG_Type *ABConfigStruct, \
-				FunctionalState NewState)
-{
-	uint32_t tmp;
-
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	tmp = 0;
-	if (NewState == ENABLE) {
-		if (ABConfigStruct->ABMode == UART_AUTOBAUD_MODE1){
-			tmp |= UART_ACR_MODE;
-		}
-		if (ABConfigStruct->AutoRestart == ENABLE){
-			tmp |= UART_ACR_AUTO_RESTART;
-		}
-	}
-
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		if (NewState == ENABLE)
-		{
-			// Clear DLL and DLM value
-			((LPC_UART1_TypeDef *)UARTx)->LCR |= UART_LCR_DLAB_EN;
-			((LPC_UART1_TypeDef *)UARTx)->DLL = 0;
-			((LPC_UART1_TypeDef *)UARTx)->DLM = 0;
-			((LPC_UART1_TypeDef *)UARTx)->LCR &= ~UART_LCR_DLAB_EN;
-			// FDR value must be reset to default value
-			((LPC_UART1_TypeDef *)UARTx)->FDR = 0x10;
-			((LPC_UART1_TypeDef *)UARTx)->ACR = UART_ACR_START | tmp;
-		}
-		else
-		{
-			((LPC_UART1_TypeDef *)UARTx)->ACR = 0;
-		}
-	}
-	else
-	{
-		if (NewState == ENABLE)
-		{
-			// Clear DLL and DLM value
-			UARTx->LCR |= UART_LCR_DLAB_EN;
-			UARTx->DLL = 0;
-			UARTx->DLM = 0;
-			UARTx->LCR &= ~UART_LCR_DLAB_EN;
-			// FDR value must be reset to default value
-			UARTx->FDR = 0x10;
-			UARTx->ACR = UART_ACR_START | tmp;
-		}
-		else
-		{
-			UARTx->ACR = 0;
-		}
-	}
-}
-
-/*********************************************************************//**
- * @brief		Clear Autobaud Interrupt Pending
- * @param[in]	UARTx	UART peripheral selected, should be
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	ABIntType	type of auto-baud interrupt, should be:
- * 				- UART_AUTOBAUD_INTSTAT_ABEO: End of Auto-baud interrupt
- * 				- UART_AUTOBAUD_INTSTAT_ABTO: Auto-baud time out interrupt
- * @return 		none
- **********************************************************************/
-void UART_ABClearIntPending(LPC_UART_TypeDef *UARTx, UART_ABEO_Type ABIntType)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-	{
-		UARTx->ACR |= ABIntType;
-	}
-	else
-		UARTx->ACR |= ABIntType;
-}
-
-/*********************************************************************//**
- * @brief		Enable/Disable transmission on UART TxD pin
- * @param[in]	UARTx	UART peripheral selected, should be:
- *   			- LPC_UART0: UART0 peripheral
- * 				- LPC_UART1: UART1 peripheral
- * 				- LPC_UART2: UART2 peripheral
- * 				- LPC_UART3: UART3 peripheral
- * @param[in]	NewState New State of Tx transmission function, should be:
- * 				- ENABLE: Enable this function
-				- DISABLE: Disable this function
- * @return none
- **********************************************************************/
-void UART_TxCmd(LPC_UART_TypeDef *UARTx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_UARTx(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-		{
-			((LPC_UART1_TypeDef *)UARTx)->TER |= UART_TER_TXEN;
-		}
-		else
-		{
-			UARTx->TER |= UART_TER_TXEN;
-		}
-	}
-	else
-	{
-		if (((LPC_UART1_TypeDef *)UARTx) == LPC_UART1)
-		{
-			((LPC_UART1_TypeDef *)UARTx)->TER &= (~UART_TER_TXEN) & UART_TER_BITMASK;
-		}
-		else
-		{
-			UARTx->TER &= (~UART_TER_TXEN) & UART_TER_BITMASK;
-		}
-	}
-}
-
-/* UART IrDA functions ---------------------------------------------------*/
-
-#ifdef _UART3
-
-/*********************************************************************//**
- * @brief		Enable or disable inverting serial input function of IrDA
- * 				on UART peripheral.
- * @param[in]	UARTx UART peripheral selected, should be LPC_UART3 (only)
- * @param[in]	NewState New state of inverting serial input, should be:
- * 				- ENABLE: Enable this function.
- * 				- DISABLE: Disable this function.
- * @return none
- **********************************************************************/
-void UART_IrDAInvtInputCmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_UART_IrDA(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		UARTx->ICR |= UART_ICR_IRDAINV;
-	}
-	else if (NewState == DISABLE)
-	{
-		UARTx->ICR &= (~UART_ICR_IRDAINV) & UART_ICR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Enable or disable IrDA function on UART peripheral.
- * @param[in]	UARTx UART peripheral selected, should be LPC_UART3 (only)
- * @param[in]	NewState New state of IrDA function, should be:
- * 				- ENABLE: Enable this function.
- * 				- DISABLE: Disable this function.
- * @return none
- **********************************************************************/
-void UART_IrDACmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState)
-{
-	CHECK_PARAM(PARAM_UART_IrDA(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	if (NewState == ENABLE)
-	{
-		UARTx->ICR |= UART_ICR_IRDAEN;
-	}
-	else
-	{
-		UARTx->ICR &= (~UART_ICR_IRDAEN) & UART_ICR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Configure Pulse divider for IrDA function on UART peripheral.
- * @param[in]	UARTx UART peripheral selected, should be LPC_UART3 (only)
- * @param[in]	PulseDiv Pulse Divider value from Peripheral clock,
- * 				should be one of the following:
-				- UART_IrDA_PULSEDIV2 	: Pulse width = 2 * Tpclk
-				- UART_IrDA_PULSEDIV4 	: Pulse width = 4 * Tpclk
-				- UART_IrDA_PULSEDIV8 	: Pulse width = 8 * Tpclk
-				- UART_IrDA_PULSEDIV16 	: Pulse width = 16 * Tpclk
-				- UART_IrDA_PULSEDIV32 	: Pulse width = 32 * Tpclk
-				- UART_IrDA_PULSEDIV64 	: Pulse width = 64 * Tpclk
-				- UART_IrDA_PULSEDIV128 : Pulse width = 128 * Tpclk
-				- UART_IrDA_PULSEDIV256 : Pulse width = 256 * Tpclk
-
- * @return none
- **********************************************************************/
-void UART_IrDAPulseDivConfig(LPC_UART_TypeDef *UARTx, UART_IrDA_PULSE_Type PulseDiv)
-{
-	uint32_t tmp, tmp1;
-	CHECK_PARAM(PARAM_UART_IrDA(UARTx));
-	CHECK_PARAM(PARAM_UART_IrDA_PULSEDIV(PulseDiv));
-
-	tmp1 = UART_ICR_PULSEDIV(PulseDiv);
-	tmp = UARTx->ICR & (~UART_ICR_PULSEDIV(7));
-	tmp |= tmp1 | UART_ICR_FIXPULSE_EN;
-	UARTx->ICR = tmp & UART_ICR_BITMASK;
-}
-
-#endif
-
-
-/* UART1 FullModem function ---------------------------------------------*/
-
-#ifdef _UART1
-
-/*********************************************************************//**
- * @brief		Force pin DTR/RTS corresponding to given state (Full modem mode)
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	Pin	Pin that NewState will be applied to, should be:
- * 				- UART1_MODEM_PIN_DTR: DTR pin.
- * 				- UART1_MODEM_PIN_RTS: RTS pin.
- * @param[in]	NewState New State of DTR/RTS pin, should be:
- * 				- INACTIVE: Force the pin to inactive signal.
-				- ACTIVE: Force the pin to active signal.
- * @return none
- **********************************************************************/
-void UART_FullModemForcePinState(LPC_UART1_TypeDef *UARTx, UART_MODEM_PIN_Type Pin, \
-							UART1_SignalState NewState)
-{
-	uint8_t tmp = 0;
-
-	CHECK_PARAM(PARAM_UART1_MODEM(UARTx));
-	CHECK_PARAM(PARAM_UART1_MODEM_PIN(Pin));
-	CHECK_PARAM(PARAM_UART1_SIGNALSTATE(NewState));
-
-	switch (Pin){
-	case UART1_MODEM_PIN_DTR:
-		tmp = UART1_MCR_DTR_CTRL;
-		break;
-	case UART1_MODEM_PIN_RTS:
-		tmp = UART1_MCR_RTS_CTRL;
-		break;
-	default:
-		break;
-	}
-
-	if (NewState == ACTIVE){
-		UARTx->MCR |= tmp;
-	} else {
-		UARTx->MCR &= (~tmp) & UART1_MCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Configure Full Modem mode for UART peripheral
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	Mode Full Modem mode, should be:
- * 				- UART1_MODEM_MODE_LOOPBACK: Loop back mode.
- * 				- UART1_MODEM_MODE_AUTO_RTS: Auto-RTS mode.
- * 				- UART1_MODEM_MODE_AUTO_CTS: Auto-CTS mode.
- * @param[in]	NewState New State of this mode, should be:
- * 				- ENABLE: Enable this mode.
-				- DISABLE: Disable this mode.
- * @return none
- **********************************************************************/
-void UART_FullModemConfigMode(LPC_UART1_TypeDef *UARTx, UART_MODEM_MODE_Type Mode, \
-							FunctionalState NewState)
-{
-	uint8_t tmp = 0;
-
-	CHECK_PARAM(PARAM_UART1_MODEM(UARTx));
-	CHECK_PARAM(PARAM_UART1_MODEM_MODE(Mode));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
-
-	switch(Mode){
-	case UART1_MODEM_MODE_LOOPBACK:
-		tmp = UART1_MCR_LOOPB_EN;
-		break;
-	case UART1_MODEM_MODE_AUTO_RTS:
-		tmp = UART1_MCR_AUTO_RTS_EN;
-		break;
-	case UART1_MODEM_MODE_AUTO_CTS:
-		tmp = UART1_MCR_AUTO_CTS_EN;
-		break;
-	default:
-		break;
-	}
-
-	if (NewState == ENABLE)
-	{
-		UARTx->MCR |= tmp;
-	}
-	else
-	{
-		UARTx->MCR &= (~tmp) & UART1_MCR_BITMASK;
-	}
-}
-
-
-/*********************************************************************//**
- * @brief		Get current status of modem status register
- * @param[in]	UARTx	LPC_UART1 (only)
- * @return 		Current value of modem status register
- * Note:	The return value of this function must be ANDed with each member
- * 			UART_MODEM_STAT_type enumeration to determine current flag status
- * 			corresponding to each modem flag status. Because some flags in
- * 			modem status register will be cleared after reading, the next reading
- * 			modem register could not be correct. So this function used to
- * 			read modem status register in one time only, then the return value
- * 			used to check all flags.
- **********************************************************************/
-uint8_t UART_FullModemGetStatus(LPC_UART1_TypeDef *UARTx)
-{
-	CHECK_PARAM(PARAM_UART1_MODEM(UARTx));
-	return ((UARTx->MSR) & UART1_MSR_BITMASK);
-}
-
-
-/* UART RS485 functions --------------------------------------------------------------*/
-
-/*********************************************************************//**
- * @brief		Configure UART peripheral in RS485 mode according to the specified
-*               parameters in the RS485ConfigStruct.
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	RS485ConfigStruct Pointer to a UART1_RS485_CTRLCFG_Type structure
-*                    that contains the configuration information for specified UART
-*                    in RS485 mode.
- * @return		None
- **********************************************************************/
-void UART_RS485Config(LPC_UART1_TypeDef *UARTx, UART1_RS485_CTRLCFG_Type *RS485ConfigStruct)
-{
-	uint32_t tmp;
-
-	CHECK_PARAM(PARAM_UART1_MODEM(UARTx));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(RS485ConfigStruct->AutoAddrDetect_State));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(RS485ConfigStruct->AutoDirCtrl_State));
-	CHECK_PARAM(PARAM_UART1_RS485_CFG_DELAYVALUE(RS485ConfigStruct->DelayValue));
-	CHECK_PARAM(PARAM_SETSTATE(RS485ConfigStruct->DirCtrlPol_Level));
-	CHECK_PARAM(PARAM_UART_RS485_DIRCTRL_PIN(RS485ConfigStruct->DirCtrlPin));
-	CHECK_PARAM(PARAM_UART1_RS485_CFG_MATCHADDRVALUE(RS485ConfigStruct->MatchAddrValue));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(RS485ConfigStruct->NormalMultiDropMode_State));
-	CHECK_PARAM(PARAM_FUNCTIONALSTATE(RS485ConfigStruct->Rx_State));
-
-	tmp = 0;
-	// If Auto Direction Control is enabled -  This function is used in Master mode
-	if (RS485ConfigStruct->AutoDirCtrl_State == ENABLE)
-	{
-		tmp |= UART1_RS485CTRL_DCTRL_EN;
-
-		// Set polar
-		if (RS485ConfigStruct->DirCtrlPol_Level == SET)
-		{
-			tmp |= UART1_RS485CTRL_OINV_1;
-		}
-
-		// Set pin according to
-		if (RS485ConfigStruct->DirCtrlPin == UART1_RS485_DIRCTRL_DTR)
-		{
-			tmp |= UART1_RS485CTRL_SEL_DTR;
-		}
-
-		// Fill delay time
-		UARTx->RS485DLY = RS485ConfigStruct->DelayValue & UART1_RS485DLY_BITMASK;
-	}
-
-	// MultiDrop mode is enable
-	if (RS485ConfigStruct->NormalMultiDropMode_State == ENABLE)
-	{
-		tmp |= UART1_RS485CTRL_NMM_EN;
-	}
-
-	// Auto Address Detect function
-	if (RS485ConfigStruct->AutoAddrDetect_State == ENABLE)
-	{
-		tmp |= UART1_RS485CTRL_AADEN;
-		// Fill Match Address
-		UARTx->ADRMATCH = RS485ConfigStruct->MatchAddrValue & UART1_RS485ADRMATCH_BITMASK;
-	}
-
-
-	// Receiver is disable
-	if (RS485ConfigStruct->Rx_State == DISABLE)
-	{
-		tmp |= UART1_RS485CTRL_RX_DIS;
-	}
-
-	// write back to RS485 control register
-	UARTx->RS485CTRL = tmp & UART1_RS485CTRL_BITMASK;
-
-	// Enable Parity function and leave parity in stick '0' parity as default
-	UARTx->LCR |= (UART_LCR_PARITY_F_0 | UART_LCR_PARITY_EN);
-}
-
-/*********************************************************************//**
- * @brief		Enable/Disable receiver in RS485 module in UART1
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	NewState	New State of command, should be:
- * 							- ENABLE: Enable this function.
- * 							- DISABLE: Disable this function.
- * @return		None
- **********************************************************************/
-void UART_RS485ReceiverCmd(LPC_UART1_TypeDef *UARTx, FunctionalState NewState)
-{
-	if (NewState == ENABLE){
-		UARTx->RS485CTRL &= ~UART1_RS485CTRL_RX_DIS;
-	} else {
-		UARTx->RS485CTRL |= UART1_RS485CTRL_RX_DIS;
-	}
-}
-
-/*********************************************************************//**
- * @brief		Send data on RS485 bus with specified parity stick value (9-bit mode).
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	pDatFrm 	Pointer to data frame.
- * @param[in]	size		Size of data.
- * @param[in]	ParityStick	Parity Stick value, should be 0 or 1.
- * @return		None
- **********************************************************************/
-uint32_t UART_RS485Send(LPC_UART1_TypeDef *UARTx, uint8_t *pDatFrm, \
-					uint32_t size, uint8_t ParityStick)
-{
-	uint8_t tmp, save;
-	uint32_t cnt;
-
-	if (ParityStick){
-		save = tmp = UARTx->LCR & UART_LCR_BITMASK;
-		tmp &= ~(UART_LCR_PARITY_EVEN);
-		UARTx->LCR = tmp;
-		cnt = UART_Send((LPC_UART_TypeDef *)UARTx, pDatFrm, size, BLOCKING);
-		while (!(UARTx->LSR & UART_LSR_TEMT));
-		UARTx->LCR = save;
-	} else {
-		cnt = UART_Send((LPC_UART_TypeDef *)UARTx, pDatFrm, size, BLOCKING);
-		while (!(UARTx->LSR & UART_LSR_TEMT));
-	}
-	return cnt;
-}
-
-/*********************************************************************//**
- * @brief		Send Slave address frames on RS485 bus.
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	SlvAddr Slave Address.
- * @return		None
- **********************************************************************/
-void UART_RS485SendSlvAddr(LPC_UART1_TypeDef *UARTx, uint8_t SlvAddr)
-{
-	UART_RS485Send(UARTx, &SlvAddr, 1, 1);
-}
-
-/*********************************************************************//**
- * @brief		Send Data frames on RS485 bus.
- * @param[in]	UARTx	LPC_UART1 (only)
- * @param[in]	pData Pointer to data to be sent.
- * @param[in]	size Size of data frame to be sent.
- * @return		None
- **********************************************************************/
-uint32_t UART_RS485SendData(LPC_UART1_TypeDef *UARTx, uint8_t *pData, uint32_t size)
-{
-	return (UART_RS485Send(UARTx, pData, size, 0));
-}
-
-#endif /* _UART1 */
-
-#endif /* _UART */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-/* --------------------------------- End Of File ------------------------------ */
-
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/LPC17xxLib/src/lpc17xx_wdt.c
--- a/libs/LPC17xx/LPC17xxLib/src/lpc17xx_wdt.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-#ifdef __LPC17XX__
-
-/**********************************************************************
-* $Id$		lpc17xx_wdt.c			2010-05-21
-*//**
-* @file		lpc17xx_wdt.c
-* @brief	Contains all functions support for WDT firmware library
-* 			on LPC17xx
-* @version	2.0
-* @date		21. May. 2010
-* @author	NXP MCU SW Application Team
-*
-* Copyright(C) 2010, NXP Semiconductor
-* All rights reserved.
-*
-***********************************************************************
-* Software that is described herein is for illustrative purposes only
-* which provides customers with programming information regarding the
-* products. This software is supplied "AS IS" without any warranties.
-* NXP Semiconductors assumes no responsibility or liability for the
-* use of the software, conveys no license or title under any patent,
-* copyright, or mask work right to the product. NXP Semiconductors
-* reserves the right to make changes in the software without
-* notification. NXP Semiconductors also make no representation or
-* warranty that such application will be suitable for the specified
-* use without further testing or modification.
-**********************************************************************/
-
-/* Peripheral group ----------------------------------------------------------- */
-/** @addtogroup WDT
- * @{
- */
-
-/* Includes ------------------------------------------------------------------- */
-#include "lpc17xx_wdt.h"
-#include "lpc17xx_clkpwr.h"
-#include "lpc17xx_pinsel.h"
-
-
-/* If this source file built with example, the LPC17xx FW library configuration
- * file in each example directory ("lpc17xx_libcfg.h") must be included,
- * otherwise the default FW library configuration file must be included instead
- */
-#ifdef __BUILD_WITH_EXAMPLE__
-#include "lpc17xx_libcfg.h"
-#else
-#include "lpc17xx_libcfg_default.h"
-#endif /* __BUILD_WITH_EXAMPLE__ */
-
-
-#ifdef _WDT
-
-/* Private Functions ---------------------------------------------------------- */
-
-static uint8_t WDT_SetTimeOut (uint8_t clk_source, uint32_t timeout);
-
-/********************************************************************//**
- * @brief 		Set WDT time out value and WDT mode
- * @param[in]	clk_source select Clock source for WDT device
- * @param[in]	timeout value of time-out for WDT (us)
- * @return		None
- *********************************************************************/
-static uint8_t WDT_SetTimeOut (uint8_t clk_source, uint32_t timeout)
-{
-
-	uint32_t pclk_wdt = 0;
-	uint32_t tempval = 0;
-
-	switch ((WDT_CLK_OPT) clk_source)
-    {
-    case WDT_CLKSRC_IRC:
-    	pclk_wdt = 4000000;
-    	// Calculate TC in WDT
-    	tempval  = (((pclk_wdt) / WDT_US_INDEX) * (timeout / 4));
-    	// Check if it valid
-    	if ((tempval >= WDT_TIMEOUT_MIN) && (tempval <= WDT_TIMEOUT_MAX))
-    	{
-    		LPC_WDT->WDTC = tempval;
-    		return	SUCCESS;
-    	}
-
-    	break;
-
-    case WDT_CLKSRC_PCLK:
-
-    	// Get WDT clock with CCLK divider = 4
-		pclk_wdt = SystemCoreClock / 4;
-		// Calculate TC in WDT
-		tempval  = (((pclk_wdt) / WDT_US_INDEX) * (timeout / 4));
-
-		if ((tempval >= WDT_TIMEOUT_MIN) && (tempval <= WDT_TIMEOUT_MAX))
-		{
-			CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_WDT, CLKPWR_PCLKSEL_CCLK_DIV_4);
-			LPC_WDT->WDTC = (uint32_t) tempval;
-			return SUCCESS;
-		}
-
-		// Get WDT clock with CCLK divider = 2
-		pclk_wdt = SystemCoreClock / 2;
-		// Calculate TC in WDT
-		tempval  = (((pclk_wdt) / WDT_US_INDEX) * (timeout / 4));
-
-		if ((tempval >= WDT_TIMEOUT_MIN) && (tempval <= WDT_TIMEOUT_MAX))
-		{
-			CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_WDT, CLKPWR_PCLKSEL_CCLK_DIV_2);
-			LPC_WDT->WDTC = (uint32_t) tempval;
-			return	SUCCESS;
-		}
-
-		// Get WDT clock with CCLK divider = 1
-		pclk_wdt = SystemCoreClock;
-		// Calculate TC in WDT
-		tempval  = (((pclk_wdt) / WDT_US_INDEX) * (timeout / 4));
-
-		if ((tempval >= WDT_TIMEOUT_MIN) && (tempval <= WDT_TIMEOUT_MAX))
-		{
-			CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_WDT, CLKPWR_PCLKSEL_CCLK_DIV_1);
-			LPC_WDT->WDTC = (uint32_t) tempval;
-			return	SUCCESS;
-		}
-		break ;
-
-
-    case WDT_CLKSRC_RTC:
-		pclk_wdt = 32768;
-		// Calculate TC in WDT
-		tempval  = (((pclk_wdt) / WDT_US_INDEX) * (timeout / 4));
-		// Check if it valid
-		if ((tempval >= WDT_TIMEOUT_MIN) && (tempval <= WDT_TIMEOUT_MAX))
-		{
-			LPC_WDT->WDTC = (uint32_t) tempval;
-			return	SUCCESS;
-		}
-
-		break;
-
-// Error parameter
-		default:
-			break;
-}
-
-	return ERROR;
-}
-
-/* End of Private Functions --------------------------------------------------- */
-
-
-/* Public Functions ----------------------------------------------------------- */
-/** @addtogroup WDT_Public_Functions
- * @{
- */
-
-
-/*********************************************************************//**
-* @brief 		Initial for Watchdog function
-* 					Clock source = RTC ,
-* @param[in]	ClkSrc  Select clock source, should be:
-* 				- WDT_CLKSRC_IRC: Clock source from Internal RC oscillator
-* 				- WDT_CLKSRC_PCLK: Selects the APB peripheral clock (PCLK)
-* 				- WDT_CLKSRC_RTC: Selects the RTC oscillator
-* @param[in]	WDTMode WDT mode, should be:
-* 				- WDT_MODE_INT_ONLY: Use WDT to generate interrupt only
-* 				- WDT_MODE_RESET: Use WDT to generate interrupt and reset MCU
-* @return 		None
- **********************************************************************/
-void WDT_Init (WDT_CLK_OPT ClkSrc, WDT_MODE_OPT WDTMode)
-{
-	CHECK_PARAM(PARAM_WDT_CLK_OPT(ClkSrc));
-	CHECK_PARAM(PARAM_WDT_MODE_OPT(WDTMode));
-	CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_WDT, CLKPWR_PCLKSEL_CCLK_DIV_4);
-
-	//Set clock source
-	LPC_WDT->WDCLKSEL &= ~WDT_WDCLKSEL_MASK;
-	LPC_WDT->WDCLKSEL |= ClkSrc;
-	//Set WDT mode
-	if (WDTMode == WDT_MODE_RESET){
-		LPC_WDT->WDMOD |= WDT_WDMOD(WDTMode);
-	}
-}
-
-/*********************************************************************//**
-* @brief 		Start WDT activity with given timeout value
-* @param[in]	TimeOut WDT reset after timeout if it is not feed
-* @return 		None
- **********************************************************************/
-void WDT_Start(uint32_t TimeOut)
-{
-	uint32_t ClkSrc;
-
-	ClkSrc = LPC_WDT->WDCLKSEL;
-	ClkSrc &=WDT_WDCLKSEL_MASK;
-	WDT_SetTimeOut(ClkSrc,TimeOut);
-	//enable watchdog
-	LPC_WDT->WDMOD |= WDT_WDMOD_WDEN;
-	WDT_Feed();
-}
-
-/********************************************************************//**
- * @brief 		Read WDT Time out flag
- * @param[in]	None
- * @return		Time out flag status of WDT
- *********************************************************************/
-FlagStatus WDT_ReadTimeOutFlag (void)
-{
-	return ((FlagStatus)((LPC_WDT->WDMOD & WDT_WDMOD_WDTOF) >>2));
-}
-
-/********************************************************************//**
- * @brief 		Clear WDT Time out flag
- * @param[in]	None
- * @return		None
- *********************************************************************/
-void WDT_ClrTimeOutFlag (void)
-{
-	LPC_WDT->WDMOD &=~WDT_WDMOD_WDTOF;
-}
-
-/********************************************************************//**
- * @brief 		Update WDT timeout value and feed
- * @param[in]	TimeOut	TimeOut value to be updated
- * @return		None
- *********************************************************************/
-void WDT_UpdateTimeOut ( uint32_t TimeOut)
-{
-	uint32_t ClkSrc;
-	ClkSrc = LPC_WDT->WDCLKSEL;
-	ClkSrc &=WDT_WDCLKSEL_MASK;
-	WDT_SetTimeOut(ClkSrc,TimeOut);
-	WDT_Feed();
-}
-
-
-/********************************************************************//**
- * @brief 		After set WDTEN, call this function to start Watchdog
- * 				or reload the Watchdog timer
- * @param[in]	None
- *
- * @return		None
- *********************************************************************/
-void WDT_Feed (void)
-{
-	// Disable irq interrupt
-	__disable_irq();
-	LPC_WDT->WDFEED = 0xAA;
-	LPC_WDT->WDFEED = 0x55;
-	// Then enable irq interrupt
-	__enable_irq();
-}
-
-/********************************************************************//**
- * @brief 		Get the current value of WDT
- * @param[in]	None
- * @return		current value of WDT
- *********************************************************************/
-uint32_t WDT_GetCurrentCount(void)
-{
-	return LPC_WDT->WDTV;
-}
-
-/**
- * @}
- */
-
-#endif /* _WDT */
-
-/**
- * @}
- */
-
-/* --------------------------------- End Of File ------------------------------ */
-#endif /* __LPC17XX__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/sLPC17xx.h
--- a/libs/LPC17xx/sLPC17xx.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,968 +0,0 @@
-/******************************************************************************
- * @file:    LPC17xx.h
- * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for
- *           NXP LPC17xx Device Series
- * @version: V1.04
- * @date:    2. July 2009
- *----------------------------------------------------------------------------
- *
- * Copyright (C) 2008 ARM Limited. All rights reserved.
- *
- * ARM Limited (ARM) is supplying this software for use with Cortex-M3
- * processor based microcontrollers.  This file can be freely distributed
- * within development tools that are supporting such ARM based processors.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
- * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
- * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
- * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
- *
- ******************************************************************************/
-
-
-#ifndef __LPC17xx_H__
-#define __LPC17xx_H__
-
-/*
- * ==========================================================================
- * ---------- Interrupt Number Definition -----------------------------------
- * ==========================================================================
- */
-
-typedef enum IRQn
-{
-/******  Cortex-M3 Processor Exceptions Numbers ***************************************************/
-  NonMaskableInt_IRQn           = -14,      /*!< 2 Non Maskable Interrupt                         */
-  MemoryManagement_IRQn         = -12,      /*!< 4 Cortex-M3 Memory Management Interrupt          */
-  BusFault_IRQn                 = -11,      /*!< 5 Cortex-M3 Bus Fault Interrupt                  */
-  UsageFault_IRQn               = -10,      /*!< 6 Cortex-M3 Usage Fault Interrupt                */
-  SVCall_IRQn                   = -5,       /*!< 11 Cortex-M3 SV Call Interrupt                   */
-  DebugMonitor_IRQn             = -4,       /*!< 12 Cortex-M3 Debug Monitor Interrupt             */
-  PendSV_IRQn                   = -2,       /*!< 14 Cortex-M3 Pend SV Interrupt                   */
-  SysTick_IRQn                  = -1,       /*!< 15 Cortex-M3 System Tick Interrupt               */
-
-/******  LPC17xx Specific Interrupt Numbers *******************************************************/
-  WDT_IRQn                      = 0,        /*!< Watchdog Timer Interrupt                         */
-  TIMER0_IRQn                   = 1,        /*!< Timer0 Interrupt                                 */
-  TIMER1_IRQn                   = 2,        /*!< Timer1 Interrupt                                 */
-  TIMER2_IRQn                   = 3,        /*!< Timer2 Interrupt                                 */
-  TIMER3_IRQn                   = 4,        /*!< Timer3 Interrupt                                 */
-  UART0_IRQn                    = 5,        /*!< UART0 Interrupt                                  */
-  UART1_IRQn                    = 6,        /*!< UART1 Interrupt                                  */
-  UART2_IRQn                    = 7,        /*!< UART2 Interrupt                                  */
-  UART3_IRQn                    = 8,        /*!< UART3 Interrupt                                  */
-  PWM1_IRQn                     = 9,        /*!< PWM1 Interrupt                                   */
-  I2C0_IRQn                     = 10,       /*!< I2C0 Interrupt                                   */
-  I2C1_IRQn                     = 11,       /*!< I2C1 Interrupt                                   */
-  I2C2_IRQn                     = 12,       /*!< I2C2 Interrupt                                   */
-  SPI_IRQn                      = 13,       /*!< SPI Interrupt                                    */
-  SSP0_IRQn                     = 14,       /*!< SSP0 Interrupt                                   */
-  SSP1_IRQn                     = 15,       /*!< SSP1 Interrupt                                   */
-  PLL0_IRQn                     = 16,       /*!< PLL0 Lock (Main PLL) Interrupt                   */
-  RTC_IRQn                      = 17,       /*!< Real Time Clock Interrupt                        */
-  EINT0_IRQn                    = 18,       /*!< External Interrupt 0 Interrupt                   */
-  EINT1_IRQn                    = 19,       /*!< External Interrupt 1 Interrupt                   */
-  EINT2_IRQn                    = 20,       /*!< External Interrupt 2 Interrupt                   */
-  EINT3_IRQn                    = 21,       /*!< External Interrupt 3 Interrupt                   */
-  ADC_IRQn                      = 22,       /*!< A/D Converter Interrupt                          */
-  BOD_IRQn                      = 23,       /*!< Brown-Out Detect Interrupt                       */
-  USB_IRQn                      = 24,       /*!< USB Interrupt                                    */
-  CAN_IRQn                      = 25,       /*!< CAN Interrupt                                    */
-  DMA_IRQn                      = 26,       /*!< General Purpose DMA Interrupt                    */
-  I2S_IRQn                      = 27,       /*!< I2S Interrupt                                    */
-  ENET_IRQn                     = 28,       /*!< Ethernet Interrupt                               */
-  RIT_IRQn                      = 29,       /*!< Repetitive Interrupt Timer Interrupt             */
-  MCPWM_IRQn                    = 30,       /*!< Motor Control PWM Interrupt                      */
-  QEI_IRQn                      = 31,       /*!< Quadrature Encoder Interface Interrupt           */
-  PLL1_IRQn                     = 32,       /*!< PLL1 Lock (USB PLL) Interrupt                    */
-} IRQn_Type;
-
-
-/*
- * ==========================================================================
- * ----------- Processor and Core Peripheral Section ------------------------
- * ==========================================================================
- */
-
-/* Configuration of the Cortex-M3 Processor and Core Peripherals */
-#define __MPU_PRESENT             1         /*!< MPU present or not                               */
-#define __NVIC_PRIO_BITS          5         /*!< Number of Bits used for Priority Levels          */
-#define __Vendor_SysTickConfig    0         /*!< Set to 1 if different SysTick Config is used     */
-
-
-#include "score_cm3.h"                       /* Cortex-M3 processor and core peripherals           */
-//#include "system_LPC17xx.h"                 /* System Header                                      */
-
-
-/******************************************************************************/
-/*                Device Specific Peripheral registers structures             */
-/******************************************************************************/
-
-#if defined ( __CC_ARM   )
-#pragma anon_unions
-#endif
-
-/*------------- System Control (SC) ------------------------------------------*/
-typedef struct
-{
-  __IO uint32_t FLASHCFG;               /* Flash Accelerator Module           */
-       uint32_t RESERVED0[31];
-  __IO uint32_t PLL0CON;                /* Clocking and Power Control         */
-  __IO uint32_t PLL0CFG;
-  __I  uint32_t PLL0STAT;
-  __O  uint32_t PLL0FEED;
-       uint32_t RESERVED1[4];
-  __IO uint32_t PLL1CON;
-  __IO uint32_t PLL1CFG;
-  __I  uint32_t PLL1STAT;
-  __O  uint32_t PLL1FEED;
-       uint32_t RESERVED2[4];
-  __IO uint32_t PCON;
-  __IO uint32_t PCONP;
-       uint32_t RESERVED3[15];
-  __IO uint32_t CCLKCFG;
-  __IO uint32_t USBCLKCFG;
-  __IO uint32_t CLKSRCSEL;
-       uint32_t RESERVED4[12];
-  __IO uint32_t EXTINT;                 /* External Interrupts                */
-       uint32_t RESERVED5;
-  __IO uint32_t EXTMODE;
-  __IO uint32_t EXTPOLAR;
-       uint32_t RESERVED6[12];
-  __IO uint32_t RSID;                   /* Reset                              */
-       uint32_t RESERVED7[7];
-  __IO uint32_t SCS;                    /* Syscon Miscellaneous Registers     */
-  __IO uint32_t IRCTRIM;                /* Clock Dividers                     */
-  __IO uint32_t PCLKSEL0;
-  __IO uint32_t PCLKSEL1;
-       uint32_t RESERVED8[4];
-  __IO uint32_t USBIntSt;               /* USB Device/OTG Interrupt Register  */
-       uint32_t RESERVED9;
-  __IO uint32_t CLKOUTCFG;              /* Clock Output Configuration         */
- } LPC_SC_TypeDef;
-
-/*------------- Pin Connect Block (PINCON) -----------------------------------*/
-typedef struct
-{
-  __IO uint32_t PINSEL0;
-  __IO uint32_t PINSEL1;
-  __IO uint32_t PINSEL2;
-  __IO uint32_t PINSEL3;
-  __IO uint32_t PINSEL4;
-  __IO uint32_t PINSEL5;
-  __IO uint32_t PINSEL6;
-  __IO uint32_t PINSEL7;
-  __IO uint32_t PINSEL8;
-  __IO uint32_t PINSEL9;
-  __IO uint32_t PINSEL10;
-       uint32_t RESERVED0[5];
-  __IO uint32_t PINMODE0;
-  __IO uint32_t PINMODE1;
-  __IO uint32_t PINMODE2;
-  __IO uint32_t PINMODE3;
-  __IO uint32_t PINMODE4;
-  __IO uint32_t PINMODE5;
-  __IO uint32_t PINMODE6;
-  __IO uint32_t PINMODE7;
-  __IO uint32_t PINMODE8;
-  __IO uint32_t PINMODE9;
-  __IO uint32_t PINMODE_OD0;
-  __IO uint32_t PINMODE_OD1;
-  __IO uint32_t PINMODE_OD2;
-  __IO uint32_t PINMODE_OD3;
-  __IO uint32_t PINMODE_OD4;
-  __IO uint32_t I2CPADCFG;
-} LPC_PINCON_TypeDef;
-
-/*------------- General Purpose Input/Output (GPIO) --------------------------*/
-typedef struct
-{
-  __IO uint32_t FIODIR;
-       uint32_t RESERVED0[3];
-  __IO uint32_t FIOMASK;
-  __IO uint32_t FIOPIN;
-  __IO uint32_t FIOSET;
-  __O  uint32_t FIOCLR;
-} LPC_GPIO_TypeDef;
-
-typedef struct
-{
-  __I  uint32_t IntStatus;
-  __I  uint32_t IO0IntStatR;
-  __I  uint32_t IO0IntStatF;
-  __O  uint32_t IO0IntClr;
-  __IO uint32_t IO0IntEnR;
-  __IO uint32_t IO0IntEnF;
-       uint32_t RESERVED0[3];
-  __I  uint32_t IO2IntStatR;
-  __I  uint32_t IO2IntStatF;
-  __O  uint32_t IO2IntClr;
-  __IO uint32_t IO2IntEnR;
-  __IO uint32_t IO2IntEnF;
-} LPC_GPIOINT_TypeDef;
-
-/*------------- Timer (TIM) --------------------------------------------------*/
-typedef struct
-{
-  __IO uint32_t IR;
-  __IO uint32_t TCR;
-  __IO uint32_t TC;
-  __IO uint32_t PR;
-  __IO uint32_t PC;
-  __IO uint32_t MCR;
-  __IO uint32_t MR0;
-  __IO uint32_t MR1;
-  __IO uint32_t MR2;
-  __IO uint32_t MR3;
-  __IO uint32_t CCR;
-  __I  uint32_t CR0;
-  __I  uint32_t CR1;
-       uint32_t RESERVED0[2];
-  __IO uint32_t EMR;
-       uint32_t RESERVED1[12];
-  __IO uint32_t CTCR;
-} LPC_TIM_TypeDef;
-
-/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/
-typedef struct
-{
-  __IO uint32_t IR;
-  __IO uint32_t TCR;
-  __IO uint32_t TC;
-  __IO uint32_t PR;
-  __IO uint32_t PC;
-  __IO uint32_t MCR;
-  __IO uint32_t MR0;
-  __IO uint32_t MR1;
-  __IO uint32_t MR2;
-  __IO uint32_t MR3;
-  __IO uint32_t CCR;
-  __I  uint32_t CR0;
-  __I  uint32_t CR1;
-  __I  uint32_t CR2;
-  __I  uint32_t CR3;
-       uint32_t RESERVED0;
-  __IO uint32_t MR4;
-  __IO uint32_t MR5;
-  __IO uint32_t MR6;
-  __IO uint32_t PCR;
-  __IO uint32_t LER;
-       uint32_t RESERVED1[7];
-  __IO uint32_t CTCR;
-} LPC_PWM_TypeDef;
-
-/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/
-typedef struct
-{
-  union {
-  __I  uint8_t  RBR;
-  __O  uint8_t  THR;
-  __IO uint8_t  DLL;
-       uint32_t RESERVED0;
-  };
-  union {
-  __IO uint8_t  DLM;
-  __IO uint32_t IER;
-  };
-  union {
-  __I  uint32_t IIR;
-  __O  uint8_t  FCR;
-  };
-  __IO uint8_t  LCR;
-       uint8_t  RESERVED1[7];
-  __I  uint8_t  LSR;
-       uint8_t  RESERVED2[7];
-  __IO uint8_t  SCR;
-       uint8_t  RESERVED3[3];
-  __IO uint32_t ACR;
-  __IO uint8_t  ICR;
-       uint8_t  RESERVED4[3];
-  __IO uint8_t  FDR;
-       uint8_t  RESERVED5[7];
-  __IO uint8_t  TER;
-       uint8_t  RESERVED6[39];
-  __I  uint8_t  FIFOLVL;
-} LPC_UART_TypeDef;
-
-typedef struct
-{
-  union {
-  __I  uint8_t  RBR;
-  __O  uint8_t  THR;
-  __IO uint8_t  DLL;
-       uint32_t RESERVED0;
-  };
-  union {
-  __IO uint8_t  DLM;
-  __IO uint32_t IER;
-  };
-  union {
-  __I  uint32_t IIR;
-  __O  uint8_t  FCR;
-  };
-  __IO uint8_t  LCR;
-       uint8_t  RESERVED1[7];
-  __I  uint8_t  LSR;
-       uint8_t  RESERVED2[7];
-  __IO uint8_t  SCR;
-       uint8_t  RESERVED3[3];
-  __IO uint32_t ACR;
-  __IO uint8_t  ICR;
-       uint8_t  RESERVED4[3];
-  __IO uint8_t  FDR;
-       uint8_t  RESERVED5[7];
-  __IO uint8_t  TER;
-       uint8_t  RESERVED6[39];
-  __I  uint8_t  FIFOLVL;
-       uint8_t  RESERVED7[363];
-  __IO uint32_t DMAREQSEL;
-} LPC_UART0_TypeDef;
-
-typedef struct
-{
-  union {
-  __I  uint8_t  RBR;
-  __O  uint8_t  THR;
-  __IO uint8_t  DLL;
-       uint32_t RESERVED0;
-  };
-  union {
-  __IO uint8_t  DLM;
-  __IO uint32_t IER;
-  };
-  union {
-  __I  uint32_t IIR;
-  __O  uint8_t  FCR;
-  };
-  __IO uint8_t  LCR;
-       uint8_t  RESERVED1[3];
-  __IO uint8_t  MCR;
-       uint8_t  RESERVED2[3];
-  __I  uint8_t  LSR;
-       uint8_t  RESERVED3[3];
-  __I  uint8_t  MSR;
-       uint8_t  RESERVED4[3];
-  __IO uint8_t  SCR;
-       uint8_t  RESERVED5[3];
-  __IO uint32_t ACR;
-       uint32_t RESERVED6;
-  __IO uint32_t FDR;
-       uint32_t RESERVED7;
-  __IO uint8_t  TER;
-       uint8_t  RESERVED8[27];
-  __IO uint8_t  RS485CTRL;
-       uint8_t  RESERVED9[3];
-  __IO uint8_t  ADRMATCH;
-       uint8_t  RESERVED10[3];
-  __IO uint8_t  RS485DLY;
-       uint8_t  RESERVED11[3];
-  __I  uint8_t  FIFOLVL;
-} LPC_UART1_TypeDef;
-
-/*------------- Serial Peripheral Interface (SPI) ----------------------------*/
-typedef struct
-{
-  __IO uint32_t SPCR;
-  __I  uint32_t SPSR;
-  __IO uint32_t SPDR;
-  __IO uint32_t SPCCR;
-       uint32_t RESERVED0[3];
-  __IO uint32_t SPINT;
-} LPC_SPI_TypeDef;
-
-/*------------- Synchronous Serial Communication (SSP) -----------------------*/
-typedef struct
-{
-  __IO uint32_t CR0;
-  __IO uint32_t CR1;
-  __IO uint32_t DR;
-  __I  uint32_t SR;
-  __IO uint32_t CPSR;
-  __IO uint32_t IMSC;
-  __IO uint32_t RIS;
-  __IO uint32_t MIS;
-  __IO uint32_t ICR;
-  __IO uint32_t DMACR;
-} LPC_SSP_TypeDef;
-
-/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/
-typedef struct
-{
-  __IO uint32_t I2CONSET;
-  __I  uint32_t I2STAT;
-  __IO uint32_t I2DAT;
-  __IO uint32_t I2ADR0;
-  __IO uint32_t I2SCLH;
-  __IO uint32_t I2SCLL;
-  __O  uint32_t I2CONCLR;
-  __IO uint32_t MMCTRL;
-  __IO uint32_t I2ADR1;
-  __IO uint32_t I2ADR2;
-  __IO uint32_t I2ADR3;
-  __I  uint32_t I2DATA_BUFFER;
-  __IO uint32_t I2MASK0;
-  __IO uint32_t I2MASK1;
-  __IO uint32_t I2MASK2;
-  __IO uint32_t I2MASK3;
-} LPC_I2C_TypeDef;
-
-/*------------- Inter IC Sound (I2S) -----------------------------------------*/
-typedef struct
-{
-  __IO uint32_t I2SDAO;
-  __IO uint32_t I2SDAI;
-  __O  uint32_t I2STXFIFO;
-  __I  uint32_t I2SRXFIFO;
-  __I  uint32_t I2SSTATE;
-  __IO uint32_t I2SDMA1;
-  __IO uint32_t I2SDMA2;
-  __IO uint32_t I2SIRQ;
-  __IO uint32_t I2STXRATE;
-  __IO uint32_t I2SRXRATE;
-  __IO uint32_t I2STXBITRATE;
-  __IO uint32_t I2SRXBITRATE;
-  __IO uint32_t I2STXMODE;
-  __IO uint32_t I2SRXMODE;
-} LPC_I2S_TypeDef;
-
-/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/
-typedef struct
-{
-  __IO uint32_t RICOMPVAL;
-  __IO uint32_t RIMASK;
-  __IO uint8_t  RICTRL;
-       uint8_t  RESERVED0[3];
-  __IO uint32_t RICOUNTER;
-} LPC_RIT_TypeDef;
-
-/*------------- Real-Time Clock (RTC) ----------------------------------------*/
-typedef struct
-{
-  __IO uint8_t  ILR;
-       uint8_t  RESERVED0[7];
-  __IO uint8_t  CCR;
-       uint8_t  RESERVED1[3];
-  __IO uint8_t  CIIR;
-       uint8_t  RESERVED2[3];
-  __IO uint8_t  AMR;
-       uint8_t  RESERVED3[3];
-  __I  uint32_t CTIME0;
-  __I  uint32_t CTIME1;
-  __I  uint32_t CTIME2;
-  __IO uint8_t  SEC;
-       uint8_t  RESERVED4[3];
-  __IO uint8_t  MIN;
-       uint8_t  RESERVED5[3];
-  __IO uint8_t  HOUR;
-       uint8_t  RESERVED6[3];
-  __IO uint8_t  DOM;
-       uint8_t  RESERVED7[3];
-  __IO uint8_t  DOW;
-       uint8_t  RESERVED8[3];
-  __IO uint16_t DOY;
-       uint16_t RESERVED9;
-  __IO uint8_t  MONTH;
-       uint8_t  RESERVED10[3];
-  __IO uint16_t YEAR;
-       uint16_t RESERVED11;
-  __IO uint32_t CALIBRATION;
-  __IO uint32_t GPREG0;
-  __IO uint32_t GPREG1;
-  __IO uint32_t GPREG2;
-  __IO uint32_t GPREG3;
-  __IO uint32_t GPREG4;
-  __IO uint8_t  RTC_AUXEN;
-       uint8_t  RESERVED12[3];
-  __IO uint8_t  RTC_AUX;
-       uint8_t  RESERVED13[3];
-  __IO uint8_t  ALSEC;
-       uint8_t  RESERVED14[3];
-  __IO uint8_t  ALMIN;
-       uint8_t  RESERVED15[3];
-  __IO uint8_t  ALHOUR;
-       uint8_t  RESERVED16[3];
-  __IO uint8_t  ALDOM;
-       uint8_t  RESERVED17[3];
-  __IO uint8_t  ALDOW;
-       uint8_t  RESERVED18[3];
-  __IO uint16_t ALDOY;
-       uint16_t RESERVED19;
-  __IO uint8_t  ALMON;
-       uint8_t  RESERVED20[3];
-  __IO uint16_t ALYEAR;
-       uint16_t RESERVED21;
-} LPC_RTC_TypeDef;
-
-/*------------- Watchdog Timer (WDT) -----------------------------------------*/
-typedef struct
-{
-  __IO uint8_t  WDMOD;
-       uint8_t  RESERVED0[3];
-  __IO uint32_t WDTC;
-  __O  uint8_t  WDFEED;
-       uint8_t  RESERVED1[3];
-  __I  uint32_t WDTV;
-  __IO uint32_t WDCLKSEL;
-} LPC_WDT_TypeDef;
-
-/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/
-typedef struct
-{
-  __IO uint32_t ADCR;
-  __IO uint32_t ADGDR;
-       uint32_t RESERVED0;
-  __IO uint32_t ADINTEN;
-  __I  uint32_t ADDR0;
-  __I  uint32_t ADDR1;
-  __I  uint32_t ADDR2;
-  __I  uint32_t ADDR3;
-  __I  uint32_t ADDR4;
-  __I  uint32_t ADDR5;
-  __I  uint32_t ADDR6;
-  __I  uint32_t ADDR7;
-  __I  uint32_t ADSTAT;
-  __IO uint32_t ADTRM;
-} LPC_ADC_TypeDef;
-
-/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/
-typedef struct
-{
-  __IO uint32_t DACR;
-  __IO uint32_t DACCTRL;
-  __IO uint16_t DACCNTVAL;
-} LPC_DAC_TypeDef;
-
-/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/
-typedef struct
-{
-  __I  uint32_t MCCON;
-  __O  uint32_t MCCON_SET;
-  __O  uint32_t MCCON_CLR;
-  __I  uint32_t MCCAPCON;
-  __O  uint32_t MCCAPCON_SET;
-  __O  uint32_t MCCAPCON_CLR;
-  __IO uint32_t MCTIM0;
-  __IO uint32_t MCTIM1;
-  __IO uint32_t MCTIM2;
-  __IO uint32_t MCPER0;
-  __IO uint32_t MCPER1;
-  __IO uint32_t MCPER2;
-  __IO uint32_t MCPW0;
-  __IO uint32_t MCPW1;
-  __IO uint32_t MCPW2;
-  __IO uint32_t MCDEADTIME;
-  __IO uint32_t MCCCP;
-  __IO uint32_t MCCR0;
-  __IO uint32_t MCCR1;
-  __IO uint32_t MCCR2;
-  __I  uint32_t MCINTEN;
-  __O  uint32_t MCINTEN_SET;
-  __O  uint32_t MCINTEN_CLR;
-  __I  uint32_t MCCNTCON;
-  __O  uint32_t MCCNTCON_SET;
-  __O  uint32_t MCCNTCON_CLR;
-  __I  uint32_t MCINTFLAG;
-  __O  uint32_t MCINTFLAG_SET;
-  __O  uint32_t MCINTFLAG_CLR;
-  __O  uint32_t MCCAP_CLR;
-} LPC_MCPWM_TypeDef;
-
-/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/
-typedef struct
-{
-  __O  uint32_t QEICON;
-  __I  uint32_t QEISTAT;
-  __IO uint32_t QEICONF;
-  __I  uint32_t QEIPOS;
-  __IO uint32_t QEIMAXPOS;
-  __IO uint32_t CMPOS0;
-  __IO uint32_t CMPOS1;
-  __IO uint32_t CMPOS2;
-  __I  uint32_t INXCNT;
-  __IO uint32_t INXCMP;
-  __IO uint32_t QEILOAD;
-  __I  uint32_t QEITIME;
-  __I  uint32_t QEIVEL;
-  __I  uint32_t QEICAP;
-  __IO uint32_t VELCOMP;
-  __IO uint32_t FILTER;
-       uint32_t RESERVED0[998];
-  __O  uint32_t QEIIEC;
-  __O  uint32_t QEIIES;
-  __I  uint32_t QEIINTSTAT;
-  __I  uint32_t QEIIE;
-  __O  uint32_t QEICLR;
-  __O  uint32_t QEISET;
-} LPC_QEI_TypeDef;
-
-/*------------- Controller Area Network (CAN) --------------------------------*/
-typedef struct
-{
-  __IO uint32_t mask[512];              /* ID Masks                           */
-} LPC_CANAF_RAM_TypeDef;
-
-typedef struct                          /* Acceptance Filter Registers        */
-{
-  __IO uint32_t AFMR;
-  __IO uint32_t SFF_sa;
-  __IO uint32_t SFF_GRP_sa;
-  __IO uint32_t EFF_sa;
-  __IO uint32_t EFF_GRP_sa;
-  __IO uint32_t ENDofTable;
-  __I  uint32_t LUTerrAd;
-  __I  uint32_t LUTerr;
-  __IO uint32_t FCANIE;
-  __IO uint32_t FCANIC0;
-  __IO uint32_t FCANIC1;
-} LPC_CANAF_TypeDef;
-
-typedef struct                          /* Central Registers                  */
-{
-  __I  uint32_t CANTxSR;
-  __I  uint32_t CANRxSR;
-  __I  uint32_t CANMSR;
-} LPC_CANCR_TypeDef;
-
-typedef struct                          /* Controller Registers               */
-{
-  __IO uint32_t MOD;
-  __O  uint32_t CMR;
-  __IO uint32_t GSR;
-  __I  uint32_t ICR;
-  __IO uint32_t IER;
-  __IO uint32_t BTR;
-  __IO uint32_t EWL;
-  __I  uint32_t SR;
-  __IO uint32_t RFS;
-  __IO uint32_t RID;
-  __IO uint32_t RDA;
-  __IO uint32_t RDB;
-  __IO uint32_t TFI1;
-  __IO uint32_t TID1;
-  __IO uint32_t TDA1;
-  __IO uint32_t TDB1;
-  __IO uint32_t TFI2;
-  __IO uint32_t TID2;
-  __IO uint32_t TDA2;
-  __IO uint32_t TDB2;
-  __IO uint32_t TFI3;
-  __IO uint32_t TID3;
-  __IO uint32_t TDA3;
-  __IO uint32_t TDB3;
-} LPC_CAN_TypeDef;
-
-/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/
-typedef struct                          /* Common Registers                   */
-{
-  __I  uint32_t DMACIntStat;
-  __I  uint32_t DMACIntTCStat;
-  __O  uint32_t DMACIntTCClear;
-  __I  uint32_t DMACIntErrStat;
-  __O  uint32_t DMACIntErrClr;
-  __I  uint32_t DMACRawIntTCStat;
-  __I  uint32_t DMACRawIntErrStat;
-  __I  uint32_t DMACEnbldChns;
-  __IO uint32_t DMACSoftBReq;
-  __IO uint32_t DMACSoftSReq;
-  __IO uint32_t DMACSoftLBReq;
-  __IO uint32_t DMACSoftLSReq;
-  __IO uint32_t DMACConfig;
-  __IO uint32_t DMACSync;
-} LPC_GPDMA_TypeDef;
-
-typedef struct                          /* Channel Registers                  */
-{
-  __IO uint32_t DMACCSrcAddr;
-  __IO uint32_t DMACCDestAddr;
-  __IO uint32_t DMACCLLI;
-  __IO uint32_t DMACCControl;
-  __IO uint32_t DMACCConfig;
-} LPC_GPDMACH_TypeDef;
-
-/*------------- Universal Serial Bus (USB) -----------------------------------*/
-typedef struct
-{
-  __I  uint32_t HcRevision;             /* USB Host Registers                 */
-  __IO uint32_t HcControl;
-  __IO uint32_t HcCommandStatus;
-  __IO uint32_t HcInterruptStatus;
-  __IO uint32_t HcInterruptEnable;
-  __IO uint32_t HcInterruptDisable;
-  __IO uint32_t HcHCCA;
-  __I  uint32_t HcPeriodCurrentED;
-  __IO uint32_t HcControlHeadED;
-  __IO uint32_t HcControlCurrentED;
-  __IO uint32_t HcBulkHeadED;
-  __IO uint32_t HcBulkCurrentED;
-  __I  uint32_t HcDoneHead;
-  __IO uint32_t HcFmInterval;
-  __I  uint32_t HcFmRemaining;
-  __I  uint32_t HcFmNumber;
-  __IO uint32_t HcPeriodicStart;
-  __IO uint32_t HcLSTreshold;
-  __IO uint32_t HcRhDescriptorA;
-  __IO uint32_t HcRhDescriptorB;
-  __IO uint32_t HcRhStatus;
-  __IO uint32_t HcRhPortStatus1;
-  __IO uint32_t HcRhPortStatus2;
-       uint32_t RESERVED0[40];
-  __I  uint32_t Module_ID;
-
-  __I  uint32_t OTGIntSt;               /* USB On-The-Go Registers            */
-  __IO uint32_t OTGIntEn;
-  __O  uint32_t OTGIntSet;
-  __O  uint32_t OTGIntClr;
-  __IO uint32_t OTGStCtrl;
-  __IO uint32_t OTGTmr;
-       uint32_t RESERVED1[58];
-
-  __I  uint32_t USBDevIntSt;            /* USB Device Interrupt Registers     */
-  __IO uint32_t USBDevIntEn;
-  __O  uint32_t USBDevIntClr;
-  __O  uint32_t USBDevIntSet;
-
-  __O  uint32_t USBCmdCode;             /* USB Device SIE Command Registers   */
-  __I  uint32_t USBCmdData;
-
-  __I  uint32_t USBRxData;              /* USB Device Transfer Registers      */
-  __O  uint32_t USBTxData;
-  __I  uint32_t USBRxPLen;
-  __O  uint32_t USBTxPLen;
-  __IO uint32_t USBCtrl;
-  __O  uint32_t USBDevIntPri;
-
-  __I  uint32_t USBEpIntSt;             /* USB Device Endpoint Interrupt Regs */
-  __IO uint32_t USBEpIntEn;
-  __O  uint32_t USBEpIntClr;
-  __O  uint32_t USBEpIntSet;
-  __O  uint32_t USBEpIntPri;
-
-  __IO uint32_t USBReEp;                /* USB Device Endpoint Realization Reg*/
-  __O  uint32_t USBEpInd;
-  __IO uint32_t USBMaxPSize;
-
-  __I  uint32_t USBDMARSt;              /* USB Device DMA Registers           */
-  __O  uint32_t USBDMARClr;
-  __O  uint32_t USBDMARSet;
-       uint32_t RESERVED2[9];
-  __IO uint32_t USBUDCAH;
-  __I  uint32_t USBEpDMASt;
-  __O  uint32_t USBEpDMAEn;
-  __O  uint32_t USBEpDMADis;
-  __I  uint32_t USBDMAIntSt;
-  __IO uint32_t USBDMAIntEn;
-       uint32_t RESERVED3[2];
-  __I  uint32_t USBEoTIntSt;
-  __O  uint32_t USBEoTIntClr;
-  __O  uint32_t USBEoTIntSet;
-  __I  uint32_t USBNDDRIntSt;
-  __O  uint32_t USBNDDRIntClr;
-  __O  uint32_t USBNDDRIntSet;
-  __I  uint32_t USBSysErrIntSt;
-  __O  uint32_t USBSysErrIntClr;
-  __O  uint32_t USBSysErrIntSet;
-       uint32_t RESERVED4[15];
-
-  __I  uint32_t I2C_RX;                 /* USB OTG I2C Registers              */
-  __O  uint32_t I2C_WO;
-  __I  uint32_t I2C_STS;
-  __IO uint32_t I2C_CTL;
-  __IO uint32_t I2C_CLKHI;
-  __O  uint32_t I2C_CLKLO;
-       uint32_t RESERVED5[823];
-
-  union {
-  __IO uint32_t USBClkCtrl;             /* USB Clock Control Registers        */
-  __IO uint32_t OTGClkCtrl;
-  };
-  union {
-  __I  uint32_t USBClkSt;
-  __I  uint32_t OTGClkSt;
-  };
-} LPC_USB_TypeDef;
-
-/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/
-typedef struct
-{
-  __IO uint32_t MAC1;                   /* MAC Registers                      */
-  __IO uint32_t MAC2;
-  __IO uint32_t IPGT;
-  __IO uint32_t IPGR;
-  __IO uint32_t CLRT;
-  __IO uint32_t MAXF;
-  __IO uint32_t SUPP;
-  __IO uint32_t TEST;
-  __IO uint32_t MCFG;
-  __IO uint32_t MCMD;
-  __IO uint32_t MADR;
-  __O  uint32_t MWTD;
-  __I  uint32_t MRDD;
-  __I  uint32_t MIND;
-       uint32_t RESERVED0[2];
-  __IO uint32_t SA0;
-  __IO uint32_t SA1;
-  __IO uint32_t SA2;
-       uint32_t RESERVED1[45];
-  __IO uint32_t Command;                /* Control Registers                  */
-  __I  uint32_t Status;
-  __IO uint32_t RxDescriptor;
-  __IO uint32_t RxStatus;
-  __IO uint32_t RxDescriptorNumber;
-  __I  uint32_t RxProduceIndex;
-  __IO uint32_t RxConsumeIndex;
-  __IO uint32_t TxDescriptor;
-  __IO uint32_t TxStatus;
-  __IO uint32_t TxDescriptorNumber;
-  __IO uint32_t TxProduceIndex;
-  __I  uint32_t TxConsumeIndex;
-       uint32_t RESERVED2[10];
-  __I  uint32_t TSV0;
-  __I  uint32_t TSV1;
-  __I  uint32_t RSV;
-       uint32_t RESERVED3[3];
-  __IO uint32_t FlowControlCounter;
-  __I  uint32_t FlowControlStatus;
-       uint32_t RESERVED4[34];
-  __IO uint32_t RxFilterCtrl;           /* Rx Filter Registers                */
-  __IO uint32_t RxFilterWoLStatus;
-  __IO uint32_t RxFilterWoLClear;
-       uint32_t RESERVED5;
-  __IO uint32_t HashFilterL;
-  __IO uint32_t HashFilterH;
-       uint32_t RESERVED6[882];
-  __I  uint32_t IntStatus;              /* Module Control Registers           */
-  __IO uint32_t IntEnable;
-  __O  uint32_t IntClear;
-  __O  uint32_t IntSet;
-       uint32_t RESERVED7;
-  __IO uint32_t PowerDown;
-       uint32_t RESERVED8;
-  __IO uint32_t Module_ID;
-} LPC_EMAC_TypeDef;
-
-#if defined ( __CC_ARM   )
-#pragma anon_unions
-#endif
-
-
-/******************************************************************************/
-/*                         Peripheral memory map                              */
-/******************************************************************************/
-/* Base addresses                                                             */
-#define LPC_FLASH_BASE        (0x00000000UL)
-#define LPC_RAM_BASE          (0x10000000UL)
-#define LPC_GPIO_BASE         (0x2009C000UL)
-#define LPC_APB0_BASE         (0x40000000UL)
-#define LPC_APB1_BASE         (0x40080000UL)
-#define LPC_AHB_BASE          (0x50000000UL)
-#define LPC_CM3_BASE          (0xE0000000UL)
-
-/* APB0 peripherals                                                           */
-#define LPC_WDT_BASE          (LPC_APB0_BASE + 0x00000)
-#define LPC_TIM0_BASE         (LPC_APB0_BASE + 0x04000)
-#define LPC_TIM1_BASE         (LPC_APB0_BASE + 0x08000)
-#define LPC_UART0_BASE        (LPC_APB0_BASE + 0x0C000)
-#define LPC_UART1_BASE        (LPC_APB0_BASE + 0x10000)
-#define LPC_PWM1_BASE         (LPC_APB0_BASE + 0x18000)
-#define LPC_I2C0_BASE         (LPC_APB0_BASE + 0x1C000)
-#define LPC_SPI_BASE          (LPC_APB0_BASE + 0x20000)
-#define LPC_RTC_BASE          (LPC_APB0_BASE + 0x24000)
-#define LPC_GPIOINT_BASE      (LPC_APB0_BASE + 0x28080)
-#define LPC_PINCON_BASE       (LPC_APB0_BASE + 0x2C000)
-#define LPC_SSP1_BASE         (LPC_APB0_BASE + 0x30000)
-#define LPC_ADC_BASE          (LPC_APB0_BASE + 0x34000)
-#define LPC_CANAF_RAM_BASE    (LPC_APB0_BASE + 0x38000)
-#define LPC_CANAF_BASE        (LPC_APB0_BASE + 0x3C000)
-#define LPC_CANCR_BASE        (LPC_APB0_BASE + 0x40000)
-#define LPC_CAN1_BASE         (LPC_APB0_BASE + 0x44000)
-#define LPC_CAN2_BASE         (LPC_APB0_BASE + 0x48000)
-#define LPC_I2C1_BASE         (LPC_APB0_BASE + 0x5C000)
-
-/* APB1 peripherals                                                           */
-#define LPC_SSP0_BASE         (LPC_APB1_BASE + 0x08000)
-#define LPC_DAC_BASE          (LPC_APB1_BASE + 0x0C000)
-#define LPC_TIM2_BASE         (LPC_APB1_BASE + 0x10000)
-#define LPC_TIM3_BASE         (LPC_APB1_BASE + 0x14000)
-#define LPC_UART2_BASE        (LPC_APB1_BASE + 0x18000)
-#define LPC_UART3_BASE        (LPC_APB1_BASE + 0x1C000)
-#define LPC_I2C2_BASE         (LPC_APB1_BASE + 0x20000)
-#define LPC_I2S_BASE          (LPC_APB1_BASE + 0x28000)
-#define LPC_RIT_BASE          (LPC_APB1_BASE + 0x30000)
-#define LPC_MCPWM_BASE        (LPC_APB1_BASE + 0x38000)
-#define LPC_QEI_BASE          (LPC_APB1_BASE + 0x3C000)
-#define LPC_SC_BASE           (LPC_APB1_BASE + 0x7C000)
-
-/* AHB peripherals                                                            */
-#define LPC_EMAC_BASE         (LPC_AHB_BASE  + 0x00000)
-#define LPC_GPDMA_BASE        (LPC_AHB_BASE  + 0x04000)
-#define LPC_GPDMACH0_BASE     (LPC_AHB_BASE  + 0x04100)
-#define LPC_GPDMACH1_BASE     (LPC_AHB_BASE  + 0x04120)
-#define LPC_GPDMACH2_BASE     (LPC_AHB_BASE  + 0x04140)
-#define LPC_GPDMACH3_BASE     (LPC_AHB_BASE  + 0x04160)
-#define LPC_GPDMACH4_BASE     (LPC_AHB_BASE  + 0x04180)
-#define LPC_GPDMACH5_BASE     (LPC_AHB_BASE  + 0x041A0)
-#define LPC_GPDMACH6_BASE     (LPC_AHB_BASE  + 0x041C0)
-#define LPC_GPDMACH7_BASE     (LPC_AHB_BASE  + 0x041E0)
-#define LPC_USB_BASE          (LPC_AHB_BASE  + 0x0C000)
-
-/* GPIOs                                                                      */
-#define LPC_GPIO0_BASE        (LPC_GPIO_BASE + 0x00000)
-#define LPC_GPIO1_BASE        (LPC_GPIO_BASE + 0x00020)
-#define LPC_GPIO2_BASE        (LPC_GPIO_BASE + 0x00040)
-#define LPC_GPIO3_BASE        (LPC_GPIO_BASE + 0x00060)
-#define LPC_GPIO4_BASE        (LPC_GPIO_BASE + 0x00080)
-
-
-/******************************************************************************/
-/*                         Peripheral declaration                             */
-/******************************************************************************/
-#define LPC_SC                ((LPC_SC_TypeDef        *) LPC_SC_BASE       )
-#define LPC_GPIO0             ((LPC_GPIO_TypeDef      *) LPC_GPIO0_BASE    )
-#define LPC_GPIO1             ((LPC_GPIO_TypeDef      *) LPC_GPIO1_BASE    )
-#define LPC_GPIO2             ((LPC_GPIO_TypeDef      *) LPC_GPIO2_BASE    )
-#define LPC_GPIO3             ((LPC_GPIO_TypeDef      *) LPC_GPIO3_BASE    )
-#define LPC_GPIO4             ((LPC_GPIO_TypeDef      *) LPC_GPIO4_BASE    )
-#define LPC_WDT               ((LPC_WDT_TypeDef       *) LPC_WDT_BASE      )
-#define LPC_TIM0              ((LPC_TIM_TypeDef       *) LPC_TIM0_BASE     )
-#define LPC_TIM1              ((LPC_TIM_TypeDef       *) LPC_TIM1_BASE     )
-#define LPC_TIM2              ((LPC_TIM_TypeDef       *) LPC_TIM2_BASE     )
-#define LPC_TIM3              ((LPC_TIM_TypeDef       *) LPC_TIM3_BASE     )
-#define LPC_RIT               ((LPC_RIT_TypeDef       *) LPC_RIT_BASE      )
-#define LPC_UART0             ((LPC_UART0_TypeDef     *) LPC_UART0_BASE    )
-#define LPC_UART1             ((LPC_UART1_TypeDef     *) LPC_UART1_BASE    )
-#define LPC_UART2             ((LPC_UART_TypeDef      *) LPC_UART2_BASE    )
-#define LPC_UART3             ((LPC_UART_TypeDef      *) LPC_UART3_BASE    )
-#define LPC_PWM1              ((LPC_PWM_TypeDef       *) LPC_PWM1_BASE     )
-#define LPC_I2C0              ((LPC_I2C_TypeDef       *) LPC_I2C0_BASE     )
-#define LPC_I2C1              ((LPC_I2C_TypeDef       *) LPC_I2C1_BASE     )
-#define LPC_I2C2              ((LPC_I2C_TypeDef       *) LPC_I2C2_BASE     )
-#define LPC_I2S               ((LPC_I2S_TypeDef       *) LPC_I2S_BASE      )
-#define LPC_SPI               ((LPC_SPI_TypeDef       *) LPC_SPI_BASE      )
-#define LPC_RTC               ((LPC_RTC_TypeDef       *) LPC_RTC_BASE      )
-#define LPC_GPIOINT           ((LPC_GPIOINT_TypeDef   *) LPC_GPIOINT_BASE  )
-#define LPC_PINCON            ((LPC_PINCON_TypeDef    *) LPC_PINCON_BASE   )
-#define LPC_SSP0              ((LPC_SSP_TypeDef       *) LPC_SSP0_BASE     )
-#define LPC_SSP1              ((LPC_SSP_TypeDef       *) LPC_SSP1_BASE     )
-#define LPC_ADC               ((LPC_ADC_TypeDef       *) LPC_ADC_BASE      )
-#define LPC_DAC               ((LPC_DAC_TypeDef       *) LPC_DAC_BASE      )
-#define LPC_CANAF_RAM         ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE)
-#define LPC_CANAF             ((LPC_CANAF_TypeDef     *) LPC_CANAF_BASE    )
-#define LPC_CANCR             ((LPC_CANCR_TypeDef     *) LPC_CANCR_BASE    )
-#define LPC_CAN1              ((LPC_CAN_TypeDef       *) LPC_CAN1_BASE     )
-#define LPC_CAN2              ((LPC_CAN_TypeDef       *) LPC_CAN2_BASE     )
-#define LPC_MCPWM             ((LPC_MCPWM_TypeDef     *) LPC_MCPWM_BASE    )
-#define LPC_QEI               ((LPC_QEI_TypeDef       *) LPC_QEI_BASE      )
-#define LPC_EMAC              ((LPC_EMAC_TypeDef      *) LPC_EMAC_BASE     )
-#define LPC_GPDMA             ((LPC_GPDMA_TypeDef     *) LPC_GPDMA_BASE    )
-#define LPC_GPDMACH0          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH0_BASE )
-#define LPC_GPDMACH1          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH1_BASE )
-#define LPC_GPDMACH2          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH2_BASE )
-#define LPC_GPDMACH3          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH3_BASE )
-#define LPC_GPDMACH4          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH4_BASE )
-#define LPC_GPDMACH5          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH5_BASE )
-#define LPC_GPDMACH6          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH6_BASE )
-#define LPC_GPDMACH7          ((LPC_GPDMACH_TypeDef   *) LPC_GPDMACH7_BASE )
-#define LPC_USB               ((LPC_USB_TypeDef       *) LPC_USB_BASE      )
-
-#endif  // __LPC17xx_H__
diff -r 1df0b61d3b5a -r f151d08d335c libs/LPC17xx/score_cm3.h
--- a/libs/LPC17xx/score_cm3.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,899 +0,0 @@
-/******************************************************************************
- * @file:    core_cm3.h
- * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File
- * @version: V1.30 PRE-RELEASE
- * @date:    30. July 2009
- *----------------------------------------------------------------------------
- *
- * Copyright (C) 2009 ARM Limited. All rights reserved.
- *
- * ARM Limited (ARM) is supplying this software for use with Cortex-Mx
- * processor based microcontrollers.  This file can be freely distributed
- * within development tools that are supporting such ARM based processors.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
- * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
- * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
- * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
- *
- ******************************************************************************/
-
-#ifndef __CM3_CORE_H__
-#define __CM3_CORE_H__
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#define __CM3_CMSIS_VERSION_MAIN  (0x01)                                                       /*!< [31:16] CMSIS HAL main version */
-#define __CM3_CMSIS_VERSION_SUB   (0x30)                                                       /*!< [15:0]  CMSIS HAL sub version  */
-#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number       */
-
-#define __CORTEX_M                (0x03)                                                       /*!< Cortex core                    */
-
-/**
- *  Lint configuration \n
- *  ----------------------- \n
- *
- *  The following Lint messages will be suppressed and not shown: \n
- *  \n
- *    --- Error 10: --- \n
- *    register uint32_t __regBasePri         __asm("basepri"); \n
- *    Error 10: Expecting ';' \n
- *     \n
- *    --- Error 530: --- \n
- *    return(__regBasePri); \n
- *    Warning 530: Symbol '__regBasePri' (line 264) not initialized \n
- *     \n
- *    --- Error 550: --- \n
- *      __regBasePri = (basePri & 0x1ff); \n
- *    } \n
- *    Warning 550: Symbol '__regBasePri' (line 271) not accessed \n
- *     \n
- *    --- Error 754: --- \n
- *    uint32_t RESERVED0[24]; \n
- *    Info 754: local structure member '<some, not used in the HAL>' (line 109, file ./cm3_core.h) not referenced \n
- *     \n
- *    --- Error 750: --- \n
- *    #define __CM3_CORE_H__ \n
- *    Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced \n
- *     \n
- *    --- Error 528: --- \n
- *    static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n
- *    Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced \n
- *     \n
- *    --- Error 751: --- \n
- *    } InterruptType_Type; \n
- *    Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced \n
- * \n
- * \n
- *    Note:  To re-enable a Message, insert a space before 'lint' * \n
- *
- */
-
-/*lint -save */
-/*lint -e10  */
-/*lint -e530 */
-/*lint -e550 */
-/*lint -e754 */
-/*lint -e750 */
-/*lint -e528 */
-/*lint -e751 */
-
-
-#include <stdint.h>                           /* Include standard types */
-
-#if defined (__ICCARM__)
-  #include <intrinsics.h>                     /* IAR Intrinsics   */
-#endif
-
-
-#ifndef __NVIC_PRIO_BITS
-  #define __NVIC_PRIO_BITS    4               /*!< standard definition for NVIC Priority Bits */
-#endif
-
-
-
-
-/**
- * IO definitions
- *
- * define access restrictions to peripheral registers
- */
-
-#ifdef __cplusplus
-#define     __I     volatile                  /*!< defines 'read only' permissions      */
-#else
-#define     __I     volatile const            /*!< defines 'read only' permissions      */
-#endif
-#define     __O     volatile                  /*!< defines 'write only' permissions     */
-#define     __IO    volatile                  /*!< defines 'read / write' permissions   */
-
-
-
-/*******************************************************************************
- *                 Register Abstraction
- ******************************************************************************/
-
-
-/* System Reset */
-#define NVIC_VECTRESET              0         /*!< Vector Reset Bit             */
-#define NVIC_SYSRESETREQ            2         /*!< System Reset Request         */
-#define NVIC_AIRCR_VECTKEY    (0x5FA << 16)   /*!< AIRCR Key for write access   */
-#define NVIC_AIRCR_ENDIANESS        15        /*!< Endianess                    */
-
-/* Core Debug */
-#define CoreDebug_DEMCR_TRCENA (1 << 24)      /*!< DEMCR TRCENA enable          */
-#define ITM_TCR_ITMENA              1         /*!< ITM enable                   */
-
-
-
-
-/* memory mapping struct for Nested Vectored Interrupt Controller (NVIC) */
-typedef struct
-{
-  __IO uint32_t ISER[8];                      /*!< Interrupt Set Enable Register            */
-       uint32_t RESERVED0[24];
-  __IO uint32_t ICER[8];                      /*!< Interrupt Clear Enable Register          */
-       uint32_t RSERVED1[24];
-  __IO uint32_t ISPR[8];                      /*!< Interrupt Set Pending Register           */
-       uint32_t RESERVED2[24];
-  __IO uint32_t ICPR[8];                      /*!< Interrupt Clear Pending Register         */
-       uint32_t RESERVED3[24];
-  __IO uint32_t IABR[8];                      /*!< Interrupt Active bit Register            */
-       uint32_t RESERVED4[56];
-  __IO uint8_t  IP[240];                      /*!< Interrupt Priority Register, 8Bit wide   */
-       uint32_t RESERVED5[644];
-  __O  uint32_t STIR;                         /*!< Software Trigger Interrupt Register      */
-}  NVIC_Type;
-
-
-/* memory mapping struct for System Control Block */
-typedef struct
-{
-  __I  uint32_t CPUID;                        /*!< CPU ID Base Register                                     */
-  __IO uint32_t ICSR;                         /*!< Interrupt Control State Register                         */
-  __IO uint32_t VTOR;                         /*!< Vector Table Offset Register                             */
-  __IO uint32_t AIRCR;                        /*!< Application Interrupt / Reset Control Register           */
-  __IO uint32_t SCR;                          /*!< System Control Register                                  */
-  __IO uint32_t CCR;                          /*!< Configuration Control Register                           */
-  __IO uint8_t  SHP[12];                      /*!< System Handlers Priority Registers (4-7, 8-11, 12-15)    */
-  __IO uint32_t SHCSR;                        /*!< System Handler Control and State Register                */
-  __IO uint32_t CFSR;                         /*!< Configurable Fault Status Register                       */
-  __IO uint32_t HFSR;                         /*!< Hard Fault Status Register                               */
-  __IO uint32_t DFSR;                         /*!< Debug Fault Status Register                              */
-  __IO uint32_t MMFAR;                        /*!< Mem Manage Address Register                              */
-  __IO uint32_t BFAR;                         /*!< Bus Fault Address Register                               */
-  __IO uint32_t AFSR;                         /*!< Auxiliary Fault Status Register                          */
-  __I  uint32_t PFR[2];                       /*!< Processor Feature Register                               */
-  __I  uint32_t DFR;                          /*!< Debug Feature Register                                   */
-  __I  uint32_t ADR;                          /*!< Auxiliary Feature Register                               */
-  __I  uint32_t MMFR[4];                      /*!< Memory Model Feature Register                            */
-  __I  uint32_t ISAR[5];                      /*!< ISA Feature Register                                     */
-} SCB_Type;
-
-
-/* memory mapping struct for SysTick */
-typedef struct
-{
-  __IO uint32_t CTRL;                         /*!< SysTick Control and Status Register */
-  __IO uint32_t LOAD;                         /*!< SysTick Reload Value Register       */
-  __IO uint32_t VAL;                          /*!< SysTick Current Value Register      */
-  __I  uint32_t CALIB;                        /*!< SysTick Calibration Register        */
-} SysTick_Type;
-
-
-/* memory mapping structur for ITM */
-typedef struct
-{
-  __O  union
-  {
-    __O  uint8_t    u8;                       /*!< ITM Stimulus Port 8-bit               */
-    __O  uint16_t   u16;                      /*!< ITM Stimulus Port 16-bit              */
-    __O  uint32_t   u32;                      /*!< ITM Stimulus Port 32-bit              */
-  }  PORT [32];                               /*!< ITM Stimulus Port Registers           */
-       uint32_t RESERVED0[864];
-  __IO uint32_t TER;                          /*!< ITM Trace Enable Register             */
-       uint32_t RESERVED1[15];
-  __IO uint32_t TPR;                          /*!< ITM Trace Privilege Register          */
-       uint32_t RESERVED2[15];
-  __IO uint32_t TCR;                          /*!< ITM Trace Control Register            */
-       uint32_t RESERVED3[29];
-  __IO uint32_t IWR;                          /*!< ITM Integration Write Register        */
-  __IO uint32_t IRR;                          /*!< ITM Integration Read Register         */
-  __IO uint32_t IMCR;                         /*!< ITM Integration Mode Control Register */
-       uint32_t RESERVED4[43];
-  __IO uint32_t LAR;                          /*!< ITM Lock Access Register              */
-  __IO uint32_t LSR;                          /*!< ITM Lock Status Register              */
-       uint32_t RESERVED5[6];
-  __I  uint32_t PID4;                         /*!< ITM Product ID Registers              */
-  __I  uint32_t PID5;
-  __I  uint32_t PID6;
-  __I  uint32_t PID7;
-  __I  uint32_t PID0;
-  __I  uint32_t PID1;
-  __I  uint32_t PID2;
-  __I  uint32_t PID3;
-  __I  uint32_t CID0;
-  __I  uint32_t CID1;
-  __I  uint32_t CID2;
-  __I  uint32_t CID3;
-} ITM_Type;
-
-
-/* memory mapped struct for Interrupt Type */
-typedef struct
-{
-       uint32_t RESERVED0;
-  __I  uint32_t ICTR;                         /*!< Interrupt Control Type Register  */
-#if ((defined __CM3_REV) && (__CM3_REV >= 0x200))
-  __IO uint32_t ACTLR;                        /*!< Auxiliary Control Register       */
-#else
-       uint32_t RESERVED1;
-#endif
-} InterruptType_Type;
-
-
-/* Memory Protection Unit */
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1)
-typedef struct
-{
-  __I  uint32_t TYPE;                         /*!< MPU Type Register                               */
-  __IO uint32_t CTRL;                         /*!< MPU Control Register                            */
-  __IO uint32_t RNR;                          /*!< MPU Region RNRber Register                      */
-  __IO uint32_t RBAR;                         /*!< MPU Region Base Address Register                */
-  __IO uint32_t RASR;                         /*!< MPU Region Attribute and Size Register          */
-  __IO uint32_t RBAR_A1;                      /*!< MPU Alias 1 Region Base Address Register        */
-  __IO uint32_t RASR_A1;                      /*!< MPU Alias 1 Region Attribute and Size Register  */
-  __IO uint32_t RBAR_A2;                      /*!< MPU Alias 2 Region Base Address Register        */
-  __IO uint32_t RASR_A2;                      /*!< MPU Alias 2 Region Attribute and Size Register  */
-  __IO uint32_t RBAR_A3;                      /*!< MPU Alias 3 Region Base Address Register        */
-  __IO uint32_t RASR_A3;                      /*!< MPU Alias 3 Region Attribute and Size Register  */
-} MPU_Type;
-#endif
-
-
-/* Core Debug Register */
-typedef struct
-{
-  __IO uint32_t DHCSR;                        /*!< Debug Halting Control and Status Register       */
-  __O  uint32_t DCRSR;                        /*!< Debug Core Register Selector Register           */
-  __IO uint32_t DCRDR;                        /*!< Debug Core Register Data Register               */
-  __IO uint32_t DEMCR;                        /*!< Debug Exception and Monitor Control Register    */
-} CoreDebug_Type;
-
-
-/* Memory mapping of Cortex-M3 Hardware */
-#define SCS_BASE            (0xE000E000)                              /*!< System Control Space Base Address    */
-#define ITM_BASE            (0xE0000000)                              /*!< ITM Base Address                     */
-#define CoreDebug_BASE      (0xE000EDF0)                              /*!< Core Debug Base Address              */
-#define SysTick_BASE        (SCS_BASE +  0x0010)                      /*!< SysTick Base Address                 */
-#define NVIC_BASE           (SCS_BASE +  0x0100)                      /*!< NVIC Base Address                    */
-#define SCB_BASE            (SCS_BASE +  0x0D00)                      /*!< System Control Block Base Address    */
-
-#define InterruptType       ((InterruptType_Type *) SCS_BASE)         /*!< Interrupt Type Register              */
-#define SCB                 ((SCB_Type *)           SCB_BASE)         /*!< SCB configuration struct             */
-#define SysTick             ((SysTick_Type *)       SysTick_BASE)     /*!< SysTick configuration struct         */
-#define NVIC                ((NVIC_Type *)          NVIC_BASE)        /*!< NVIC configuration struct            */
-#define ITM                 ((ITM_Type *)           ITM_BASE)         /*!< ITM configuration struct             */
-#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct      */
-
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1)
-  #define MPU_BASE          (SCS_BASE +  0x0D90)                      /*!< Memory Protection Unit               */
-  #define MPU               ((MPU_Type*)            MPU_BASE)         /*!< Memory Protection Unit               */
-#endif
-
-
-/*******************************************************************************
- *                Hardware Abstraction Layer
- ******************************************************************************/
-
-
-#if defined ( __CC_ARM   )
-  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */
-  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */
-
-#elif defined ( __ICCARM__ )
-  #define __ASM           __asm                                       /*!< asm keyword for IAR Compiler           */
-  #define __INLINE        inline                                      /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
-
-#elif defined   (  __GNUC__  )
-  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
-  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
-
-#elif defined   (  __TASKING__  )
-  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler          */
-  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler       */
-
-#endif
-
-
-/* ###################  Compiler specific Intrinsics  ########################### */
-
-#if defined ( __CC_ARM   ) /*------------------RealView Compiler -----------------*/
-/* ARM armcc specific functions */
-
-#define __enable_fault_irq                __enable_fiq
-#define __disable_fault_irq               __disable_fiq
-
-#define __NOP                             __nop
-#define __WFI                             __wfi
-#define __WFE                             __wfe
-#define __SEV                             __sev
-#define __ISB()                           __isb(0)
-#define __DSB()                           __dsb(0)
-#define __DMB()                           __dmb(0)
-#define __REV                             __rev
-#define __RBIT                            __rbit
-#define __LDREXB(ptr)                     ((unsigned char ) __ldrex(ptr))
-#define __LDREXH(ptr)                     ((unsigned short) __ldrex(ptr))
-#define __LDREXW(ptr)                     ((unsigned int  ) __ldrex(ptr))
-#define __STREXB(value, ptr)              __strex(value, ptr)
-#define __STREXH(value, ptr)              __strex(value, ptr)
-#define __STREXW(value, ptr)              __strex(value, ptr)
-
-
-/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */
-/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */
-/* intrinsic void __enable_irq();     */
-/* intrinsic void __disable_irq();    */
-
-
-#if (__ARMCC_VERSION < 400000)
-
-#else  /* (__ARMCC_VERSION >= 400000)  */
-
-
-/**
- * @brief  Remove the exclusive lock created by ldrex
- *
- * @param  none
- * @return none
- *
- * Removes the exclusive lock which is created by ldrex.
- */
-#define __CLREX                           __clrex
-
-/**
- * @brief  Return the Base Priority value
- *
- * @param  none
- * @return uint32_t BasePriority
- *
- * Return the content of the base priority register
- */
-static __INLINE uint32_t  __get_BASEPRI(void)
-{
-  register uint32_t __regBasePri         __ASM("basepri");
-  return(__regBasePri);
-}
-
-/**
- * @brief  Set the Base Priority value
- *
- * @param  uint32_t BasePriority
- * @return none
- *
- * Set the base priority register
- */
-static __INLINE void __set_BASEPRI(uint32_t basePri)
-{
-  register uint32_t __regBasePri         __ASM("basepri");
-  __regBasePri = (basePri & 0xff);
-}
-
-/**
- * @brief  Return the Priority Mask value
- *
- * @param  none
- * @return uint32_t PriMask
- *
- * Return the state of the priority mask bit from the priority mask
- * register
- */
-static __INLINE uint32_t __get_PRIMASK(void)
-{
-  register uint32_t __regPriMask         __ASM("primask");
-  return(__regPriMask);
-}
-
-/**
- * @brief  Set the Priority Mask value
- *
- * @param  uint32_t PriMask
- * @return none
- *
- * Set the priority mask bit in the priority mask register
- */
-static __INLINE void __set_PRIMASK(uint32_t priMask)
-{
-  register uint32_t __regPriMask         __ASM("primask");
-  __regPriMask = (priMask);
-}
-
-/**
- * @brief  Return the Fault Mask value
- *
- * @param  none
- * @return uint32_t FaultMask
- *
- * Return the content of the fault mask register
- */
-static __INLINE uint32_t __get_FAULTMASK(void)
-{
-  register uint32_t __regFaultMask       __ASM("faultmask");
-  return(__regFaultMask);
-}
-
-/**
- * @brief  Set the Fault Mask value
- *
- * @param  uint32_t faultMask value
- * @return none
- *
- * Set the fault mask register
- */
-static __INLINE void __set_FAULTMASK(uint32_t faultMask)
-{
-  register uint32_t __regFaultMask       __ASM("faultmask");
-  __regFaultMask = (faultMask & 1);
-}
-
-/**
- * @brief  Return the Control Register value
- *
- * @param  none
- * @return uint32_t Control value
- *
- * Return the content of the control register
- */
-static __INLINE uint32_t __get_CONTROL(void)
-{
-  register uint32_t __regControl         __ASM("control");
-  return(__regControl);
-}
-
-/**
- * @brief  Set the Control Register value
- *
- * @param  uint32_t Control value
- * @return none
- *
- * Set the control register
- */
-static __INLINE void __set_CONTROL(uint32_t control)
-{
-  register uint32_t __regControl         __ASM("control");
-  __regControl = control;
-}
-
-#endif /* __ARMCC_VERSION  */
-
-
-
-#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
-/* IAR iccarm specific functions */
-
-#define __enable_irq                              __enable_interrupt        /*!< global Interrupt enable */
-#define __disable_irq                             __disable_interrupt       /*!< global Interrupt disable */
-
-static __INLINE void __enable_fault_irq()         { __ASM ("cpsie f"); }
-static __INLINE void __disable_fault_irq()        { __ASM ("cpsid f"); }
-
-#define __NOP                                     __no_operation()          /*!< no operation intrinsic in IAR Compiler */
-static __INLINE  void __WFI()                     { __ASM ("wfi"); }
-static __INLINE  void __WFE()                     { __ASM ("wfe"); }
-static __INLINE  void __SEV()                     { __ASM ("sev"); }
-static __INLINE  void __CLREX()                   { __ASM ("clrex"); }
-
-/* intrinsic void __ISB(void)                                     */
-/* intrinsic void __DSB(void)                                     */
-/* intrinsic void __DMB(void)                                     */
-/* intrinsic void __set_PRIMASK();                                */
-/* intrinsic void __get_PRIMASK();                                */
-/* intrinsic void __set_FAULTMASK();                              */
-/* intrinsic void __get_FAULTMASK();                              */
-/* intrinsic uint32_t __REV(uint32_t value);                      */
-/* intrinsic uint32_t __REVSH(uint32_t value);                    */
-/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */
-/* intrinsic unsigned long __LDREX(unsigned long *);              */
-
-
-#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
-/* GNU gcc specific functions */
-
-static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
-static __INLINE void __disable_irq()              { __ASM volatile ("cpsid i"); }
-
-static __INLINE void __enable_fault_irq()         { __ASM volatile ("cpsie f"); }
-static __INLINE void __disable_fault_irq()        { __ASM volatile ("cpsid f"); }
-
-static __INLINE void __NOP()                      { __ASM volatile ("nop"); }
-static __INLINE void __WFI()                      { __ASM volatile ("wfi"); }
-static __INLINE void __WFE()                      { __ASM volatile ("wfe"); }
-static __INLINE void __SEV()                      { __ASM volatile ("sev"); }
-static __INLINE void __ISB()                      { __ASM volatile ("isb"); }
-static __INLINE void __DSB()                      { __ASM volatile ("dsb"); }
-static __INLINE void __DMB()                      { __ASM volatile ("dmb"); }
-static __INLINE void __CLREX()                    { __ASM volatile ("clrex"); }
-
-
-#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
-/* TASKING carm specific functions */
-
-/*
- * The CMSIS functions have been implemented as intrinsics in the compiler.
- * Please use "carm -?i" to get an up to date list of all instrinsics,
- * Including the CMSIS ones.
- */
-
-#endif
-
-
-
-/* ##########################   NVIC functions  #################################### */
-
-
-/**
- * @brief  Set the Priority Grouping in NVIC Interrupt Controller
- *
- * @param  uint32_t priority_grouping is priority grouping field
- * @return none
- *
- * Set the priority grouping field using the required unlock sequence.
- * The parameter priority_grouping is assigned to the field
- * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used.
- * In case of a conflict between priority grouping and available
- * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
- */
-static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
-{
-  uint32_t reg_value;
-  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);                         /* only values 0..7 are used          */
-  
-  reg_value  = SCB->AIRCR;                                                    /* read old register configuration    */
-  reg_value &= ~((0xFFFFU << 16) | (0x0F << 8));                              /* clear bits to change               */
-  reg_value  = ((reg_value | NVIC_AIRCR_VECTKEY | (PriorityGroupTmp << 8)));  /* Insert write key and priorty group */
-  SCB->AIRCR = reg_value;
-}
-
-/**
- * @brief  Get the Priority Grouping from NVIC Interrupt Controller
- *
- * @param  none
- * @return uint32_t   priority grouping field
- *
- * Get the priority grouping from NVIC Interrupt Controller.
- * priority grouping is SCB->AIRCR [10:8] PRIGROUP field.
- */
-static __INLINE uint32_t NVIC_GetPriorityGrouping(void)
-{
-  return ((SCB->AIRCR >> 8) & 0x07);                                          /* read priority grouping field */
-}
-
-/**
- * @brief  Enable Interrupt in NVIC Interrupt Controller
- *
- * @param  IRQn_Type IRQn specifies the interrupt number
- * @return none
- *
- * Enable a device specific interupt in the NVIC interrupt controller.
- * The interrupt number cannot be a negative value.
- */
-static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
-{
-  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */
-}
-
-/**
- * @brief  Disable the interrupt line for external interrupt specified
- *
- * @param  IRQn_Type IRQn is the positive number of the external interrupt
- * @return none
- *
- * Disable a device specific interupt in the NVIC interrupt controller.
- * The interrupt number cannot be a negative value.
- */
-static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
-{
-  NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */
-}
-
-/**
- * @brief  Read the interrupt pending bit for a device specific interrupt source
- *
- * @param  IRQn_Type IRQn is the number of the device specifc interrupt
- * @return uint32_t 1 if pending interrupt else 0
- *
- * Read the pending register in NVIC and return 1 if its status is pending,
- * otherwise it returns 0
- */
-static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
-{
-  return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */
-}
-
-/**
- * @brief  Set the pending bit for an external interrupt
- *
- * @param  IRQn_Type IRQn is the Number of the interrupt
- * @return none
- *
- * Set the pending bit for the specified interrupt.
- * The interrupt number cannot be a negative value.
- */
-static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */
-}
-
-/**
- * @brief  Clear the pending bit for an external interrupt
- *
- * @param  IRQn_Type IRQn is the Number of the interrupt
- * @return none
- *
- * Clear the pending bit for the specified interrupt.
- * The interrupt number cannot be a negative value.
- */
-static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */
-}
-
-/**
- * @brief  Read the active bit for an external interrupt
- *
- * @param  IRQn_Type  IRQn is the Number of the interrupt
- * @return uint32_t   1 if active else 0
- *
- * Read the active register in NVIC and returns 1 if its status is active,
- * otherwise it returns 0.
- */
-static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
-{
-  return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */
-}
-
-/**
- * @brief  Set the priority for an interrupt
- *
- * @param  IRQn_Type IRQn is the Number of the interrupt
- * @param  priority is the priority for the interrupt
- * @return none
- *
- * Set the priority for the specified interrupt. The interrupt
- * number can be positive to specify an external (device specific)
- * interrupt, or negative to specify an internal (core) interrupt. \n
- *
- * Note: The priority cannot be set for every core interrupt.
- */
-static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
-{
-  if(IRQn < 0) {
-    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */
-  else {
-    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts      */
-}
-
-/**
- * @brief  Read the priority for an interrupt
- *
- * @param  IRQn_Type IRQn is the Number of the interrupt
- * @return uint32_t  priority is the priority for the interrupt
- *
- * Read the priority for the specified interrupt. The interrupt
- * number can be positive to specify an external (device specific)
- * interrupt, or negative to specify an internal (core) interrupt.
- *
- * The returned priority value is automatically aligned to the implemented
- * priority bits of the microcontroller.
- *
- * Note: The priority cannot be set for every core interrupt.
- */
-static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
-{
-
-  if(IRQn < 0) {
-    return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M3 system interrupts */
-  else {
-    return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */
-}
-
-
-/**
- * @brief  Encode the priority for an interrupt
- *
- * @param  uint32_t PriorityGroup   is the used priority group
- * @param  uint32_t PreemptPriority is the preemptive priority value (starting from 0)
- * @param  uint32_t SubPriority     is the sub priority value (starting from 0)
- * @return uint32_t                    the priority for the interrupt
- *
- * Encode the priority for an interrupt with the given priority group,
- * preemptive priority value and sub priority value.
- * In case of a conflict between priority grouping and available
- * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.
- *
- * The returned priority value can be used for NVIC_SetPriority(...) function
- */
-static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
-{
-  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);                         /* only values 0..7 are used          */
-  uint32_t PreemptPriorityBits;
-  uint32_t SubPriorityBits;
-
-  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;
-  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;
- 
-  return (
-           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) |
-           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))
-         );
-}
-
-
-/**
- * @brief  Decode the priority of an interrupt
- *
- * @param  uint32_t   Priority       the priority for the interrupt
- * @param  uint32_t   PrioGroup   is the used priority group
- * @param  uint32_t* pPreemptPrio is the preemptive priority value (starting from 0)
- * @param  uint32_t* pSubPrio     is the sub priority value (starting from 0)
- * @return none
- *
- * Decode an interrupt priority value with the given priority group to
- * preemptive priority value and sub priority value.
- * In case of a conflict between priority grouping and available
- * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.
- *
- * The priority value can be retrieved with NVIC_GetPriority(...) function
- */
-static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)
-{
-  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);                         /* only values 0..7 are used          */
-  uint32_t PreemptPriorityBits;
-  uint32_t SubPriorityBits;
-
-  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;
-  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;
-  
-  *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1);
-  *pSubPriority     = (Priority                   ) & ((1 << (SubPriorityBits    )) - 1);
-}
-
-
-
-/* ##################################    SysTick function  ############################################ */
-
-#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0)
-
-/* SysTick constants */
-#define SYSTICK_ENABLE              0                                          /* Config-Bit to start or stop the SysTick Timer                         */
-#define SYSTICK_TICKINT             1                                          /* Config-Bit to enable or disable the SysTick interrupt                 */
-#define SYSTICK_CLKSOURCE           2                                          /* Clocksource has the offset 2 in SysTick Control and Status Register   */
-#define SYSTICK_MAXCOUNT       ((1<<24) -1)                                    /* SysTick MaxCount                                                      */
-
-/**
- * @brief  Initialize and start the SysTick counter and its interrupt.
- *
- * @param  uint32_t ticks is the number of ticks between two interrupts
- * @return  none
- *
- * Initialise the system tick timer and its interrupt and start the
- * system tick timer / counter in free running mode to generate
- * periodical interrupts.
- */
-static __INLINE uint32_t SysTick_Config(uint32_t ticks)
-{
-  if (ticks > SYSTICK_MAXCOUNT)  return (1);                                             /* Reload value impossible */
-
-  SysTick->LOAD  =  (ticks & SYSTICK_MAXCOUNT) - 1;                                      /* set reload register */
-  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);                            /* set Priority for Cortex-M0 System Interrupts */
-  SysTick->VAL   =  (0x00);                                                              /* Load the SysTick Counter Value */
-  SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<<SYSTICK_ENABLE) | (1<<SYSTICK_TICKINT); /* Enable SysTick IRQ and SysTick Timer */
-  return (0);                                                                            /* Function successful */
-}
-
-#endif
-
-
-
-
-
-/* ##################################    Reset function  ############################################ */
-
-/**
- * @brief  Initiate a system reset request.
- *
- * @param   none
- * @return  none
- *
- * Initialize a system reset request to reset the MCU
- */
-static __INLINE void NVIC_SystemReset(void)
-{
-  SCB->AIRCR  = (NVIC_AIRCR_VECTKEY | (SCB->AIRCR & (0x700)) | (1<<NVIC_SYSRESETREQ)); /* Keep priority group unchanged */
-  __DSB();                                                                             /* Ensure completion of memory access */
-  while(1);                                                                            /* wait until reset */
-}
-
-
-/* ##################################### Debug In/Output function ########################################### */
-
-extern volatile int ITM_RxBuffer;                    /* variable to receive characters                             */
-#define             ITM_RXBUFFER_EMPTY    0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
-
-
-/**
- * @brief  Outputs a character via the ITM channel 0
- *
- * @param   uint32_t character to output
- * @return  uint32_t input character
- *
- * The function outputs a character via the ITM channel 0.
- * The function returns when no debugger is connected that has booked the output.
- * It is blocking when a debugger is connected, but the previous character send is not transmitted.
- */
-static __INLINE uint32_t ITM_SendChar (uint32_t ch)
-{
-  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA)  &&
-      (ITM->TCR & ITM_TCR_ITMENA)                  &&
-      (ITM->TER & (1UL << 0))  )
-  {
-    while (ITM->PORT[0].u32 == 0);
-    ITM->PORT[0].u8 = (uint8_t) ch;
-  }
-  return (ch);
-}
-
-
-/**
- * @brief  Inputs a character via variable ITM_RxBuffer
- *
- * @param   none
- * @return  uint32_t input character
- *
- * The function inputs a character via variable ITM_RxBuffer.
- * The function returns when no debugger is connected that has booked the output.
- * It is blocking when a debugger is connected, but the previous character send is not transmitted.
- */
-static __INLINE int ITM_ReceiveChar (void) {
-  int ch = -1;                               /* no character available */
-
-  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
-    ch = ITM_RxBuffer;
-    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
-  }
-  
-  return (ch);
-}
-
-
-/**
- * @brief  Check if  a character via variable ITM_RxBuffer is available
- *
- * @param   none
- * @return  int  1 = character available, 0 = no character available
- *
- * The function checks  variable ITM_RxBuffer whether a character is available or not.
- * The function returns '1' if a character is available and '0' if no character is available.
- */
-static __INLINE int ITM_CheckChar (void) {
-
-  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
-    return (0);                                 /* no character available */
-  } else {
-    return (1);                                 /*    character available */
-  }
-}
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CM3_CORE_H__ */
-
-/*lint -restore */
diff -r 1df0b61d3b5a -r f151d08d335c libs/MRI_Hooks.cpp
--- a/libs/MRI_Hooks.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#include "MRI_Hooks.h"
-
-#include <sLPC17xx.h>
-#include <mri.h>
-
-// This is used by MRI to turn pins on and off when entering and leaving MRI. Useful for not burning everything down
-// See http://smoothieware.org/mri-debugging 
-
-extern "C" {
-    static uint32_t _set_high_on_debug[5] = {
-//         (1 << 4) | (1 << 10) | (1 << 19) | (1 << 21), // smoothieboard stepper EN pins
-        0,
-        0,
-        0,
-        0,
-        0
-    };
-    static uint32_t _set_low_on_debug[5]  = {
-        0,
-        0,
-//         (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7), // smoothieboard heater outputs
-        0,
-        0,
-        0
-    };
-
-    static uint32_t _previous_state[5];
-
-    static LPC_GPIO_TypeDef* io;
-    static int i;
-
-    void __mriPlatform_EnteringDebuggerHook()
-    {
-        for (i = 0; i < 5; i++)
-        {
-            io           = (LPC_GPIO_TypeDef*) (LPC_GPIO_BASE + (0x20 * i));
-            io->FIOMASK &= ~(_set_high_on_debug[i] | _set_low_on_debug[i]);
-
-            _previous_state[i] = io->FIOPIN;
-
-            io->FIOSET   = _set_high_on_debug[i];
-            io->FIOCLR   = _set_low_on_debug[i];
-        }
-    }
-
-    void __mriPlatform_LeavingDebuggerHook()
-    {
-        for (i = 0; i < 5; i++)
-        {
-            io           = (LPC_GPIO_TypeDef*) (LPC_GPIO_BASE + (0x20 * i));
-            io->FIOMASK &= ~(_set_high_on_debug[i] | _set_low_on_debug[i]);
-            io->FIOSET   =   _previous_state[i]  & (_set_high_on_debug[i] | _set_low_on_debug[i]);
-            io->FIOCLR   = (~_previous_state[i]) & (_set_high_on_debug[i] | _set_low_on_debug[i]);
-        }
-    }
-
-    void set_high_on_debug(int port, int pin)
-    {
-        if ((port >= 5) || (port < 0))
-            return;
-        if ((pin >= 32) || (pin < 0))
-            return;
-        _set_high_on_debug[port] |= (1<<pin);
-    }
-
-    void set_low_on_debug(int port, int pin)
-    {
-        if ((port >= 5) || (port < 0))
-            return;
-        if ((pin >= 32) || (pin < 0))
-            return;
-        _set_low_on_debug[port] |= (1<<pin);
-    }
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/MRI_Hooks.h
--- a/libs/MRI_Hooks.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#ifndef _MRI_HOOKS_H
-#define _MRI_HOOKS_H
-
-extern "C" {
-    void __mriPlatform_EnteringDebuggerHook();
-    void __mriPlatform_LeavingDebuggerHook();
-
-    void set_high_on_debug(int port, int pin);
-    void set_low_on_debug(int port, int pin);
-}
-
-#endif /* _MRI_HOOKS_H */
diff -r 1df0b61d3b5a -r f151d08d335c libs/MemoryPool.cpp
--- a/libs/MemoryPool.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/MemoryPool.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -1,6 +1,5 @@
 #include "MemoryPool.h"
 
-#include <mri.h>
 #include <cstdio>
 
 #define offset(x) (((uint8_t*) x) - ((uint8_t*) this->base))
@@ -94,7 +93,7 @@
                 {
                     // captain, we have a problem!
                     // this can only happen if something has corrupted our heap, since we should simply fail to find a free block if it's full
-                    __debugbreak();
+                    //__debugbreak();
                 }
             }
 
@@ -130,7 +129,7 @@
         {
             // captain, we have a problem!
             // this can only happen if something has corrupted our heap, since we should simply fail to find a free block if it's full
-            __debugbreak();
+            //__debugbreak();
         }
 
         p->next += q->next;
@@ -154,7 +153,7 @@
                 {
                     // captain, we have a problem!
                     // this can only happen if something has corrupted our heap, since we should simply fail to find a free block if it's full
-                    __debugbreak();
+                    //__debugbreak();
                 }
             }
 
diff -r 1df0b61d3b5a -r f151d08d335c libs/MemoryPool.h
--- a/libs/MemoryPool.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/MemoryPool.h	Sun Mar 02 06:33:08 2014 +0000
@@ -1,9 +1,9 @@
 #ifndef _MEMORYPOOL_H
 #define _MEMORYPOOL_H
 
-#include <cstdint>
+#include <stdint.h>
 // #include <cstdio>
-#include <cstdlib>
+#include <stdlib.h>
 
 #ifdef MEMDEBUG
     #define MDEBUG(...) printf(__VA_ARGS__)
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/Drivers/LPC17XX_Ethernet.cpp
--- a/libs/Network/Drivers/LPC17XX_Ethernet.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,508 +0,0 @@
-#if 1
-#include "LPC17XX_Ethernet.h"
-
-#include "Kernel.h"
-
-#include <cstring>
-#include <cstdio>
-
-#include "lpc17xx_clkpwr.h"
-
-#include <mri.h>
-
-// #include "netcore.h"
-
-static const uint8_t EMAC_clkdiv[] = { 4, 6, 8, 10, 14, 20, 28 };
-
-/*--------------------------- write_PHY -------------------------------------*/
-/*********************************************************************//**
-* @brief       Write value to PHY device
-* @param[in]   PhyReg: PHY Register address
-* @param[in]   Value:  Value to write
-* @return      0 - if success
-*              1 - if fail
-***********************************************************************/
-static int32_t write_PHY (uint32_t PhyReg, uint16_t Value)
-{
-    /* Write a data 'Value' to PHY register 'PhyReg'. */
-    uint32_t tout;
-
-    LPC_EMAC->MADR = EMAC_DEF_ADR | PhyReg;
-    LPC_EMAC->MWTD = Value;
-
-    /* Wait until operation completed */
-    tout = 0;
-    for (tout = 0; tout < EMAC_MII_WR_TOUT; tout++) {
-        if ((LPC_EMAC->MIND & EMAC_MIND_BUSY) == 0) {
-            return (0);
-        }
-    }
-    printf("write PHY %lu %04X failed!\n", PhyReg, Value);
-    // Time out!
-    return (-1);
-}
-
-
-/*--------------------------- read_PHY --------------------------------------*/
-/*********************************************************************//**
-* @brief       Read value from PHY device
-* @param[in]   PhyReg: PHY Register address
-* @return      0 - if success
-*              1 - if fail
-***********************************************************************/
-static int32_t read_PHY (uint32_t PhyReg)
-{
-    /* Read a PHY register 'PhyReg'. */
-    uint32_t tout;
-
-    LPC_EMAC->MADR = EMAC_DEF_ADR | PhyReg;
-    LPC_EMAC->MCMD = EMAC_MCMD_READ;
-
-    /* Wait until operation completed */
-    tout = 0;
-    for (tout = 0; tout < EMAC_MII_RD_TOUT; tout++) {
-        if ((LPC_EMAC->MIND & EMAC_MIND_BUSY) == 0) {
-            LPC_EMAC->MCMD = 0;
-            return (LPC_EMAC->MRDD);
-        }
-    }
-    printf("read PHY %lu failed!\n", PhyReg);
-    // Time out!
-    return (-1);
-}
-
-/*********************************************************************//**
-* @brief       Set Station MAC address for EMAC module
-* @param[in]   abStationAddr Pointer to Station address that contains 6-bytes
-*              of MAC address (should be in order from MAC Address 1 to MAC Address 6)
-* @return      None
-**********************************************************************/
-static void setEmacAddr(uint8_t abStationAddr[])
-{
-    /* Set the Ethernet MAC Address registers */
-    LPC_EMAC->SA0 = ((uint32_t)abStationAddr[5] << 8) | (uint32_t)abStationAddr[4];
-    LPC_EMAC->SA1 = ((uint32_t)abStationAddr[3] << 8) | (uint32_t)abStationAddr[2];
-    LPC_EMAC->SA2 = ((uint32_t)abStationAddr[1] << 8) | (uint32_t)abStationAddr[0];
-}
-
-/*********************************************************************//**
-* @brief       Set specified PHY mode in EMAC peripheral
-* @param[in]   ulPHYMode   Specified PHY mode, should be:
-*                          - EMAC_MODE_AUTO
-*                          - EMAC_MODE_10M_FULL
-*                          - EMAC_MODE_10M_HALF
-*                          - EMAC_MODE_100M_FULL
-*                          - EMAC_MODE_100M_HALF
-* @return      Return (0) if no error, otherwise return (-1)
-**********************************************************************/
-int32_t emac_SetPHYMode(uint32_t ulPHYMode)
-{
-    int32_t id1, id2, tout, regv;
-
-    id1 = read_PHY (EMAC_PHY_REG_IDR1);
-    id2 = read_PHY (EMAC_PHY_REG_IDR2);
-
-    if (((id1 << 16) | (id2 & 0xFFF0)) == EMAC_SMSC_8720A) {
-        switch(ulPHYMode){
-            case EMAC_MODE_AUTO:
-                write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_AUTO_NEG);
-                /* Wait to complete Auto_Negotiation */
-                for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-                    regv = read_PHY (EMAC_PHY_REG_BMSR);
-                    if (regv & EMAC_PHY_BMSR_AUTO_DONE) {
-                        /* Auto-negotiation Complete. */
-                        break;
-                    }
-                    if (tout == 0){
-                        // Time out, return error
-                        return (-1);
-                    }
-                }
-                break;
-            case EMAC_MODE_10M_FULL:
-                /* Connect at 10MBit full-duplex */
-                write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_FULLD_10M);
-                break;
-            case EMAC_MODE_10M_HALF:
-                /* Connect at 10MBit half-duplex */
-                write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_HALFD_10M);
-                break;
-            case EMAC_MODE_100M_FULL:
-                /* Connect at 100MBit full-duplex */
-                write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_FULLD_100M);
-                break;
-            case EMAC_MODE_100M_HALF:
-                /* Connect at 100MBit half-duplex */
-                write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_HALFD_100M);
-                break;
-            default:
-                // un-supported
-                return (-1);
-        }
-    }
-    // It's not correct module ID
-    else {
-        printf("PHY reports id %04lX %04lX - not an SMSC 8720A\n", id1, id2);
-        return (-1);
-    }
-
-    // Update EMAC configuration with current PHY status
-    if (EMAC_UpdatePHYStatus() < 0){
-        return (-1);
-    }
-
-    // Complete
-    return (0);
-}
-
-_rxbuf_t LPC17XX_Ethernet::rxbuf __attribute__ ((section ("AHBSRAM1"))) __attribute__((aligned(8)));
-_txbuf_t LPC17XX_Ethernet::txbuf __attribute__ ((section ("AHBSRAM1"))) __attribute__((aligned(8)));
-
-LPC17XX_Ethernet* LPC17XX_Ethernet::instance;
-
-LPC17XX_Ethernet::LPC17XX_Ethernet()
-{
-    // TODO these need to be configurable
-    // mac_address[0] = 0xAE;
-    // mac_address[1] = 0xF0;
-    // mac_address[2] = 0x28;
-    // mac_address[3] = 0x5D;
-    // mac_address[4] = 0x66;
-    // mac_address[5] = 0x41;
-
-    // ip_address = IPA(192,168,3,222);
-    // ip_mask = 0xFFFFFF00;
-
-    for (int i = 0; i < LPC17XX_RXBUFS; i++) {
-        rxbuf.rxdesc[i].packet = rxbuf.buf[i];
-        rxbuf.rxdesc[i].control = (LPC17XX_MAX_PACKET - 1) | EMAC_RCTRL_INT;
-
-        rxbuf.rxstat[i].Info = 0;
-        rxbuf.rxstat[i].HashCRC = 0;
-    }
-
-    for (int i = 0; i < LPC17XX_TXBUFS; i++) {
-        txbuf.txdesc[i].packet = txbuf.buf[i];
-        txbuf.txdesc[i].control = (LPC17XX_MAX_PACKET - 1) | EMAC_TCTRL_PAD | EMAC_TCTRL_CRC | EMAC_TCTRL_LAST | EMAC_TCTRL_INT;
-
-        txbuf.txstat[i].Info = 0;
-    }
-
-    interface_name = (uint8_t*) malloc(5);
-    memcpy(interface_name, "eth0", 5);
-
-    instance = this;
-
-    up = false;
-}
-
-void LPC17XX_Ethernet::on_module_loaded()
-{
-    LPC_PINCON->PINSEL2 = (1 << 0) | (1 << 2) | (1 << 8) | (1 << 16) | (1 << 18) | (1 << 20) | (1 << 28) | (1 << 30);
-    LPC_PINCON->PINSEL3 &= (2 << 0) | (2 << 2);
-    LPC_PINCON->PINSEL3 |= (1 << 0) | (1 << 2);
-
-    printf("EMAC_INIT\n");
-    emac_init();
-    printf("INIT OK\n");
-
-    //register_for_event(ON_IDLE);
-    register_for_event(ON_SECOND_TICK);
-}
-
-void LPC17XX_Ethernet::on_idle(void*)
-{
-    //_receive_frame();
-}
-
-void LPC17XX_Ethernet::on_second_tick(void *) {
-    check_interface();
-}
-
-void LPC17XX_Ethernet::check_interface()
-{
-//     LPC_EMAC->Command = 0x303;
-//     setEmacAddr(mac_address);
-
-    uint32_t st;
-    st  = read_PHY (EMAC_PHY_REG_BMSR);
-
-    if ((st & EMAC_PHY_BMSR_LINK_ESTABLISHED) && (st & EMAC_PHY_BMSR_AUTO_DONE) && (up == false))
-    {
-        // TODO: link up event
-        up = true;
-//         net->set_interface_status(this, up);
-        uint32_t scsr = read_PHY(EMAC_PHY_REG_SCSR);
-        printf("%s: link up: ", interface_name);
-        switch ((scsr >> 2) & 0x7)
-        {
-            case 1:
-                printf("10MBit Half Duplex\n");
-                break;
-            case 5:
-                printf("10MBit Full Duplex\n");
-                break;
-            case 2:
-                printf("100MBit Half Duplex\n");
-                break;
-            case 6:
-                printf("100MBit Full Duplex\n");
-                break;
-            default:
-                printf("Unknown speed: SCSR = 0x%04lX\n", scsr);
-                break;
-        }
-        printf("MAC Address: %02lX:%02lX:%02lX:%02lX:%02lX:%02lX\n", (LPC_EMAC->SA2) & 0xFF, (LPC_EMAC->SA2 >> 8) & 0xFF, (LPC_EMAC->SA1) & 0xFF, (LPC_EMAC->SA1 >> 8) & 0xFF, (LPC_EMAC->SA0) & 0xFF, (LPC_EMAC->SA0 >> 8) & 0xFF);
-    }
-    else if (((st & EMAC_PHY_BMSR_LINK_ESTABLISHED) == 0) && up)
-    {
-        // TODO: link down event
-        up = false;
-//         net->set_interface_status(this, up);
-        printf("%s: link down\n", interface_name);
-    }
-
-    //printf("PHY: id:%04lX %04lX st:%04lX\n", id1, id2, st);
-    // printf("ETH: Rx:%lu/%lu Tx:%lu/%lu\n", LPC_EMAC->RxConsumeIndex, LPC_EMAC->RxProduceIndex, LPC_EMAC->TxProduceIndex, LPC_EMAC->TxConsumeIndex);
-    // printf("MII: 0x%1lX\n", LPC_EMAC->MIND);
-    // printf("Command: 0x%03lX Status: 0x%1lX\n", LPC_EMAC->Command, LPC_EMAC->Status);
-    // printf("RxN: %lu TxN: %lu\n", LPC_EMAC->RxDescriptorNumber, LPC_EMAC->TxDescriptorNumber);
-    // printf("MAC1: 0x%04lX MAC2: 0x%04lX\n", LPC_EMAC->MAC1, LPC_EMAC->MAC2);
-    // printf("MAC Address: %02lX:%02lX:%02lX:%02lX:%02lX:%02lX\n", (LPC_EMAC->SA2) & 0xFF, (LPC_EMAC->SA2 >> 8) & 0xFF, (LPC_EMAC->SA1) & 0xFF, (LPC_EMAC->SA1 >> 8) & 0xFF, (LPC_EMAC->SA0) & 0xFF, (LPC_EMAC->SA0 >> 8) & 0xFF);
-}
-
-void LPC17XX_Ethernet::emac_init()
-{
-    /* Initialize the EMAC Ethernet controller. */
-    int32_t regv,tout, tmp;
-    volatile uint32_t d;
-
-    /* Set up clock and power for Ethernet module */
-    CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCENET, ENABLE);
-
-    /* Reset all EMAC internal modules */
-    LPC_EMAC->MAC1    = EMAC_MAC1_RES_TX | EMAC_MAC1_RES_MCS_TX | EMAC_MAC1_RES_RX |
-    EMAC_MAC1_RES_MCS_RX | EMAC_MAC1_SIM_RES | EMAC_MAC1_SOFT_RES;
-
-    LPC_EMAC->Command = EMAC_CR_REG_RES | EMAC_CR_TX_RES | EMAC_CR_RX_RES;
-
-    /* A short delay after reset. */
-    for (d = 256; d; d--);
-
-    /* Initialize MAC control registers. */
-    LPC_EMAC->MAC1 = EMAC_MAC1_PASS_ALL;
-    LPC_EMAC->MAC2 = EMAC_MAC2_CRC_EN | EMAC_MAC2_PAD_EN | EMAC_MAC2_FULL_DUP;
-    LPC_EMAC->MAXF = EMAC_ETH_MAX_FLEN;
-    /*
-     * Find the clock that close to desired target clock
-     */
-    tmp = SystemCoreClock / EMAC_MCFG_MII_MAXCLK;
-    for (tout = 0; tout < (int32_t) sizeof (EMAC_clkdiv); tout++){
-        if (EMAC_clkdiv[tout] >= tmp) break;
-    }
-    tout++;
-    // Write to MAC configuration register and reset
-    LPC_EMAC->MCFG = EMAC_MCFG_CLK_SEL(tout) | EMAC_MCFG_RES_MII;
-    // release reset
-    LPC_EMAC->MCFG &= ~(EMAC_MCFG_RES_MII);
-    LPC_EMAC->CLRT = EMAC_CLRT_DEF;
-    LPC_EMAC->IPGR = EMAC_IPGR_P2_DEF;
-
-    /* Enable Reduced MII interface. */
-    LPC_EMAC->Command = EMAC_CR_RMII;
-
-    /* Reset Reduced MII Logic. */
-    LPC_EMAC->SUPP = EMAC_SUPP_RES_RMII;
-
-    for (d = 256; d; d--);
-    LPC_EMAC->SUPP = EMAC_SUPP_SPEED;
-
-    /* Put the DP83848C in reset mode */
-    write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_BMCR_RESET);
-
-    /* Wait for hardware reset to end. */
-    for (tout = EMAC_PHY_RESP_TOUT; tout; tout--) {
-        regv = read_PHY (EMAC_PHY_REG_BMCR);
-        if (!(regv & (EMAC_PHY_BMCR_RESET | EMAC_PHY_BMCR_POWERDOWN))) {
-            /* Reset complete, device not Power Down. */
-            break;
-        }
-        if (tout == 0){
-            // Time out, return ERROR
-            printf("ETH: PHY TIMEOUT\n");
-            return;
-        }
-    }
-
-    // Set PHY mode
-//     if (emac_SetPHYMode(EMAC_MODE_AUTO) < 0){
-//         printf("ETH: Error Setting Mode\n");
-//         return;
-//     }
-    write_PHY (EMAC_PHY_REG_BMCR, EMAC_PHY_AUTO_NEG);
-
-    // Set EMAC address
-    setEmacAddr(mac_address);
-
-    /* Initialize Tx and Rx DMA Descriptors */
-    LPC_EMAC->RxDescriptor       = (uint32_t) rxbuf.rxdesc;
-    LPC_EMAC->RxStatus           = (uint32_t) rxbuf.rxstat;
-    LPC_EMAC->RxDescriptorNumber = LPC17XX_RXBUFS-1;
-
-    LPC_EMAC->TxDescriptor       = (uint32_t) txbuf.txdesc;
-    LPC_EMAC->TxStatus           = (uint32_t) txbuf.txstat;
-    LPC_EMAC->TxDescriptorNumber = LPC17XX_TXBUFS-1;
-
-    // Set Receive Filter register: enable broadcast and multicast
-    LPC_EMAC->RxFilterCtrl = EMAC_RFC_BCAST_EN | EMAC_RFC_PERFECT_EN;
-
-    /* Enable Rx Done and Tx Done interrupt for EMAC */
-    LPC_EMAC->IntEnable = EMAC_INT_RX_DONE | EMAC_INT_TX_DONE;
-
-    /* Reset all interrupts */
-    LPC_EMAC->IntClear  = 0xFFFF;
-
-    /* Enable receive and transmit mode of MAC Ethernet core */
-    LPC_EMAC->Command  = EMAC_CR_RX_EN | EMAC_CR_TX_EN | EMAC_CR_RMII | EMAC_CR_FULL_DUP | EMAC_CR_PASS_RUNT_FRM;
-    LPC_EMAC->MAC1     |= EMAC_MAC1_REC_EN;
-
-    printf("ETH:EMAC INITIALISED\n");
-}
-
-void LPC17XX_Ethernet::set_mac(uint8_t* newmac)
-{
-    memcpy(mac_address, newmac, 6);
-}
-
-bool LPC17XX_Ethernet::_receive_frame(void *packet, int *size)
-{
-    if (can_read_packet() && can_write_packet())
-    {
-        int i = LPC_EMAC->RxConsumeIndex;
-        RX_Stat* stat = &(rxbuf.rxstat[i]);
-        *size = stat->Info & EMAC_RINFO_SIZE;
-        memcpy(packet, rxbuf.buf[i], *size);
-
-        //printf("Received %d byte Ethernet frame %lu/%lu\n", *size, LPC_EMAC->RxProduceIndex, LPC_EMAC->RxConsumeIndex);
-
-        uint32_t r = LPC_EMAC->RxConsumeIndex + 1;
-        if (r > LPC_EMAC->RxDescriptorNumber)
-            r = 0;
-        LPC_EMAC->RxConsumeIndex = r;
-
-        return true;
-    }
-
-    return false;
-}
-
-void LPC17XX_Ethernet::irq()
-{
-    // if (EMAC_IntGetStatus(EMAC_INT_RX_DONE))
-    // {
-    //     //_receive_frame();
-    // }
-
-    // if (EMAC_IntGetStatus(EMAC_INT_TX_DONE))
-    // {
-    // }
-}
-
-bool LPC17XX_Ethernet::can_read_packet()
-{
-    return (LPC_EMAC->RxProduceIndex != LPC_EMAC->RxConsumeIndex);
-}
-
-int LPC17XX_Ethernet::read_packet(uint8_t** buf)
-{
-    *buf = rxbuf.buf[LPC_EMAC->RxConsumeIndex];
-    return rxbuf.rxstat[LPC_EMAC->RxConsumeIndex].Info & EMAC_RINFO_SIZE;
-}
-
-void LPC17XX_Ethernet::release_read_packet(uint8_t*)
-{
-    uint32_t r = LPC_EMAC->RxConsumeIndex + 1;
-    if (r > LPC_EMAC->RxDescriptorNumber)
-        r = 0;
-    LPC_EMAC->RxConsumeIndex = r;
-}
-
-bool LPC17XX_Ethernet::can_write_packet()
-{
-    uint32_t r = LPC_EMAC->TxProduceIndex + 1;
-    if (r > LPC_EMAC->TxDescriptorNumber)
-        r = 0;
-    return (r != LPC_EMAC->TxConsumeIndex);
-}
-
-int LPC17XX_Ethernet::write_packet(uint8_t* buf, int size)
-{
-    txbuf.txdesc[LPC_EMAC->TxProduceIndex].control = ((size - 1) & 0x7ff) | EMAC_TCTRL_LAST | EMAC_TCTRL_CRC | EMAC_TCTRL_PAD | EMAC_TCTRL_INT;
-
-    uint32_t r = LPC_EMAC->TxProduceIndex + 1;
-    if (r > LPC_EMAC->TxDescriptorNumber)
-        r = 0;
-
-    if (r == LPC_EMAC->TxConsumeIndex)
-        return 0;
-
-    LPC_EMAC->TxProduceIndex = r;
-
-    return size;
-}
-
-void* LPC17XX_Ethernet::request_packet_buffer()
-{
-    return txbuf.txdesc[LPC_EMAC->TxProduceIndex].packet;
-}
-
-NET_PACKET  LPC17XX_Ethernet::get_new_packet_buffer(NetworkInterface* ni)
-{
-    if (ni != this)
-        return NULL;
-
-    return (NET_PACKET) request_packet_buffer();
-}
-
-NET_PAYLOAD LPC17XX_Ethernet::get_payload_buffer(NET_PACKET packet)
-{
-    return (NET_PAYLOAD) packet;
-}
-
-void LPC17XX_Ethernet::set_payload_length(NET_PACKET packet, int length)
-{
-    uint32_t offset = ((uint8_t*) packet) - txbuf.buf[0];
-    int i = (offset / LPC17XX_MAX_PACKET);
-    if ((i < LPC17XX_TXBUFS) && ((offset % LPC17XX_MAX_PACKET) == 0))
-    {
-        txbuf.txdesc[i].control = (txbuf.txdesc[i].control & ~EMAC_TCTRL_SIZE) | (length & EMAC_TCTRL_SIZE);
-    }
-}
-
-int LPC17XX_Ethernet::receive(NetworkInterface* ni, NET_PACKET packet, int length)
-{
-    if (can_write_packet())
-        return write_packet((uint8_t*) packet, length);
-    return 0;
-}
-
-int LPC17XX_Ethernet::construct(NetworkInterface* ni, NET_PACKET packet, int length)
-{
-    return length;
-}
-
-extern "C" {
-    void ENET_IRQHandler()
-    {
-        LPC17XX_Ethernet::instance->irq();
-    }
-}
-
-// void LPC17XX_Ethernet::provide_net(netcore* n)
-// {
-//     NetworkInterface::provide_net(n);
-//     up = false;
-//     n->set_interface_status(this, up);
-// }
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/Drivers/LPC17XX_Ethernet.h
--- a/libs/Network/Drivers/LPC17XX_Ethernet.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-#ifndef _LPC17XX_ETHERNET_H
-#define _LPC17XX_ETHERNET_H
-
-#include "lpc17xx_emac.h"
-
-#include "Module.h"
-#include "net_util.h"
-
-#define EMAC_SMSC_8720A 0x0007C0F0
-
-// SMSC 8720A special control/status register
-#define EMAC_PHY_REG_SCSR 0x1F
-
-#define LPC17XX_MAX_PACKET 600
-#define LPC17XX_TXBUFS     4
-#define LPC17XX_RXBUFS     4
-
-typedef struct {
-    void* packet;
-    uint32_t control;
-} packet_desc;
-
-typedef struct {
-    uint8_t buf[LPC17XX_RXBUFS][LPC17XX_MAX_PACKET];
-    RX_Stat rxstat[LPC17XX_RXBUFS];
-    packet_desc rxdesc[LPC17XX_RXBUFS];
-} _rxbuf_t;
-
-typedef struct {
-    uint8_t buf[LPC17XX_TXBUFS][LPC17XX_MAX_PACKET];
-    TX_Stat txstat[LPC17XX_TXBUFS];
-    packet_desc txdesc[LPC17XX_TXBUFS];
-} _txbuf_t;
-
-class LPC17XX_Ethernet;
-
-class LPC17XX_Ethernet : public Module, public NetworkInterface
-{
-public:
-    LPC17XX_Ethernet();
-
-    void on_module_loaded();
-    void on_idle(void*);
-    void on_second_tick(void*);
-
-    void emac_init(void) __attribute__ ((optimize("O0")));
-
-    void set_mac(uint8_t*);
-
-    void irq(void);
-
-    bool _receive_frame(void *packet, int* size);
-
-    // NetworkInterface methods
-//     void provide_net(netcore* n);
-    bool can_read_packet(void);
-    int read_packet(uint8_t**);
-    void release_read_packet(uint8_t*);
-    void periodical(int);
-
-    bool can_write_packet(void);
-    int write_packet(uint8_t *, int);
-
-    void* request_packet_buffer(void);
-
-    // Encapsulator methods
-    int receive(NetworkInterface* ni, NET_PACKET, int);
-    int construct(NetworkInterface* ni, NET_PACKET, int);
-    NET_PACKET  get_new_packet_buffer(NetworkInterface*);
-    NET_PAYLOAD get_payload_buffer(NET_PACKET);
-    void        set_payload_length(NET_PACKET, int);
-
-    static LPC17XX_Ethernet* instance;
-
-private:
-    static _rxbuf_t rxbuf;
-    static _txbuf_t txbuf;
-
-    void check_interface();
-};
-
-#endif /* _LPC17XX_ETHERNET_H */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/net_util.cpp
--- a/libs/Network/net_util.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-#include "net_util.h"
-
-#include <cstdio>
-#include <cstring>
-
-static uint8_t hexalpha[] = "0123456789ABCDEF";
-const uint8_t broadcast[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
-
-bool compare_mac(const uint8_t* mac1, const uint8_t* mac2, const uint8_t* mask)
-{
-    uint8_t m;
-    for (int i = 0; i < 6; i++)
-    {
-        m = 0xFF;
-        if (mask)
-            m = mask[i];
-        if ((mac1[i] & m) != (mac2[i] & m))
-            return false;
-    }
-    return true;
-}
-
-uint32_t unaligned_u32(uint8_t* buf)
-{
-    return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
-}
-
-uint16_t unaligned_u16(uint8_t* buf)
-{
-    return buf[0] | (buf[1] << 8);
-}
-
-int format_ip(uint32_t ip, uint8_t* buf)
-{
-    uint8_t *p = (uint8_t*) &ip;
-    return snprintf((char*) buf, IP_STR_LEN, "%d.%d.%d.%d", p[3], p[2], p[1], p[0]);
-}
-
-int format_mac(uint8_t mac[6], uint8_t buf[MAC_STR_LEN])
-{
-    if (compare_mac(mac, broadcast, broadcast))
-    {
-        memcpy(buf, "[Broadcast      ]", MAC_STR_LEN);
-        return MAC_STR_LEN - 1;
-    }
-
-    int i;
-    for (i = 0; i < 12; i++)
-    {
-        buf[i + (i >> 1)] = hexalpha[(mac[i >> 1] >> ((i & 1)?0:4)) & 0x0F];
-        if (i < 5)
-            buf[(i * 3) + 2] = ':';
-    }
-    buf[MAC_STR_LEN - 1] = 0;
-    return MAC_STR_LEN - 1;
-}
-
-int checksum16(uint8_t* buf, int count, int start)
-{
-    /* Compute Internet Checksum for "count" bytes
-     *         beginning at location "addr".
-     */
-    register uint32_t sum = start;
-
-    while( count > 1 )  {
-        /*  This is the inner loop */
-        sum += unaligned_u16(buf);
-        buf += 2;
-        count -= 2;
-    }
-
-    /*  Add left-over byte, if any */
-    if( count > 0 )
-        sum += * (uint8_t *) buf;
-
-    /*  Fold 32-bit sum to 16 bits */
-    while (sum & 0xFFFF0000)
-        sum = (sum & 0xFFFF) + (sum >> 16);
-
-    return (~sum) & 0xFFFF;
-}
-
-uint32_t crc32(uint8_t* buf, int length)
-{
-    static const uint32_t crc32_table[] =
-    {
-        0x4DBDF21C, 0x500AE278, 0x76D3D2D4, 0x6B64C2B0,
-        0x3B61B38C, 0x26D6A3E8, 0x000F9344, 0x1DB88320,
-        0xA005713C, 0xBDB26158, 0x9B6B51F4, 0x86DC4190,
-        0xD6D930AC, 0xCB6E20C8, 0xEDB71064, 0xF0000000
-    };
-
-    int n;
-    uint32_t crc=0;
-
-    for (n = 0; n < length; n++)
-    {
-        crc = (crc >> 4) ^ crc32_table[(crc ^ (buf[n] >> 0)) & 0x0F];  /* lower nibble */
-        crc = (crc >> 4) ^ crc32_table[(crc ^ (buf[n] >> 4)) & 0x0F];  /* upper nibble */
-    }
-
-    return crc;
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/net_util.h
--- a/libs/Network/net_util.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#ifndef _NET_UTIL_H
-#define _NET_UTIL_H
-
-#include <cstdint>
-#include <cstdlib>
-#include <cstdio>
-#include <cstring>
-
-#define HARDWARE_TYPE_ETHERNET 1
-
-#define SIZEOF_MAC 6
-#define SIZEOF_IP  4
-
-#define MAC_STR_LEN     18
-#define IP_STR_LEN      16
-
-// uint16_t htons(uint16_t v);
-#define htons(a) ((((a) >> 8) & 0xFF) | (((a) << 8) & 0xFF00))
-#define ntohs(a) htons(a)
-
-// uint32_t htonl(uint32_t v);
-#define htonl(a) ((((a) >> 24) & 0x000000FF) | (((a) >> 8) & 0x0000FF00) | (((a) << 8) & 0x00FF0000) | (((a) << 24) & 0xFF000000))
-#define ntohl(a) htonl(a)
-
-#define compare_ip(ip1, ip2, mask) (((ip1) & (mask)) == ((ip2) & (mask)))
-
-#define IPA(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
-
-typedef uint32_t  IP_ADDR;
-typedef uint32_t* NET_PACKET;
-typedef uint8_t*  NET_PAYLOAD;
-
-// class netcore;
-class Encapsulated;
-class Encapsulator;
-class NetworkInterface;
-
-class Encapsulated
-{
-public:
-    virtual int   receive(NetworkInterface*, NET_PACKET, int) = 0;
-    virtual int   construct(NetworkInterface*, NET_PACKET, int) = 0;
-};
-
-class Encapsulator : public Encapsulated
-{
-public:
-    virtual NET_PACKET  get_new_packet_buffer(NetworkInterface*)    = 0;
-    virtual NET_PAYLOAD get_payload_buffer(NET_PACKET)      = 0;
-    virtual void        set_payload_length(NET_PACKET, int) = 0;
-};
-
-class Period_receiver
-{
-public:
-    virtual int periodical(int, NetworkInterface*, NET_PACKET, int) = 0;
-};
-
-class NetworkInterface : public Encapsulator {
-public:
-    virtual const uint8_t* get_name(void) { return interface_name; };
-//     virtual void provide_net(netcore* n){ net = n; }
-
-//     virtual bool if_up(void) = 0;
-
-    virtual bool can_read_packet(void) = 0;
-    virtual int read_packet(uint8_t**) = 0;
-    void release_read_packet(uint8_t*);
-
-    virtual bool can_write_packet(void) = 0;
-    virtual int write_packet(uint8_t *, int) = 0;
-
-    virtual void* request_packet_buffer(void) = 0;
-
-    virtual void set_ip(uint32_t new_ip)     { ip_address = new_ip; };
-    virtual void set_mac(uint8_t new_mac[6]) { memcpy(mac_address, new_mac, 6); };
-
-    bool isUp() { return up; }
-
-//     netcore* net;
-    uint8_t* interface_name;
-
-    IP_ADDR ip_address;
-    IP_ADDR ip_mask;
-
-    uint8_t mac_address[6];
-
-    bool up;
-};
-
-extern const uint8_t broadcast[6];
-
-bool compare_mac(const uint8_t*, const uint8_t*, const uint8_t*);
-int format_mac(uint8_t*, uint8_t*);
-int format_ip(uint32_t, uint8_t*);
-int checksum16(uint8_t*, int, int);
-uint32_t crc32(uint8_t* buf, int length);
-
-#endif /* _NET_UTIL_H */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/CallbackStream.cpp
--- a/libs/Network/uip/CallbackStream.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-#include "CallbackStream.h"
-#include "Kernel.h"
-
-#define DEBUG_PRINTF std::printf
-
-CallbackStream::CallbackStream(cb_t cb, void *u)
-{
-    DEBUG_PRINTF("Callbackstream ctor: %p\n", this);
-    callback= cb;
-    user= u;
-    closed= false;
-    use_count= 0;
-}
-
-CallbackStream::~CallbackStream()
-{
-    DEBUG_PRINTF("Callbackstream dtor: %p\n", this);
-}
-
-int CallbackStream::puts(const char *s)
-{
-    if(closed) return 0;
-
-    if(s == NULL) return (*callback)(NULL, user);
-
-    int len = strlen(s);
-    int n;
-    do {
-        // call this streams result callback
-        n= (*callback)(s, user);
-
-        // if closed just pretend we sent it
-        if(n == -1) {
-            closed= true;
-            return len;
-
-        }else if(n == 0) {
-            // if output queue is full
-            // call idle until we can output more
-            THEKERNEL->call_event(ON_IDLE);
-        }
-    } while(n == 0);
-
-    return len;
-}
-
-void CallbackStream::mark_closed()
-{
-    closed= true;
-    if(use_count <= 0) delete this;
-}
-void CallbackStream::dec()
-{
-    use_count--;
-    if(closed && use_count <= 0) delete this;
-}
-
-extern "C" void *new_callback_stream(cb_t cb, void *u)
-{
-    return new CallbackStream(cb, u);
-}
-
-extern "C" void delete_callback_stream(void *p)
-{
-    // we don't delete it in case it is still on the command queue
-    ((CallbackStream*)p)->mark_closed();
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/CallbackStream.h
--- a/libs/Network/uip/CallbackStream.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#ifndef CALLBACKSTREAM_H
-#define CALLBACKSTREAM_H
-
-typedef int (*cb_t)(const char *, void *);
-
-#ifdef __cplusplus
-#include "libs/StreamOutput.h"
-
-
-class CallbackStream : public StreamOutput {
-    public:
-        CallbackStream(cb_t cb, void *u);
-        virtual ~CallbackStream();
-        int puts(const char*);
-        void inc() { use_count++; }
-        void dec();
-        int get_count() { return use_count; }
-        void mark_closed();
-
-    private:
-        cb_t callback;
-        void *user;
-        bool closed;
-        int use_count;
-};
-
-#else
-
-extern void *new_callback_stream(cb_t cb, void *);
-extern void delete_callback_stream(void *);
-
-#endif // __cplusplus
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/CommandQueue.cpp
--- a/libs/Network/uip/CommandQueue.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#include "CommandQueue.h"
-
-#include "stdio.h"
-#include "string.h"
-#include "stdlib.h"
-
-#include "Kernel.h"
-#include "libs/SerialMessage.h"
-#include "CallbackStream.h"
-
-static CommandQueue *command_queue_instance;
-CommandQueue *CommandQueue::instance = NULL;
-
-
-CommandQueue::CommandQueue()
-{
-    command_queue_instance = this;
-    null_stream= &(StreamOutput::NullStream);
-}
-
-CommandQueue* CommandQueue::getInstance()
-{
-    if(instance == 0) instance= new CommandQueue();
-    return instance;
-}
-
-extern "C" {
-    int network_add_command(const char *cmd, void *pstream)
-    {
-        return command_queue_instance->add(cmd, (StreamOutput*)pstream);
-    }
-}
-
-int CommandQueue::add(const char *cmd, StreamOutput *pstream)
-{
-    cmd_t c= {strdup(cmd), pstream==NULL?null_stream:pstream};
-    q.push(c);
-    if(pstream != NULL) {
-        // count how many times this is on the queue
-        CallbackStream *s= static_cast<CallbackStream *>(pstream);
-        s->inc();
-    }
-    return q.size();
-}
-
-// pops the next command off the queue and submits it.
-bool CommandQueue::pop()
-{
-    if (q.size() == 0) return false;
-
-    cmd_t c= q.pop();
-    char *cmd= c.str;
-
-    struct SerialMessage message;
-    message.message = cmd;
-    message.stream = c.pstream;
-
-    free(cmd);
-    THEKERNEL->call_event(ON_CONSOLE_LINE_RECEIVED, &message );
-
-    if(message.stream != null_stream) {
-        message.stream->puts(NULL); // indicates command is done
-        // decrement usage count
-        CallbackStream *s= static_cast<CallbackStream *>(message.stream);
-        s->dec();
-    }
-    return true;
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/CommandQueue.h
--- a/libs/Network/uip/CommandQueue.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#ifndef _COMMANDQUEUE_H_
-#define _COMMANDQUEUE_H_
-
-#ifdef __cplusplus
-
-#include "fifo.h"
-#include <string>
-
-#include "StreamOutput.h"
-
-class CommandQueue
-{
-public:
-    CommandQueue();
-    ~CommandQueue();
-    bool pop();
-    int add(const char* cmd, StreamOutput *pstream);
-    int size() {return q.size();}
-    static CommandQueue* getInstance();
-
-private:
-    typedef struct {char* str; StreamOutput *pstream; } cmd_t;
-    Fifo<cmd_t> q;
-    static CommandQueue *instance;
-    StreamOutput *null_stream;
-};
-
-#else
-
-extern int network_add_command(const char * cmd, void *pstream);
-#endif
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/Network.cpp
--- a/libs/Network/uip/Network.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#pragma GCC diagnostic ignored "-Wcast-align"
-
-#include "CommandQueue.h"
-
-#include "Kernel.h"
-
-#include "Network.h"
-#include "PublicDataRequest.h"
-#include "PlayerPublicAccess.h"
-#include "net_util.h"
-#include "uip_arp.h"
-#include "clock-arch.h"
-
-#include "uip.h"
-#include "telnetd.h"
-#include "webserver.h"
-#include "dhcpc.h"
-#include "sftpd.h"
-
-
-#include <mri.h>
-
-#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
-
-extern "C" void uip_log(char *m)
-{
-    printf("uIP log message: %s\n", m);
-}
-
-static bool webserver_enabled, telnet_enabled, use_dhcp;
-static Network *theNetwork;
-static Sftpd *sftpd;
-static CommandQueue *command_q= CommandQueue::getInstance();
-
-Network* Network::instance;
-Network::Network()
-{
-    ethernet = new LPC17XX_Ethernet();
-    tickcnt= 0;
-    theNetwork= this;
-    sftpd= NULL;
-    instance= this;
-}
-
-Network::~Network()
-{
-    delete ethernet;
-}
-
-static uint32_t getSerialNumberHash()
-{
-#define IAP_LOCATION 0x1FFF1FF1
-    uint32_t command[1];
-    uint32_t result[5];
-    typedef void (*IAP)(uint32_t *, uint32_t *);
-    IAP iap = (IAP) IAP_LOCATION;
-
-    __disable_irq();
-
-    command[0] = 58;
-    iap(command, result);
-    __enable_irq();
-    return crc32((uint8_t *)&result[1], 4 * 4);
-}
-
-static bool parse_ip_str(const string &s, uint8_t *a, int len, char sep = '.')
-{
-    int p = 0;
-    const char *n;
-    for (int i = 0; i < len; i++) {
-        if (i < len - 1) {
-            size_t o = s.find(sep, p);
-            if (o == string::npos) return false;
-            n = s.substr(p, o - p).c_str();
-            p = o + 1;
-        } else {
-            n = s.substr(p).c_str();
-        }
-        a[i] = atoi(n);
-    }
-    return true;
-}
-
-void Network::on_module_loaded()
-{
-    if ( !THEKERNEL->config->value( network_checksum, network_enable_checksum )->by_default(false)->as_bool() ) {
-        // as not needed free up resource
-        delete this;
-        return;
-    }
-
-    webserver_enabled = THEKERNEL->config->value( network_checksum, network_webserver_checksum, network_enable_checksum )->by_default(false)->as_bool();
-    telnet_enabled = THEKERNEL->config->value( network_checksum, network_telnet_checksum, network_enable_checksum )->by_default(false)->as_bool();
-
-    string mac = THEKERNEL->config->value( network_checksum, network_mac_override_checksum )->by_default("")->as_string();
-    if (mac.size() == 17 ) { // parse mac address
-        if (!parse_ip_str(mac, mac_address, 6, ':')) {
-            printf("Invalid MAC address: %s\n", mac.c_str());
-            printf("Network not started due to errors in config");
-            return;
-        }
-
-    } else {   // autogenerate
-        uint32_t h = getSerialNumberHash();
-        mac_address[0] = 0x00;   // OUI
-        mac_address[1] = 0x1F;   // OUI
-        mac_address[2] = 0x11;   // OUI
-        mac_address[3] = 0x02;   // Openmoko allocation for smoothie board
-        mac_address[4] = 0x04;   // 04-14  03 bits -> chip id, 1 bits -> hashed serial
-        mac_address[5] = h & 0xFF; // 00-FF  8bits -> hashed serial
-    }
-
-    ethernet->set_mac(mac_address);
-
-    // get IP address, mask and gateway address here....
-    bool bad = false;
-    string s = THEKERNEL->config->value( network_checksum, network_ip_address_checksum )->by_default("auto")->as_string();
-    if (s == "auto") {
-        use_dhcp = true;
-
-    } else {
-        use_dhcp = false;
-        if (!parse_ip_str(s, ipaddr, 4)) {
-            printf("Invalid IP address: %s\n", s.c_str());
-            bad = true;
-        }
-        s = THEKERNEL->config->value( network_checksum, network_ip_mask_checksum )->by_default("255.255.255.0")->as_string();
-        if (!parse_ip_str(s, ipmask, 4)) {
-            printf("Invalid IP Mask: %s\n", s.c_str());
-            bad = true;
-        }
-        s = THEKERNEL->config->value( network_checksum, network_ip_gateway_checksum )->by_default("192.168.3.1")->as_string();
-        if (!parse_ip_str(s, ipgw, 4)) {
-            printf("Invalid IP gateway: %s\n", s.c_str());
-            bad = true;
-        }
-
-        if (bad) {
-            printf("Network not started due to errors in config");
-            return;
-        }
-    }
-
-    THEKERNEL->add_module( ethernet );
-    THEKERNEL->slow_ticker->attach( 100, this, &Network::tick );
-
-    // Register for events
-    this->register_for_event(ON_IDLE);
-    this->register_for_event(ON_MAIN_LOOP);
-    this->register_for_event(ON_GET_PUBLIC_DATA);
-
-    this->init();
-}
-
-void Network::on_get_public_data(void* argument) {
-    PublicDataRequest* pdr = static_cast<PublicDataRequest*>(argument);
-
-    if(!pdr->starts_with(network_checksum)) return;
-
-    if(pdr->second_element_is(get_ip_checksum)) {
-        pdr->set_data_ptr(this->ipaddr);
-        pdr->set_taken();
-
-    }else if(pdr->second_element_is(get_ipconfig_checksum)) {
-        // NOTE caller must free the returned string when done
-        char buf[200];
-        int n1= snprintf(buf,             sizeof(buf),         "IP Addr: %d.%d.%d.%d\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
-        int n2= snprintf(&buf[n1],       sizeof(buf)-n1,       "IP GW: %d.%d.%d.%d\n", ipgw[0], ipgw[1], ipgw[2], ipgw[3]);
-        int n3= snprintf(&buf[n1+n2],    sizeof(buf)-n1-n2,    "IP mask: %d.%d.%d.%d\n", ipmask[0], ipmask[1], ipmask[2], ipmask[3]);
-        int n4= snprintf(&buf[n1+n2+n3], sizeof(buf)-n1-n2-n3, "MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\n",
-            mac_address[0], mac_address[1], mac_address[2], mac_address[3], mac_address[4], mac_address[5]);
-        char *str = (char *)malloc(n1+n2+n3+n4+1);
-        memcpy(str, buf, n1+n2+n3+n4);
-        str[n1+n2+n3+n4]= '\0';
-        pdr->set_data_ptr(str);
-        pdr->set_taken();
-    }
-}
-
-uint32_t Network::tick(uint32_t dummy)
-{
-    do_tick();
-    tickcnt++;
-    return 0;
-}
-
-void Network::on_idle(void *argument)
-{
-    if (!ethernet->isUp()) return;
-
-    int len;
-    if (ethernet->_receive_frame(uip_buf, &len)) {
-        uip_len = len;
-        this->handlePacket();
-
-    } else {
-
-        if (timer_expired(&periodic_timer)) { /* no packet but periodic_timer time out (0.1s)*/
-            timer_reset(&periodic_timer);
-
-            for (int i = 0; i < UIP_CONNS; i++) {
-                uip_periodic(i);
-                /* If the above function invocation resulted in data that
-                   should be sent out on the network, the global variable
-                   uip_len is set to a value > 0. */
-                if (uip_len > 0) {
-                    uip_arp_out();
-                    tapdev_send(uip_buf, uip_len);
-                }
-            }
-
-#if UIP_CONF_UDP
-            for (int i = 0; i < UIP_UDP_CONNS; i++) {
-                uip_udp_periodic(i);
-                /* If the above function invocation resulted in data that
-                   should be sent out on the network, the global variable
-                   uip_len is set to a value > 0. */
-                if (uip_len > 0) {
-                    uip_arp_out();
-                    tapdev_send(uip_buf, uip_len);
-                }
-            }
-#endif
-        }
-/*
-        This didn't work actually made it worse,it should have worked though
-        else{
-            // TODO if the command queue is below a certain amount we should poll any stopped connections
-            if(command_q->size() < 4) {
-                for (struct uip_conn *connr = &uip_conns[0]; connr <= &uip_conns[UIP_CONNS - 1]; ++connr) {
-                    if(uip_stopped(connr)){
-                        // Force a poll of this
-                        printf("Force poll of connection\n");
-                        uip_poll_conn(connr);
-                    }
-                }
-            }
-        }
-*/
-        /* Call the ARP timer function every 10 seconds. */
-        if (timer_expired(&arp_timer)) {
-            timer_reset(&arp_timer);
-            uip_arp_timer();
-        }
-    }
-}
-
-static void setup_servers()
-{
-    if (webserver_enabled) {
-        // Initialize the HTTP server, listen to port 80.
-        httpd_init();
-        printf("Webserver initialized\n");
-    }
-
-    if (telnet_enabled) {
-        // Initialize the telnet server
-        Telnetd::init();
-        printf("Telnetd initialized\n");
-    }
-
-    // sftpd service, which is lazily created on reciept of first packet
-    uip_listen(HTONS(115));
-}
-
-extern "C" void dhcpc_configured(const struct dhcpc_state *s)
-{
-    printf("Got IP address %d.%d.%d.%d\n",
-           uip_ipaddr1(&s->ipaddr), uip_ipaddr2(&s->ipaddr),
-           uip_ipaddr3(&s->ipaddr), uip_ipaddr4(&s->ipaddr));
-    printf("Got netmask %d.%d.%d.%d\n",
-           uip_ipaddr1(&s->netmask), uip_ipaddr2(&s->netmask),
-           uip_ipaddr3(&s->netmask), uip_ipaddr4(&s->netmask));
-    printf("Got DNS server %d.%d.%d.%d\n",
-           uip_ipaddr1(&s->dnsaddr), uip_ipaddr2(&s->dnsaddr),
-           uip_ipaddr3(&s->dnsaddr), uip_ipaddr4(&s->dnsaddr));
-    printf("Got default router %d.%d.%d.%d\n",
-           uip_ipaddr1(&s->default_router), uip_ipaddr2(&s->default_router),
-           uip_ipaddr3(&s->default_router), uip_ipaddr4(&s->default_router));
-    printf("Lease expires in %ld seconds\n", ntohl(s->lease_time));
-
-    theNetwork->dhcpc_configured(s->ipaddr, s->netmask, s->default_router);
-}
-
-void Network::dhcpc_configured(uint32_t ipaddr, uint32_t ipmask, uint32_t ipgw)
-{
-    memcpy(this->ipaddr, &ipaddr, 4);
-    memcpy(this->ipmask, &ipmask, 4);
-    memcpy(this->ipgw, &ipgw, 4);
-
-    uip_sethostaddr((u16_t*)this->ipaddr);
-    uip_setnetmask((u16_t*)this->ipmask);
-    uip_setdraddr((u16_t*)this->ipgw);
-
-    setup_servers();
-}
-
-void Network::init(void)
-{
-    // two timers for tcp/ip
-    timer_set(&periodic_timer, CLOCK_SECOND / 2); /* 0.5s */
-    timer_set(&arp_timer, CLOCK_SECOND * 10);   /* 10s */
-
-    // Initialize the uIP TCP/IP stack.
-    uip_init();
-
-    uip_setethaddr(mac_address);
-
-    if (!use_dhcp) { // manual setup of ip
-        uip_ipaddr_t tip;  /* local IP address */
-        uip_ipaddr(tip, ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
-        uip_sethostaddr(tip);    /* host IP address */
-        printf("IP Addr: %d.%d.%d.%d\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
-
-        uip_ipaddr(tip, ipgw[0], ipgw[1], ipgw[2], ipgw[3]);
-        uip_setdraddr(tip);  /* router IP address */
-        printf("IP GW: %d.%d.%d.%d\n", ipgw[0], ipgw[1], ipgw[2], ipgw[3]);
-
-        uip_ipaddr(tip, ipmask[0], ipmask[1], ipmask[2], ipmask[3]);
-        uip_setnetmask(tip); /* mask */
-        printf("IP mask: %d.%d.%d.%d\n", ipmask[0], ipmask[1], ipmask[2], ipmask[3]);
-        setup_servers();
-
-    }else{
-    #if UIP_CONF_UDP
-        dhcpc_init(mac_address, sizeof(mac_address));
-        dhcpc_request();
-        printf("Getting IP address....\n");
-    #endif
-    }
-}
-
-void Network::on_main_loop(void *argument)
-{
-    // issue commands here if any available
-    while(command_q->pop()) {
-        // keep feeding them until empty
-    }
-}
-
-// select between webserver and telnetd server
-extern "C" void app_select_appcall(void)
-{
-    switch (uip_conn->lport) {
-        case HTONS(80):
-            if (webserver_enabled) httpd_appcall();
-            break;
-
-        case HTONS(23):
-            if (telnet_enabled) Telnetd::appcall();
-            break;
-
-        case HTONS(115):
-            if(sftpd == NULL) {
-                sftpd= new Sftpd();
-                sftpd->init();
-                printf("Created sftpd service\n");
-            }
-            sftpd->appcall();
-            break;
-
-        default:
-            printf("unknown app for port: %d\n", uip_conn->lport);
-
-    }
-}
-
-void Network::tapdev_send(void *pPacket, unsigned int size)
-{
-    memcpy(ethernet->request_packet_buffer(), pPacket, size);
-    ethernet->write_packet((uint8_t *) pPacket, size);
-}
-
-// define this to split full frames into two to illicit an ack from the endpoint
-#define SPLIT_OUTPUT
-
-#ifdef SPLIT_OUTPUT
-extern "C" void uip_split_output(void);
-extern "C" void tcpip_output()
-{
-    theNetwork->tapdev_send(uip_buf, uip_len);
-}
-void network_device_send()
-{
-    uip_split_output();
-    //tcpip_output();
-}
-#else
-void network_device_send()
-{
-    tapdev_send(uip_buf, uip_len);
-}
-#endif
-
-void Network::handlePacket(void)
-{
-    if (uip_len > 0) {  /* received packet */
-        //printf("handlePacket: %d\n", uip_len);
-
-        if (BUF->type == htons(UIP_ETHTYPE_IP)) { /* IP packet */
-            uip_arp_ipin();
-            uip_input();
-            /* If the above function invocation resulted in data that
-                should be sent out on the network, the global variable
-                uip_len is set to a value > 0. */
-
-            if (uip_len > 0) {
-                uip_arp_out();
-                network_device_send();
-            }
-
-        } else if (BUF->type == htons(UIP_ETHTYPE_ARP)) { /*ARP packet */
-            uip_arp_arpin();
-            /* If the above function invocation resulted in data that
-                should be sent out on the network, the global variable
-                uip_len is set to a value > 0. */
-            if (uip_len > 0) {
-                tapdev_send(uip_buf, uip_len);  /* ARP ack*/
-            }
-
-        } else {
-            printf("Unknown ethernet packet type %04X\n", htons(BUF->type));
-            uip_len = 0;
-        }
-    }
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/Network.h
--- a/libs/Network/uip/Network.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#ifndef _NETWORK_H
-#define _NETWORK_H
-
-#include "timer.h"
-#include "LPC17XX_Ethernet.h"
-#include "Module.h"
-#include "NetworkPublicAccess.h"
-
-#define network_enable_checksum CHECKSUM("enable")
-#define network_webserver_checksum CHECKSUM("webserver")
-#define network_telnet_checksum CHECKSUM("telnet")
-#define network_mac_override_checksum CHECKSUM("mac_override")
-#define network_ip_address_checksum CHECKSUM("ip_address")
-#define network_ip_gateway_checksum CHECKSUM("ip_gateway")
-#define network_ip_mask_checksum CHECKSUM("ip_mask")
-
-class Network : public Module
-{
-public:
-    Network();
-    virtual ~Network();
-
-    void on_module_loaded();
-    void on_idle(void* argument);
-    void on_main_loop(void* argument);
-    void on_get_public_data(void* argument);
-    void dhcpc_configured(uint32_t ipaddr, uint32_t ipmask, uint32_t ipgw);
-    static Network *getInstance() { return instance;}
-    void tapdev_send(void *pPacket, unsigned int size);
-
-private:
-    void init();
-    uint32_t tick(uint32_t dummy);
-    void handlePacket();
-
-    static Network *instance;
-
-    LPC17XX_Ethernet *ethernet;
-
-    struct timer periodic_timer, arp_timer;
-    uint8_t mac_address[6];
-    uint8_t ipaddr[4];
-    uint8_t ipmask[4];
-    uint8_t ipgw[4];
-    volatile uint32_t tickcnt;
-
-};
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/NetworkPublicAccess.h
--- a/libs/Network/uip/NetworkPublicAccess.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#ifndef NETWORKPUBLICACCESS_H
-#define NETWORKPUBLICACCESS_H
-
-#define network_checksum        CHECKSUM("network")
-#define get_ip_checksum         CHECKSUM("getip")
-#define get_ipconfig_checksum   CHECKSUM("getipconfig")
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/c-fifo.h
--- a/libs/Network/uip/c-fifo.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#ifndef _CFIFO_H_
-#define _CFIFO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void *new_fifo();
-void delete_fifo(void *);
-char *fifo_pop(void *);
-void fifo_push(void *, char *);
-int fifo_size(void *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/clock-arch.c
--- a/libs/Network/uip/clock-arch.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2006, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $
- */
-
-/**
- * \file
- *         Implementation of architecture-specific clock functionality
- * \author
- *         Adam Dunkels <adam@sics.se>
- */
-
-#include "clock-arch.h"
-static clock_time_t Ticks;
-
-void do_tick() {
-    Ticks++;
-}
-
-/*---------------------------------------------------------------------------*/
-clock_time_t clock_time(void)
-{
-    return Ticks;
-}
-/*---------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/clock-arch.h
--- a/libs/Network/uip/clock-arch.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2006, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $
- */
-
-#ifndef __CLOCK_ARCH_H__
-#define __CLOCK_ARCH_H__
-
-typedef unsigned clock_time_t;
-#define CLOCK_CONF_SECOND 100
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void do_tick();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CLOCK_ARCH_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/dhcpc/dhcpc.c
--- a/libs/Network/uip/dhcpc/dhcpc.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,388 +0,0 @@
-/*
- * Copyright (c) 2005, Swedish Institute of Computer Science
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "uip.h"
-#include "dhcpc.h"
-#include "timer.h"
-#include "pt.h"
-
-#if UIP_CONF_UDP
-
-#define STATE_INITIAL         0
-#define STATE_SENDING         1
-#define STATE_OFFER_RECEIVED  2
-#define STATE_CONFIG_RECEIVED 3
-
-#define ntohl(a) ((((a) >> 24) & 0x000000FF) | (((a) >> 8) & 0x0000FF00) | (((a) << 8) & 0x00FF0000) | (((a) << 24) & 0xFF000000))
-static struct dhcpc_state s __attribute__ ((section ("AHBSRAM1")));
-//#define UIP_CONF_DHCP_LIGHT
-
-struct dhcp_msg {
-    u8_t op, htype, hlen, hops;
-    u8_t xid[4];
-    u16_t secs, flags;
-    u8_t ciaddr[4];
-    u8_t yiaddr[4];
-    u8_t siaddr[4];
-    u8_t giaddr[4];
-    u8_t chaddr[16];
-#ifndef UIP_CONF_DHCP_LIGHT
-    u8_t sname[64];
-    u8_t file[128];
-#endif
-    u8_t options[312];
-};
-
-#define BOOTP_BROADCAST 0x8000
-
-#define DHCP_REQUEST        1
-#define DHCP_REPLY          2
-#define DHCP_HTYPE_ETHERNET 1
-#define DHCP_HLEN_ETHERNET  6
-#define DHCP_MSG_LEN      236
-
-#define DHCPC_SERVER_PORT  67
-#define DHCPC_CLIENT_PORT  68
-
-#define DHCPDISCOVER  1
-#define DHCPOFFER     2
-#define DHCPREQUEST   3
-#define DHCPDECLINE   4
-#define DHCPACK       5
-#define DHCPNAK       6
-#define DHCPRELEASE   7
-
-#define DHCP_OPTION_SUBNET_MASK   1
-#define DHCP_OPTION_ROUTER        3
-#define DHCP_OPTION_DNS_SERVER    6
-#define DHCP_OPTION_REQ_IPADDR   50
-#define DHCP_OPTION_LEASE_TIME   51
-#define DHCP_OPTION_MSG_TYPE     53
-#define DHCP_OPTION_SERVER_ID    54
-#define DHCP_OPTION_REQ_LIST     55
-#define DHCP_OPTION_END         255
-
-static uint32_t xid= 0x00112233;
-
-static const u8_t magic_cookie[4] = {99, 130, 83, 99};
-/*---------------------------------------------------------------------------*/
-static u8_t *
-add_msg_type(u8_t *optptr, u8_t type)
-{
-    *optptr++ = DHCP_OPTION_MSG_TYPE;
-    *optptr++ = 1;
-    *optptr++ = type;
-    return optptr;
-}
-/*---------------------------------------------------------------------------*/
-static u8_t *
-add_server_id(u8_t *optptr)
-{
-    *optptr++ = DHCP_OPTION_SERVER_ID;
-    *optptr++ = 4;
-    memcpy(optptr, &s.serverid, 4);
-    return optptr + 4;
-}
-/*---------------------------------------------------------------------------*/
-static u8_t *
-add_req_ipaddr(u8_t *optptr)
-{
-    *optptr++ = DHCP_OPTION_REQ_IPADDR;
-    *optptr++ = 4;
-    memcpy(optptr, &s.ipaddr, 4);
-    return optptr + 4;
-}
-/*---------------------------------------------------------------------------*/
-static u8_t *
-add_req_options(u8_t *optptr)
-{
-    *optptr++ = DHCP_OPTION_REQ_LIST;
-    *optptr++ = 3;
-    *optptr++ = DHCP_OPTION_SUBNET_MASK;
-    *optptr++ = DHCP_OPTION_ROUTER;
-    *optptr++ = DHCP_OPTION_DNS_SERVER;
-    return optptr;
-}
-/*---------------------------------------------------------------------------*/
-static u8_t *
-add_end(u8_t *optptr)
-{
-    *optptr++ = DHCP_OPTION_END;
-    return optptr;
-}
-/*---------------------------------------------------------------------------*/
-static void
-create_msg(register struct dhcp_msg *m, int rea)
-{
-    m->op = DHCP_REQUEST;
-    m->htype = DHCP_HTYPE_ETHERNET;
-    m->hlen = s.mac_len;
-    m->hops = 0;
-    memcpy(m->xid, &xid, sizeof(m->xid));
-    m->secs = 0;
-    m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
-    /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
-    if(rea == 0 )  memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
-    else memset(m->ciaddr, 0, sizeof(m->ciaddr));
-    memset(m->yiaddr, 0, sizeof(m->yiaddr));
-    memset(m->siaddr, 0, sizeof(m->siaddr));
-    memset(m->giaddr, 0, sizeof(m->giaddr));
-    memcpy(m->chaddr, s.mac_addr, s.mac_len);
-    memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
-#ifndef UIP_CONF_DHCP_LIGHT
-    memset(m->sname, 0, sizeof(m->sname));
-    memset(m->file, 0, sizeof(m->file));
-#endif
-
-    memcpy(m->options, magic_cookie, sizeof(magic_cookie));
-}
-/*---------------------------------------------------------------------------*/
-static void
-send_discover(void)
-{
-    u8_t *end;
-    struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-
-    create_msg(m, 0);
-
-    end = add_msg_type(&m->options[4], DHCPDISCOVER);
-    end = add_req_options(end);
-    end = add_end(end);
-
-    uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-}
-/*---------------------------------------------------------------------------*/
-static void
-send_request(int rea)
-{
-    u8_t *end;
-    struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-
-    create_msg(m, rea);
-
-    end = add_msg_type(&m->options[4], DHCPREQUEST);
-    end = add_server_id(end);
-    end = add_req_ipaddr(end);
-    end = add_end(end);
-
-    uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-}
-/*---------------------------------------------------------------------------*/
-static u8_t
-parse_options(u8_t *optptr, int len)
-{
-    u8_t *end = optptr + len;
-    u8_t type = 0;
-
-    while (optptr < end) {
-        switch (*optptr) {
-            case DHCP_OPTION_SUBNET_MASK:
-                memcpy(&s.netmask, optptr + 2, 4);
-                break;
-            case DHCP_OPTION_ROUTER:
-                memcpy(&s.default_router, optptr + 2, 4);
-                break;
-            case DHCP_OPTION_DNS_SERVER:
-                memcpy(&s.dnsaddr, optptr + 2, 4);
-                break;
-            case DHCP_OPTION_MSG_TYPE:
-                type = *(optptr + 2);
-                break;
-            case DHCP_OPTION_SERVER_ID:
-                memcpy(s.serverid, optptr + 2, 4);
-                break;
-            case DHCP_OPTION_LEASE_TIME:
-                memcpy(&s.lease_time, optptr + 2, 4);
-                break;
-            case DHCP_OPTION_END:
-                return type;
-        }
-
-        optptr += optptr[1] + 2;
-    }
-    return type;
-}
-/*---------------------------------------------------------------------------*/
-u8_t
-parse_msg(void)
-{
-    struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-
-    if (m->op == DHCP_REPLY &&
-        memcmp(m->xid, &xid, sizeof(xid)) == 0 &&
-        memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) {
-        memcpy(&s.ipaddr, m->yiaddr, 4);
-        return parse_options(&m->options[4], uip_datalen());
-    }
-    return 0;
-}
-/*---------------------------------------------------------------------------*/
-static
-PT_THREAD(handle_dhcp(void))
-{
-    PT_BEGIN(&s.pt);
-
-    /* try_again:*/
-    s.state = STATE_SENDING;
-    s.ticks = CLOCK_SECOND;
-    xid++;
-
-    send_discover();
-    do {
-        timer_set(&s.timer, s.ticks);
-        PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-        // if we timed out then increase time out and send discover again
-        if (timer_expired(&s.timer)) {
-            if (s.ticks < CLOCK_SECOND * 60) {
-                s.ticks *= 2;
-            }
-            send_discover();
-        }else{
-            // we may have gotten some other UDP packet in which case just wait some more for the right packet
-            if (uip_newdata() && parse_msg() == DHCPOFFER) {
-                s.state = STATE_OFFER_RECEIVED;
-                break;
-            }
-        }
-        PT_YIELD(&s.pt);
-
-    } while (s.state != STATE_OFFER_RECEIVED);
-
-    s.ticks = CLOCK_SECOND;
-    xid++;
-
-    send_request(0);
-    do {
-        timer_set(&s.timer, s.ticks);
-        PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-
-        if (timer_expired(&s.timer)) {
-            if (s.ticks <= CLOCK_SECOND * 10) {
-                s.ticks += CLOCK_SECOND;
-                send_request(0); // resend only on timeout
-            } else {
-                PT_RESTART(&s.pt);
-            }
-        }else{
-            if (uip_newdata() && parse_msg() == DHCPACK) {
-                s.state = STATE_CONFIG_RECEIVED;
-                break;
-            }
-        }
-        PT_YIELD(&s.pt);
-
-    } while (s.state != STATE_CONFIG_RECEIVED);
-
-    dhcpc_configured(&s);
-
-    // now we wait for close to expiration and renew the lease
-    do {
-        // we should reacquire expired leases here.
-        timer_set(&s.timer, (ntohl(s.lease_time) * 0.5)*CLOCK_SECOND); // half of lease expire time
-        PT_WAIT_UNTIL(&s.pt, timer_expired(&s.timer));
-
-        uip_log("reaquire dhcp lease");
-
-        // spec says send request direct to server that gave it to us, but seems to be unecessary
-        //uip_ipaddr_copy(&s.conn->ripaddr, s.serverid);
-
-        s.ticks = CLOCK_SECOND;
-        xid++;
-        send_request(0);
-        do {
-            timer_set(&s.timer, s.ticks);
-            PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-
-            if (timer_expired(&s.timer)) {
-                if (s.ticks <= CLOCK_SECOND * 10) {
-                    s.ticks += CLOCK_SECOND;
-                    send_request(0); // resend only on timeout
-                } else {
-                    // give up
-                    // TODO probably need to deal with upstream apps and stop them then reinit them
-                    PT_RESTART(&s.pt);
-                }
-            }else{
-                if (parse_msg() == DHCPACK) {
-                    uip_log("dhcp lease renewed");
-                    break;
-                }
-            }
-            PT_YIELD(&s.pt);
-        }while(1);
-
-    }while(1);
-
-    PT_END(&s.pt);
-}
-/*---------------------------------------------------------------------------*/
-void
-dhcpc_init(const void *mac_addr, int mac_len)
-{
-    uip_ipaddr_t addr;
-
-    s.mac_addr = mac_addr;
-    s.mac_len  = mac_len;
-
-    s.state = STATE_INITIAL;
-    uip_ipaddr(addr, 255, 255, 255, 255);
-    s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
-    if (s.conn != NULL) {
-        uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
-    }
-    PT_INIT(&s.pt);
-}
-/*---------------------------------------------------------------------------*/
-void
-dhcpc_appcall(void)
-{
-    handle_dhcp();
-}
-/*---------------------------------------------------------------------------*/
-void
-dhcpc_request(void)
-{
-    u16_t ipaddr[2];
-
-    if (s.state == STATE_INITIAL) {
-        uip_ipaddr(ipaddr, 0, 0, 0, 0);
-        uip_sethostaddr(ipaddr);
-        /*    handle_dhcp(PROCESS_EVENT_NONE, NULL);*/
-    }
-}
-/*---------------------------------------------------------------------------*/
-
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/dhcpc/dhcpc.h
--- a/libs/Network/uip/dhcpc/dhcpc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2005, Swedish Institute of Computer Science
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $
- */
-#ifndef __DHCPC_H__
-#define __DHCPC_H__
-
-#include "timer.h"
-#include "pt.h"
-
-struct dhcpc_state {
-  struct pt pt;
-  char state;
-  struct uip_udp_conn *conn;
-  struct timer timer;
-  u16_t ticks;
-  const void *mac_addr;
-  int mac_len;
-
-  u8_t serverid[4];
-
-  uint32_t lease_time;
-  uint32_t ipaddr;
-  uint32_t netmask;
-  uint32_t dnsaddr;
-  uint32_t default_router;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void dhcpc_init(const void *mac_addr, int mac_len);
-void dhcpc_request(void);
-
-void dhcpc_appcall(void);
-
-void dhcpc_configured(const struct dhcpc_state *s);
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef struct dhcpc_state uip_udp_appstate_t;
-#define UIP_UDP_APPCALL dhcpc_appcall
-
-
-#endif /* __DHCPC_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/fifo.cpp
--- a/libs/Network/uip/fifo.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-// c accessibllity to the c++ fifo class
-#include "fifo.h"
-#include "c-fifo.h"
-
-void *new_fifo()
-{
-    return new Fifo<char*>;
-}
-
-void delete_fifo(void *fifo)
-{
-    if(fifo == NULL) return;
-    Fifo<char *> *f= static_cast<Fifo<char *> *>(fifo);
-    while(f->size() > 0) {
-        char *s= f->pop();
-        if (s != NULL) {
-            free(s);
-        }
-    }
-    delete f;
-}
-
-char *fifo_pop(void *fifo)
-{
-    Fifo<char *> *f= static_cast<Fifo<char *> *>(fifo);
-    return f->pop();
-}
-
-void fifo_push(void *fifo, char *str)
-{
-    Fifo<char *> *f= static_cast<Fifo<char *> *>(fifo);
-    f->push(str);
-}
-
-int fifo_size(void *fifo)
-{
-    Fifo<char *> *f= static_cast<Fifo<char *> *>(fifo);
-    return f->size();
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/fifo.h
--- a/libs/Network/uip/fifo.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*************************************************************************
- *
- * $Author: Jim Morris $
- * $Date: 1999/02/05 21:05:00 $
- *
- * this code is Licensed LGPL
- *
- *************************************************************************/
-#ifndef _FIFO_H_
-#define _FIFO_H_
-
-#include <stdlib.h>
-
-// Doubly Linked list class
-
-template<class T> class LList;
-
-template<class T>
-class Tlink
-{
-public:
-    Tlink<T> *pnext;
-    Tlink<T> *pprev;
-
-public:
-    Tlink()
-    {
-        pnext = pprev = 0;
-    }
-    Tlink(Tlink *p, Tlink *n)
-    {
-        pprev = p;
-        pnext = n;
-    }
-    Tlink(const T &d) : data(d)
-    {
-        pnext = pprev = 0;
-    }
-    T data;
-};
-
-template<class T>
-class list_base
-{
-private:
-    Tlink<T> *head;
-    Tlink<T> *tail;
-    int cnt;
-
-protected:
-    list_base()
-    {
-        head = tail = NULL;
-        cnt = 0;
-    }
-
-    list_base(Tlink<T> *n) // link into head of list
-    {
-        cnt = 1;
-        n->pnext = NULL;
-        n->pprev = NULL;
-        head = n;
-        tail = n;
-    }
-
-    Tlink<T> *gethead(void) const
-    {
-        return head;
-    }
-    Tlink<T> *gettail(void) const
-    {
-        return tail;
-    }
-    Tlink<T> *getnext(Tlink<T> *n) const
-    {
-        return n->pnext;
-    }
-    Tlink<T> *getprev(Tlink<T> *n) const
-    {
-        return n->pprev;
-    }
-
-    void addtohead(Tlink<T> *n) // add at head of list
-    {
-        n->pnext = head;
-        n->pprev = NULL;
-        if (head) head->pprev = n;
-        head = n;
-        if (tail == NULL) // first one
-            tail = n;
-        cnt++;
-    }
-
-    void addtohead(int c, Tlink<T> *a, Tlink<T> *b) // add list at head of list
-    {
-        b->pnext = head;
-        a->pprev = NULL;
-        if (head) head->pprev = b;
-        head = a;
-        if (tail == NULL) // first one
-            tail = b;
-        cnt += c;
-    }
-
-    void addtotail(Tlink<T> *n)  // add to tail of list
-    {
-        n->pnext = NULL;
-        n->pprev = tail;
-        if (tail) tail->pnext = n;
-        tail = n;
-        if (head == NULL) // first one
-            head = n;
-        cnt++;
-    }
-
-    void remove(Tlink<T> *n) // remove it by relinking
-    {
-        cnt--;
-        if (n->pprev) n->pprev->pnext = n->pnext;
-        else head = n->pnext; // it must be the head
-        if (n->pnext) n->pnext->pprev = n->pprev;
-        else tail = n->pprev;
-    }
-
-    void reset()
-    {
-        head = tail = NULL;
-        cnt = 0;
-    }
-    int count() const
-    {
-        return cnt;
-    }
-};
-
-// fifo
-template<class T>
-class Fifo : private list_base<T>
-{
-public:
-    Fifo(){}
-
-    void push(const T &a);
-    T pop();
-    T peek();
-    int size() const;
-};
-
-template <class T>
-int Fifo<T>::size() const
-{
-    return list_base<T>::count();
-}
-
-// add to end of list (FIFO)
-template <class T>
-void Fifo<T>::push(const T &a)
-{
-    list_base<T>::addtotail(new Tlink<T>(a));
-}
-
-// return the first item in the list
-template <class T>
-T Fifo<T>::peek()
-{
-    Tlink<T> *p = list_base<T>::gethead();
-    return p->data;
-}
-
-// pop the first item off the fifo
-template <class T>
-T Fifo<T>::pop()
-{
-    Tlink<T> *p = list_base<T>::gethead();
-    T data = p->data;
-    list_base<T>::remove(p);
-    delete p;
-    return data;
-};
-#endif
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/lib/memb.c
--- a/libs/Network/uip/lib/memb.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: memb.c,v 1.1 2006/06/12 08:21:43 adam Exp $
- */
-
-/**
- * \addtogroup memb
- * @{
- */
-
- /**
- * \file
- * Memory block allocation routines.
- * \author Adam Dunkels <adam@sics.se>
- */
-#include <string.h>
-
-#include "memb.h"
-
-/*---------------------------------------------------------------------------*/
-void
-memb_init(struct memb_blocks *m)
-{
-  memset(m->count, 0, m->num);
-  memset(m->mem, 0, m->size * m->num);
-}
-/*---------------------------------------------------------------------------*/
-void *
-memb_alloc(struct memb_blocks *m)
-{
-  int i;
-
-  for(i = 0; i < m->num; ++i) {
-    if(m->count[i] == 0) {
-      /* If this block was unused, we increase the reference count to
-	 indicate that it now is used and return a pointer to the
-	 memory block. */
-      ++(m->count[i]);
-      return (void *)((char *)m->mem + (i * m->size));
-    }
-  }
-
-  /* No free block was found, so we return NULL to indicate failure to
-     allocate block. */
-  return NULL;
-}
-/*---------------------------------------------------------------------------*/
-char
-memb_free(struct memb_blocks *m, void *ptr)
-{
-  int i;
-  char *ptr2;
-
-  /* Walk through the list of blocks and try to find the block to
-     which the pointer "ptr" points to. */
-  ptr2 = (char *)m->mem;
-  for(i = 0; i < m->num; ++i) {
-    
-    if(ptr2 == (char *)ptr) {
-      /* We've found to block to which "ptr" points so we decrease the
-	 reference count and return the new value of it. */
-      if(m->count[i] > 0) {
-	/* Make sure that we don't deallocate free memory. */
-	--(m->count[i]);
-      }
-      return m->count[i];
-    }
-    ptr2 += m->size;
-  }
-  return -1;
-}
-/*---------------------------------------------------------------------------*/
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/lib/memb.h
--- a/libs/Network/uip/lib/memb.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: memb.h,v 1.1 2006/06/12 08:21:43 adam Exp $
- */
-
-/**
- * \defgroup memb Memory block management functions
- *
- * The memory block allocation routines provide a simple yet powerful
- * set of functions for managing a set of memory blocks of fixed
- * size. A set of memory blocks is statically declared with the
- * MEMB() macro. Memory blocks are allocated from the declared
- * memory by the memb_alloc() function, and are deallocated with the
- * memb_free() function.
- *
- * \note Because of namespace clashes only one MEMB() can be
- * declared per C module, and the name scope of a MEMB() memory
- * block is local to each C module.
- *
- * The following example shows how to declare and use a memory block
- * called "cmem" which has 8 chunks of memory with each memory chunk
- * being 20 bytes large.
- *
- * @{
- */
-
-
-/**
- * \file
- *         Memory block allocation routines.
- * \author
- *         Adam Dunkels <adam@sics.se>
- *
- */
-
-#ifndef __MEMB_H__
-#define __MEMB_H__
-
-/*
- * Here we define a C preprocessing macro for concatenating to
- * strings. We need use two macros in order to allow concatenation of
- * two #defined macros.
- */
-#define MEMB_CONCAT2(s1, s2) s1##s2
-#define MEMB_CONCAT(s1, s2) MEMB_CONCAT2(s1, s2)
-
-/**
- * Declare a memory block.
- *
- * This macro is used to staticall declare a block of memory that can
- * be used by the block allocation functions. The macro statically
- * declares a C array with a size that matches the specified number of
- * blocks and their individual sizes.
- *
- * Example:
- \code
-MEMB(connections, sizeof(struct connection), 16);
- \endcode
- *
- * \param name The name of the memory block (later used with
- * memb_init(), memb_alloc() and memb_free()).
- *
- * \param size The size of each memory chunk, in bytes.
- *
- * \param num The total number of memory chunks in the block.
- *
- */
-#define MEMB(name, structure, num)  static char MEMB_CONCAT(name,_memb_count)[num]; \
-                                    static structure MEMB_CONCAT(name,_memb_mem)[num]; \
-                                    static struct memb_blocks name = {sizeof(structure), num, MEMB_CONCAT(name,_memb_count), (void *)MEMB_CONCAT(name,_memb_mem) }
-
-
-
-struct memb_blocks {
-  unsigned short size;
-  unsigned short num;
-  char *count;
-  void *mem;
-};
-
-/**
- * Initialize a memory block that was declared with MEMB().
- *
- * \param m A memory block previosly declared with MEMB().
- */
-void  memb_init(struct memb_blocks *m);
-
-/**
- * Allocate a memory block from a block of memory declared with MEMB().
- *
- * \param m A memory block previosly declared with MEMB().
- */
-void *memb_alloc(struct memb_blocks *m);
-
-/**
- * Deallocate a memory block from a memory block previously declared
- * with MEMB().
- *
- * \param m m A memory block previosly declared with MEMB().
- *
- * \param ptr A pointer to the memory block that is to be deallocated.
- *
- * \return The new reference count for the memory block (should be 0
- * if successfully deallocated) or -1 if the pointer "ptr" did not
- * point to a legal memory block.
- */
-char  memb_free(struct memb_blocks *m, void *ptr);
-
-/** @} */
-
-#endif /* __MEMB_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/sftp/sftpd.cpp
--- a/libs/Network/uip/sftp/sftpd.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
-
-#include "sftpd.h"
-#include "string.h"
-#include "stdlib.h"
-
-extern "C" {
-#include "uip.h"
-}
-
-#define ISO_nl 0x0a
-#define ISO_cr 0x0d
-#define ISO_sp 0x20
-
-#define DEBUG_PRINTF(...)
-
-Sftpd::Sftpd()
-{
-    fd = NULL;
-    state = STATE_NORMAL;
-    outbuf = NULL;
-    filename= NULL;
-}
-
-Sftpd::~Sftpd()
-{
-    if (fd != NULL) {
-        fclose(fd);
-    }
-}
-
-int Sftpd::senddata()
-{
-    if (outbuf != NULL) {
-        DEBUG_PRINTF("sftp: senddata %s\n", outbuf);
-        strcpy((char *)uip_appdata, outbuf);
-        uip_send(uip_appdata, strlen(outbuf));
-    }
-    return 0;
-}
-
-int Sftpd::handle_command()
-{
-    PSOCK_BEGIN(&sin);
-
-    do {
-        PSOCK_READTO(&sin, ISO_nl);
-        buf[PSOCK_DATALEN(&sin) - 1] = 0;
-        int len = PSOCK_DATALEN(&sin) - 1;
-        DEBUG_PRINTF("sftp: got command: %s, %d\n", buf, len);
-
-        if (state == STATE_CONNECTED) {
-            if (strncmp(buf, "USER", 4) == 0) {
-                outbuf = "!user logged in\n";
-
-            } else if (strncmp(buf, "KILL", 4) == 0) {
-                if (len < 6) {
-                    outbuf = "- incomplete KILL command\n";
-                } else {
-                    char *fn = &buf[5];
-                    int s = remove(fn);
-                    if (s == 0) outbuf = "+ deleted\n";
-                    else outbuf = "- delete failed\n";
-                }
-
-            } else if (strncmp(buf, "DONE", 4) == 0) {
-                outbuf = "+ exit\n";
-                state = STATE_CLOSE;
-
-            } else if (strncmp(buf, "STOR", 4) == 0) {
-                if (len < 11) {
-                    outbuf = "- incomplete STOR command\n";
-                } else {
-                    char *fn = &buf[9];
-                    if(this->filename != NULL) free(this->filename);
-                    this->filename= strdup(fn); // REMOVE when bug fixed
-                    // get { NEW|OLD|APP }
-                    if (strncmp(&buf[5], "OLD", 3) == 0) {
-                        DEBUG_PRINTF("sftp: Opening file: %s\n", fn);
-                        fd = fopen(fn, "w");
-                        if (fd != NULL) {
-                            outbuf = "+ new file\n";
-                            state = STATE_GET_LENGTH;
-                        } else {
-                            outbuf = "- failed\n";
-                        }
-                    } else if (strncmp(&buf[5], "APP", 3) == 0) {
-                        fd = fopen(fn, "a");
-                        if (fd != NULL) {
-                            outbuf = "+ append file\n";
-                            state = STATE_GET_LENGTH;
-                        } else {
-                            outbuf = "- failed\n";
-                        }
-                    } else {
-                        outbuf = "- Only OLD|APP supported\n";
-                    }
-                }
-
-            } else {
-                outbuf = "- Unknown command\n";
-            }
-
-        } else if (state == STATE_GET_LENGTH) {
-            if (len < 6 || strncmp(buf, "SIZE", 4) != 0) {
-                fclose(fd);
-                fd = NULL;
-                outbuf = "- Expected size\n";
-                state = STATE_CONNECTED;
-
-            } else {
-                filesize = atoi(&buf[5]);
-                if (filesize > 0) {
-                    outbuf = "+ ok, waiting for file\n";
-                    state = STATE_DOWNLOAD;
-                } else {
-                    fclose(fd);
-                    fd = NULL;
-                    outbuf = "- bad filesize\n";
-                    state = STATE_CONNECTED;
-                }
-            }
-
-        } else {
-            DEBUG_PRINTF("WTF state: %d\n", state);
-        }
-
-    } while(state == STATE_CONNECTED || state == STATE_GET_LENGTH);
-
-    PSOCK_END(&sin);
-}
-
-int Sftpd::handle_download()
-{
-    // Note this is not using PSOCK and it consumes all read data
-    char *readptr = (char *)uip_appdata;
-    unsigned int readlen = uip_datalen();
-    DEBUG_PRINTF("sftp: starting download, expecting %d bytes, read %d\n", filesize, readlen);
-
-    if (filesize > 0 && readlen > 0) {
-        if (readlen > filesize) readlen = filesize;
-        if (fwrite(readptr, 1, readlen, fd) != readlen) {
-            DEBUG_PRINTF("sftp: Error writing file\n");
-            fclose(fd);
-            fd = NULL;
-            outbuf = "- Error saving file\n";
-            state = STATE_CONNECTED;
-            return 0;
-        }
-        filesize -= readlen;
-        DEBUG_PRINTF("sftp: saved %d bytes %d left\n", readlen, filesize);
-        // HACK ALERT... to work around the fwrite/filesystem bug where writing large amounts of data corrupts the file
-        // we workaround by closing the file, the reopening for append until we are done
-        fclose(fd);
-        fd = fopen(this->filename, "a");
-    }
-    if (filesize == 0) {
-        DEBUG_PRINTF("sftp: download complete\n");
-        fclose(fd);
-        fd = NULL;
-        outbuf = "+ Saved file\n";
-        state = STATE_CONNECTED;
-        return 0;
-    }
-    return 1;
-}
-
-int Sftpd::acked()
-{
-    outbuf= NULL;
-    return 0;
-}
-
-
-void Sftpd::appcall(void)
-{
-    if (uip_connected()) {
-        // TODO check for other connections
-        PSOCK_INIT(&sin, buf, sizeof(buf));
-        state = STATE_CONNECTED;
-        outbuf = "+Smoothie SFTP Service\n";
-    }
-
-    if (state == STATE_CLOSE) {
-        DEBUG_PRINTF("sftp: state close\n");
-        state = STATE_NORMAL;
-        uip_close();
-        return;
-    }
-
-    if (uip_closed() || uip_aborted() || uip_timedout()) {
-        DEBUG_PRINTF("sftp: closed\n");
-        if (fd != NULL)
-            fclose(fd);
-        fd = NULL;
-        state = STATE_NORMAL;
-        return;
-    }
-
-    if (uip_acked()) {
-        DEBUG_PRINTF("sftp: acked\n");
-        this->acked();
-    }
-
-    if (uip_newdata()) {
-        DEBUG_PRINTF("sftp: newdata\n");
-        if (state == STATE_DOWNLOAD) {
-            if(handle_download() == 0) {
-                // we need to reset the input PSOCK again before using it after using the raw input buffer
-                PSOCK_INIT(&sin, buf, sizeof(buf));
-            }
-        } else {
-            handle_command();
-        }
-    }
-
-    if (uip_rexmit() || uip_newdata() || uip_acked() || uip_connected() || uip_poll()) {
-        this->senddata();
-    }
-
-}
-
-void Sftpd::init(void)
-{
-
-}
-
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/sftp/sftpd.h
--- a/libs/Network/uip/sftp/sftpd.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#ifndef __SFTPD_H__
-#define __SFTPD_H__
-
-/*
- * Implement RFC913  Simple File Transfer
- */
-
-
-#include <stdio.h>
-extern "C" {
-#include "psock.h"
-}
-
-class Sftpd
-{
-public:
-    Sftpd();
-    virtual ~Sftpd();
-
-    void appcall(void);
-    void init(void);
-
-private:
-    FILE *fd;
-    enum STATES { STATE_NORMAL, STATE_CONNECTED, STATE_GET_LENGTH, STATE_DOWNLOAD, STATE_CLOSE };
-    STATES state;
-    int acked();
-    int handle_command();
-    int handle_download();
-    int senddata();
-
-    struct psock sin;
-    char buf[80];
-    const char *outbuf;
-    unsigned int filesize;
-    char *filename;
-};
-
-#endif /* __sftpd_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/telnetd/shell.cpp
--- a/libs/Network/uip/telnetd/shell.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +0,0 @@
-/*
-* Copyright (c) 2003, Adam Dunkels.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-* 1. Redistributions of source code must retain the above copyright
-*    notice, this list of conditions and the following disclaimer.
-* 2. Redistributions in binary form must reproduce the above copyright
-*    notice, this list of conditions and the following disclaimer in the
-*    documentation and/or other materials provided with the distribution.
-* 3. The name of the author may not be used to endorse or promote
-*    products derived from this software without specific prior
-*    written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-* ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*
-* This file is part of the uIP TCP/IP stack.
-*
-* $Id: shell.c,v 1.1 2006/06/07 09:43:54 adam Exp $
-*
-*/
-
-#include "stdlib.h"
-#include "shell.h"
-#include "uip.h"
-#include <string.h>
-#include "checksumm.h"
-#include "utils.h"
-#include "stdio.h"
-#include "stdlib.h"
-#include "telnetd.h"
-#include "CallbackStream.h"
-#include "Kernel.h"
-
-//#define DEBUG_PRINTF(...)
-#define DEBUG_PRINTF printf
-
-struct ptentry {
-    uint16_t command_cs;
-    void (* pfunc)(char *str, Shell *sh);
-};
-
-#define SHELL_PROMPT "> "
-
-/*---------------------------------------------------------------------------*/
-bool Shell::parse(register char *str, struct ptentry *t)
-{
-    struct ptentry *p;
-    for (p = t; p->command_cs != 0; ++p) {
-        if (get_checksum(str) == p->command_cs) {
-            break;
-        }
-    }
-
-    p->pfunc(str, this);
-
-    return p->command_cs != 0;
-}
-/*---------------------------------------------------------------------------*/
-static void help(char *str, Shell *sh)
-{
-    sh->output("Available commands: All others are passed on\n");
-    sh->output("netstat     - show network info\n");
-    sh->output("?           - show network help\n");
-    sh->output("help        - show command help\n");
-    sh->output("exit, quit  - exit shell\n");
-}
-
-/*---------------------------------------------------------------------------*/
-static const char *states[] = {
-    "CLOSED",
-    "SYN_RCVD",
-    "SYN_SENT",
-    "ESTABLISHED",
-    "FIN_WAIT_1",
-    "FIN_WAIT_2",
-    "CLOSING",
-    "TIME_WAIT",
-    "LAST_ACK",
-    "NONE",
-    "RUNNING",
-    "CALLED"
-};
-static void connections(char *str, Shell *sh)
-{
-    char istr[128];
-    struct uip_conn *connr;
-    snprintf(istr, sizeof(istr), "Initial MSS: %d, MSS: %d\n", uip_initialmss(), uip_mss());
-    sh->output(istr);
-    sh->output("Current connections: \n");
-
-    for (connr = &uip_conns[0]; connr <= &uip_conns[UIP_CONNS - 1]; ++connr) {
-        if(connr->tcpstateflags != UIP_CLOSED) {
-            snprintf(istr, sizeof(istr), "%d, %u.%u.%u.%u:%u, %s, %u, %u, %c %c\n",
-                     HTONS(connr->lport),
-                     uip_ipaddr1(connr->ripaddr), uip_ipaddr2(connr->ripaddr),  uip_ipaddr3(connr->ripaddr), uip_ipaddr4(connr->ripaddr),
-                     HTONS(connr->rport),
-                     states[connr->tcpstateflags & UIP_TS_MASK],
-                     connr->nrtx,
-                     connr->timer,
-                     (uip_outstanding(connr)) ? '*' : ' ',
-                     (uip_stopped(connr)) ? '!' : ' ');
-
-            sh->output(istr);
-        }
-    }
-}
-
-static void quit(char *str, Shell *sh)
-{
-    sh->close();
-}
-
-//#include "clock.h"
-static void test(char *str, Shell *sh)
-{
-    printf("In Test\n");
-
-    // struct timer t;
-    // u16_t ticks=  CLOCK_SECOND*5;
-    // timer_set(&t, ticks);
-    // printf("Wait....\n");
-    // while(!timer_expired(&t)) {
-
-    // }
-    // printf("Done\n");
-    /*
-        const char *fn= "/sd/test6.txt";
-        uint16_t *buf= (uint16_t *)malloc(200*2);
-        int cnt= 0;
-        FILE *fp;
-        for(int i=0;i<10;i++) {
-            fp= fopen(fn, i == 0 ? "w" : "a");
-            if(fp == NULL) {
-                printf("failed to open file\n");
-                return;
-            }
-            for (int x = 0; x < 200; ++x) {
-                buf[x]= x+cnt;
-            }
-            cnt+=200;
-            int n= fwrite(buf, 2, 200, fp);
-            printf("wrote %d, %d\n", i, n);
-            fclose(fp);
-        }
-
-        fp= fopen(fn, "r");
-        if(fp == NULL) {
-            printf("failed to open file for read\n");
-            return;
-        }
-        printf("Opened file %s for read\n", fn);
-        do {
-            int n= fread(buf, 2, 200, fp);
-            if(n <= 0) break;
-            for(int x=0;x<n;x++) {
-                printf("%04X, ", buf[x]);
-            }
-        }while(1);
-        fclose(fp);
-        free(buf);
-        */
-}
-
-/*---------------------------------------------------------------------------*/
-
-static void unknown(char *str, Shell *sh)
-{
-    // its some other command, so queue it for mainloop to find
-    if (strlen(str) > 0) {
-        CommandQueue::getInstance()->add(str, sh->getStream());
-    }
-}
-/*---------------------------------------------------------------------------*/
-static struct ptentry parsetab[] = {
-    {CHECKSUM("netstat"), connections},
-    {CHECKSUM("exit"), quit},
-    {CHECKSUM("quit"), quit},
-    {CHECKSUM("test"), test},
-    {CHECKSUM("?"), help},
-
-    /* Default action */
-    {0, unknown}
-};
-/*---------------------------------------------------------------------------*/
-// this callback gets the results of a command, line by line
-// NULL means command completed
-// static
-int Shell::command_result(const char *str, void *p)
-{
-    // FIXME problem when shell is deleted and this gets called from slow command
-    // need a way to know this shell was closed or deleted
-    Shell *sh = (Shell *)p;
-    if (str == NULL) {
-        // indicates command is complete
-        // only prompt when command is completed
-        sh->telnet->output_prompt(SHELL_PROMPT);
-        return 0;
-
-    } else {
-        if (sh->telnet->can_output()) {
-            if (sh->telnet->output(str) == -1) return -1; // connection was closed
-            return 1;
-        }
-        // we are stalled
-        return 0;
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-void Shell::start()
-{
-    telnet->output("Smoothie command shell\r\n> ");
-}
-
-int Shell::queue_size()
-{
-    return CommandQueue::getInstance()->size();
-}
-/*---------------------------------------------------------------------------*/
-void Shell::input(char *cmd)
-{
-    if (parse(cmd, parsetab)) {
-        telnet->output_prompt(SHELL_PROMPT);
-    }
-}
-/*---------------------------------------------------------------------------*/
-
-int Shell::output(const char *str)
-{
-    return telnet->output(str);
-}
-
-void Shell::close()
-{
-    telnet->close();
-}
-
-void Shell::setConsole()
-{
-    // add it to the kernels output stream if we are a console
-    // TODO do we do this for all connections? so pronterface will get file done when playing from M24?
-    // then we need to turn it off for the streaming app
-    DEBUG_PRINTF("Shell: Adding stream to kernel streams\n");
-    THEKERNEL->streams->append_stream(pstream);
-    isConsole= true;
-}
-
-Shell::Shell(Telnetd *telnet)
-{
-    DEBUG_PRINTF("Shell: ctor %p - %p\n", this, telnet);
-    this->telnet= telnet;
-    // create a callback StreamOutput for this connection
-    pstream = new CallbackStream(command_result, this);
-    isConsole= false;
-}
-
-Shell::~Shell()
-{
-    if(isConsole) {
-        DEBUG_PRINTF("Shell: Removing stream from kernel streams\n");
-        THEKERNEL->streams->remove_stream(pstream);
-    }
-    // we cannot delete this stream until it is no longer in any command queue entries
-    // so mark it as closed, and allow it to delete itself when it is no longer being used
-    static_cast<CallbackStream*>(pstream)->mark_closed(); // mark the stream as closed so we do not get any callbacks
-    DEBUG_PRINTF("Shell: dtor %p\n", this);
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/telnetd/shell.h
--- a/libs/Network/uip/telnetd/shell.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/**
- * \file
- * Interface for the Contiki shell.
- * \author Adam Dunkels <adam@dunkels.com>
- *
- * Some of the functions declared in this file must be implemented as
- * a shell back-end in the architecture specific files of a Contiki
- * port.
- */
-
-
-/*
- * Copyright (c) 2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the Contiki desktop OS.
- *
- * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $
- *
- */
-#ifndef __SHELL_H__
-#define __SHELL_H__
-
-#include "telnetd.h"
-#include "CommandQueue.h"
-
-class Telnetd;
-
-class Shell
-{
-public:
-    Shell(Telnetd *telnet);
-    ~Shell();
-
-    /**
-     * Start the shell back-end.
-     *
-     * Called by the front-end when a new shell is started.
-     */
-    void start(void);
-
-    /**
-     * Process a shell command.
-     *
-     * This function will be called by the shell GUI / telnet server whan
-     * a command has been entered that should be processed by the shell
-     * back-end.
-     *
-     * \param command The command to be processed.
-     */
-    void input(char *command);
-
-    int output(const char *str);
-    void close();
-
-    /**
-     * Print a prompt to the shell window.
-     *
-     * This function can be used by the shell back-end to print out a
-     * prompt to the shell window.
-     *
-     * \param prompt The prompt to be printed.
-     *
-     */
-    void prompt(const char *prompt);
-
-    int queue_size();
-    int can_output();
-    static int command_result(const char *str, void *ti);
-    StreamOutput *getStream() { return pstream; }
-    void setConsole();
-
-private:
-    bool parse(register char *str, struct ptentry *t);
-    Telnetd *telnet; // telnet instance we are connected to
-    StreamOutput *pstream;
-    bool isConsole;
-};
-
-#endif /* __SHELL_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/telnetd/telnetd.cpp
--- a/libs/Network/uip/telnetd/telnetd.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $
- *
- */
-
-#include "uip.h"
-#include "telnetd.h"
-#include "shell.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define ISO_nl       0x0a
-#define ISO_cr       0x0d
-
-#define STATE_NORMAL 0
-#define STATE_IAC    1
-#define STATE_WILL   2
-#define STATE_WONT   3
-#define STATE_DO     4
-#define STATE_DONT   5
-#define STATE_CLOSE  6
-
-#define TELNET_IAC   255
-#define TELNET_WILL  251
-#define TELNET_WONT  252
-#define TELNET_DO    253
-#define TELNET_DONT  254
-
-#define TELNET_LINEMODE 0x22
-#define TELNET_GA       0x03
-#define TELNET_X_PROMPT 0x55
-
-//#define DEBUG_PRINTF(...)
-#define DEBUG_PRINTF printf
-
-static char *alloc_line(int size)
-{
-    return (char *)malloc(size);
-}
-
-static void dealloc_line(char *line)
-{
-    free(line);
-}
-
-void Telnetd::close()
-{
-    state = STATE_CLOSE;
-}
-
-int Telnetd::sendline(char *line)
-{
-    int i;
-    for (i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-        if (lines[i] == NULL) {
-            lines[i] = line;
-            return i;
-        }
-    }
-    if (i == TELNETD_CONF_NUMLINES) {
-        dealloc_line(line);
-    }
-    return TELNETD_CONF_NUMLINES;
-}
-
-void Telnetd::output_prompt(const char *str)
-{
-    if(prompt) output(str);
-}
-
-int Telnetd::output(const char *str)
-{
-    if(state == STATE_CLOSE) return -1;
-
-    unsigned chunk = 256; // small chunk size so we don't allocate huge blocks, and must be less than mss
-    unsigned len = strlen(str);
-    char *line;
-    if (len < chunk) {
-        // can be sent in one tcp buffer
-        line = alloc_line(len + 1);
-        if (line != NULL) {
-            strcpy(line, str);
-            return sendline(line);
-        }else{
-            // out of memory treat like full
-            return TELNETD_CONF_NUMLINES;
-        }
-    } else {
-        // need to split line over multiple send lines
-        int size = chunk; // size to copy
-        int off = 0;
-        int n= 0;
-        while (len >= chunk) {
-            line = alloc_line(chunk + 1);
-            if (line != NULL) {
-                memcpy(line, str + off, size);
-                line[size] = 0;
-                n= sendline(line);
-                len -= size;
-                off += size;
-            }else{
-                // out of memory treat like full
-                return TELNETD_CONF_NUMLINES;
-            }
-        }
-        if (len > 0) {
-            // send rest
-            line = alloc_line(len + 1);
-            if (line != NULL) {
-                strcpy(line, str + off);
-                n= sendline(line);
-            }else{
-                // out of memory treat like full
-                return TELNETD_CONF_NUMLINES;
-            }
-        }
-        return n;
-    }
-}
-
-// check if we can queue or if queue is full
-int Telnetd::can_output()
-{
-    if(state == STATE_CLOSE) return -1;
-
-    int i;
-    int cnt = 0;
-    for (i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-        if (lines[i] == NULL) cnt++;
-    }
-    return cnt < 4 ? 0 : 1;
-}
-
-void Telnetd::acked(void)
-{
-    while (numsent > 0) {
-        dealloc_line(lines[0]);
-        for (int i = 1; i < TELNETD_CONF_NUMLINES; ++i) {
-            lines[i - 1] = lines[i];
-        }
-        lines[TELNETD_CONF_NUMLINES - 1] = NULL;
-        --numsent;
-    }
-}
-
-void Telnetd::senddata(void)
-{
-    // NOTE this sends as many lines as it can fit in one tcp frame
-    // we need to keep the lines under the size of the tcp frame
-    char *bufptr, *lineptr;
-    int buflen, linelen;
-
-    bufptr = (char *)uip_appdata;
-    buflen = 0;
-    for (numsent = 0; numsent < TELNETD_CONF_NUMLINES && lines[numsent] != NULL ; ++numsent) {
-        lineptr = lines[numsent];
-        linelen = strlen(lineptr);
-        if (buflen + linelen < uip_mss()) {
-            memcpy(bufptr, lineptr, linelen);
-            bufptr += linelen;
-            buflen += linelen;
-        } else {
-            break;
-        }
-    }
-    uip_send(uip_appdata, buflen);
-}
-
-void Telnetd::get_char(u8_t c)
-{
-    if (c == ISO_cr) {
-        return;
-    }
-
-    buf[(int)bufptr] = c;
-    if (buf[(int)bufptr] == ISO_nl || bufptr == sizeof(buf) - 1) {
-        if (bufptr > 0) {
-            buf[(int)bufptr] = 0;
-        }
-        shell->input(buf);
-        bufptr = 0;
-
-    } else {
-        ++bufptr;
-    }
-}
-
-// static void sendopt(u8_t option, u8_t value)
-// {
-//     char *line;
-//     line = alloc_line(4);
-//     if (line != NULL) {
-//         line[0] = TELNET_IAC;
-//         line[1] = option;
-//         line[2] = value;
-//         line[3] = 0;
-//         sendline(line);
-//     }
-// }
-
-void Telnetd::newdata(void)
-{
-    u16_t len;
-    u8_t c;
-    char *dataptr;
-
-    len = uip_datalen();
-    dataptr = (char *)uip_appdata;
-
-    while (len > 0 && bufptr < sizeof(buf)) {
-        c = *dataptr;
-        ++dataptr;
-        --len;
-        switch (state) {
-            case STATE_IAC:
-                if (c == TELNET_IAC) {
-                    get_char(c);
-                    state = STATE_NORMAL;
-                } else {
-                    switch (c) {
-                        case TELNET_WILL:
-                            state = STATE_WILL;
-                            break;
-                        case TELNET_WONT:
-                            state = STATE_WONT;
-                            break;
-                        case TELNET_DO:
-                            state = STATE_DO;
-                            break;
-                        case TELNET_DONT:
-                            state = STATE_DONT;
-                            break;
-                        default:
-                            state = STATE_NORMAL;
-                            break;
-                    }
-                }
-                break;
-            case STATE_WILL:
-                if (c == TELNET_LINEMODE) {
-                    //sendopt(TELNET_DO, c);
-                }
-                state = STATE_NORMAL;
-                break;
-
-            case STATE_WONT:
-                /* Reply with a DONT */
-                //sendopt(TELNET_DONT, c);
-                state = STATE_NORMAL;
-                break;
-            case STATE_DO:
-               if (c == TELNET_X_PROMPT) {
-                    prompt= true;
-                }else if (c == TELNET_GA) {
-                    // enable prompt if telnet client running
-                    prompt= true;
-                    shell->setConsole(); // tell shell we are a console, as this is sent be telnet clients
-                }else{
-                     /* Reply with a WONT */
-                    //sendopt(TELNET_WONT, c);
-                }
-                state = STATE_NORMAL;
-                break;
-            case STATE_DONT:
-                if (c == TELNET_X_PROMPT) {
-                    prompt= false;
-                }else{
-                    /* Reply with a WONT */
-                    //sendopt(TELNET_WONT, c);
-                }
-                state = STATE_NORMAL;
-                break;
-            case STATE_NORMAL:
-                if (c == TELNET_IAC) {
-                    state = STATE_IAC;
-                } else {
-                    get_char(c);
-                }
-                break;
-        }
-    }
-
-    // if the command queue is getting too big we stop TCP
-    if(shell->queue_size() > 20) {
-        DEBUG_PRINTF("Telnet: stopped: %d\n", shell->queue_size());
-        uip_stop();
-    }
-}
-
-void Telnetd::poll()
-{
-    if(first_time) {
-        first_time= false;
-        shell->start();
-        senddata();
-    }
-}
-
-Telnetd::Telnetd()
-{
-    DEBUG_PRINTF("Telnetd: ctor %p\n", this);
-    for (int i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-        lines[i] = NULL;
-    }
-
-    first_time= true;
-    bufptr = 0;
-    state = STATE_NORMAL;
-    prompt= false;
-    shell= new Shell(this);
-}
-
-Telnetd::~Telnetd()
-{
-    DEBUG_PRINTF("Telnetd: dtor %p\n", this);
-    for (int i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-        if (lines[i] != NULL) dealloc_line(lines[i]);
-    }
-    delete shell;
-}
-
-// static
-void Telnetd::appcall(void)
-{
-    Telnetd *instance= reinterpret_cast<Telnetd *>(uip_conn->appstate);
-
-    if (uip_connected()) {
-        // create a new telnet class instance
-        instance= new Telnetd;
-        DEBUG_PRINTF("Telnetd new instance: %p\n", instance);
-        uip_conn->appstate= instance; // and store it in the appstate of the connection
-        instance->rport= uip_conn->rport;
-    }
-
-    if (uip_closed() || uip_aborted() || uip_timedout()) {
-        DEBUG_PRINTF("Telnetd: closed: %p\n", instance);
-        if(instance != NULL) {
-            delete instance;
-            uip_conn->appstate= NULL;
-        }
-        return;
-    }
-
-    // sanity check
-    if(instance == NULL || instance->rport != uip_conn->rport) {
-        DEBUG_PRINTF("Telnetd: ERROR Null instance or rport is wrong: %p - %u, %d\n", instance, HTONS(uip_conn->rport), uip_flags);
-        uip_abort();
-        return;
-    }
-
-    if (instance->state == STATE_CLOSE) {
-        uip_close();
-    }
-
-
-    if (uip_acked()) {
-        instance->acked();
-    }
-
-    if (uip_newdata()) {
-        instance->newdata();
-    }
-
-    if (uip_rexmit() || uip_newdata() || uip_acked() || uip_connected() || uip_poll()) {
-        instance->senddata();
-    }
-
-    if(uip_poll() && uip_stopped(uip_conn) && instance->shell->queue_size() < 5) {
-        DEBUG_PRINTF("restarted %d - %p\n", instance->shell->queue_size(), instance);
-        uip_restart();
-    }
-
-    if(uip_poll()) {
-        instance->poll();
-    }
-}
-
-// static
-void Telnetd::init(void)
-{
-    uip_listen(HTONS(23));
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/telnetd/telnetd.h
--- a/libs/Network/uip/telnetd/telnetd.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the following
- *    disclaimer in the documentation and/or other materials provided
- *    with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $
- *
- */
-#ifndef __TELNETD_H__
-#define __TELNETD_H__
-
-#include "shell.h"
-#include "stdint.h"
-
-class Shell;
-
-class Telnetd
-{
-public:
-    Telnetd();
-    ~Telnetd();
-
-    static void init(void);
-    static void appcall(void);
-
-    void output_prompt(const char *str);
-    int output(const char *str);
-    int can_output();
-    void close();
-
-private:
-    static const int TELNETD_CONF_MAXCOMMANDLENGTH= 132;
-    static const int TELNETD_CONF_NUMLINES= 32;
-
-    Shell *shell;
-
-    // FIXME this needs to be a FIFO
-    char *lines[TELNETD_CONF_NUMLINES];
-    char buf[TELNETD_CONF_MAXCOMMANDLENGTH];
-    char bufptr;
-    uint8_t numsent;
-    uint8_t state;
-    uint16_t rport;
-
-    bool prompt;
-
-    bool first_time;
-
-    int sendline(char *line);
-    void acked(void);
-    void senddata(void);
-    void get_char(uint8_t c);
-    void newdata(void);
-    void poll(void);
-
-};
-
-#endif /* __TELNETD_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip-conf.h
--- a/libs/Network/uip/uip-conf.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/**
- * \addtogroup uipopt
- * @{
- */
-
-/**
- * \name Project-specific configuration options
- * @{
- *
- * uIP has a number of configuration options that can be overridden
- * for each project. These are kept in a project-specific uip-conf.h
- * file and all configuration names have the prefix UIP_CONF.
- */
-
-/*
- * Copyright (c) 2006, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
- */
-
-/**
- * \file
- *         An example uIP configuration file
- * \author
- *         Adam Dunkels <adam@sics.se>
- */
-
-#ifndef __UIP_CONF_H__
-#define __UIP_CONF_H__
-
-#include <inttypes.h>
-
-/**
- * 8 bit datatype
- *
- * This typedef defines the 8-bit type used throughout uIP.
- *
- * \hideinitializer
- */
-typedef uint8_t u8_t;
-
-/**
- * 16 bit datatype
- *
- * This typedef defines the 16-bit type used throughout uIP.
- *
- * \hideinitializer
- */
-typedef uint16_t u16_t;
-
-/**
- * Statistics datatype
- *
- * This typedef defines the dataype used for keeping statistics in
- * uIP.
- *
- * \hideinitializer
- */
-typedef unsigned short uip_stats_t;
-
-/**
- * Maximum number of TCP connections.
- *
- * \hideinitializer
- */
-#define UIP_CONF_MAX_CONNECTIONS 6
-
-/**
- * Maximum number of listening TCP ports.
- *
- * \hideinitializer
- */
-#define UIP_CONF_MAX_LISTENPORTS 6
-
-/**
- * uIP buffer size.
- *
- * \hideinitializer
- */
-#define UIP_CONF_BUFFER_SIZE     400
-
-#define UIP_CONF_BROADCAST 1
-
-/**
- * CPU byte order.
- *
- * \hideinitializer
- */
-#define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
-
-/**
- * Logging on or off
- *
- * \hideinitializer
- */
-#define UIP_CONF_LOGGING         1
-
-/**
- * UDP support on or off
- *
- * \hideinitializer
- */
-#define UIP_CONF_UDP             1
-#define UIP_CONF_UDP_CONNS 4
-/**
- * UDP checksums on or off
- *
- * \hideinitializer
- */
-#define UIP_CONF_UDP_CHECKSUMS   0
-
-/**
- * uIP statistics on or off
- *
- * \hideinitializer
- */
-#define UIP_CONF_STATISTICS      0
-
-#ifdef __cplusplus
-extern "C" void app_select_appcall(void);
-#else
-extern void app_select_appcall(void);
-#endif
-
-#define UIP_APPCALL app_select_appcall
-typedef void* uip_tcp_appstate_t;
-
-/* Here we include the header file for the application(s) we use in
-   our project. */
-/*#include "smtp.h"*/
-//#include "hello-world.h"
-// #include "telnetd.h"
-// #include "webserver.h"
-#include "dhcpc.h"
-/*#include "resolv.h"*/
-/*#include "webclient.h"*/
-
-#endif /* __UIP_CONF_H__ */
-
-/** @} */
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/clock.h
--- a/libs/Network/uip/uip/clock.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/**
- * \defgroup clock Clock interface
- *
- * The clock interface is the interface between the \ref timer "timer library"
- * and the platform specific clock functionality. The clock
- * interface must be implemented for each platform that uses the \ref
- * timer "timer library".
- *
- * The clock interface does only one this: it measures time. The clock
- * interface provides a macro, CLOCK_SECOND, which corresponds to one
- * second of system time.
- *
- * \sa \ref timer "Timer library"
- *
- * @{
- */
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $
- */
-#ifndef __CLOCK_H__
-#define __CLOCK_H__
-
-#include "clock-arch.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Initialize the clock library.
- *
- * This function initializes the clock library and should be called
- * from the main() function of the system.
- *
- */
-void clock_init(void);
-
-/**
- * Get the current clock time.
- *
- * This function returns the current system clock time.
- *
- * \return The current clock time, measured in system ticks.
- */
-clock_time_t clock_time(void);
-
-#ifdef __cplusplus
-}
-#endif
-/**
- * A second, measured in system clock time.
- *
- * \hideinitializer
- */
-#ifdef CLOCK_CONF_SECOND
-#define CLOCK_SECOND CLOCK_CONF_SECOND
-#else
-#define CLOCK_SECOND (clock_time_t)32
-#endif
-
-#endif /* __CLOCK_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/lc-addrlabels.h
--- a/libs/Network/uip/uip/lc-addrlabels.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \addtogroup lc
- * @{
- */
-
-/**
- * \file
- * Implementation of local continuations based on the "Labels as
- * values" feature of gcc
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- * This implementation of local continuations is based on a special
- * feature of the GCC C compiler called "labels as values". This
- * feature allows assigning pointers with the address of the code
- * corresponding to a particular C label.
- *
- * For more information, see the GCC documentation:
- * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
- *
- * Thanks to dividuum for finding the nice local scope label
- * implementation.
- */
-
-#ifndef __LC_ADDRLABELS_H__
-#define __LC_ADDRLABELS_H__
-
-/** \hideinitializer */
-typedef void * lc_t;
-
-#define LC_INIT(s) s = NULL
-
-
-#define LC_RESUME(s)                            \
-  do {                                          \
-    if(s != NULL) {                             \
-      goto *s;                                  \
-    }                                           \
-  } while(0)
-
-#define LC_SET(s)                               \
-  do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
-
-#define LC_END(s)
-
-#endif /* __LC_ADDRLABELS_H__ */
-
-/**  @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/lc-switch.h
--- a/libs/Network/uip/uip/lc-switch.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \addtogroup lc
- * @{
- */
-
-/**
- * \file
- * Implementation of local continuations based on switch() statment
- * \author Adam Dunkels <adam@sics.se>
- *
- * This implementation of local continuations uses the C switch()
- * statement to resume execution of a function somewhere inside the
- * function's body. The implementation is based on the fact that
- * switch() statements are able to jump directly into the bodies of
- * control structures such as if() or while() statmenets.
- *
- * This implementation borrows heavily from Simon Tatham's coroutines
- * implementation in C:
- * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
- */
-
-#ifndef __LC_SWITCH_H__
-#define __LC_SWTICH_H__
-
-/* WARNING! lc implementation using switch() does not work if an
-   LC_SET() is done within another switch() statement! */
-
-/** \hideinitializer */
-typedef unsigned short lc_t;
-
-#define LC_INIT(s) s = 0;
-
-#define LC_RESUME(s) switch(s) { case 0:
-
-#define LC_SET(s) s = __LINE__; case __LINE__:
-
-#define LC_END(s) }
-
-#endif /* __LC_SWITCH_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/lc.h
--- a/libs/Network/uip/uip/lc.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \addtogroup pt
- * @{
- */
-
-/**
- * \defgroup lc Local continuations
- * @{
- *
- * Local continuations form the basis for implementing protothreads. A
- * local continuation can be <i>set</i> in a specific function to
- * capture the state of the function. After a local continuation has
- * been set can be <i>resumed</i> in order to restore the state of the
- * function at the point where the local continuation was set.
- *
- *
- */
-
-/**
- * \file lc.h
- * Local continuations
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- */
-
-#ifdef DOXYGEN
-/**
- * Initialize a local continuation.
- *
- * This operation initializes the local continuation, thereby
- * unsetting any previously set continuation state.
- *
- * \hideinitializer
- */
-#define LC_INIT(lc)
-
-/**
- * Set a local continuation.
- *
- * The set operation saves the state of the function at the point
- * where the operation is executed. As far as the set operation is
- * concerned, the state of the function does <b>not</b> include the
- * call-stack or local (automatic) variables, but only the program
- * counter and such CPU registers that needs to be saved.
- *
- * \hideinitializer
- */
-#define LC_SET(lc)
-
-/**
- * Resume a local continuation.
- *
- * The resume operation resumes a previously set local continuation, thus
- * restoring the state in which the function was when the local
- * continuation was set. If the local continuation has not been
- * previously set, the resume operation does nothing.
- *
- * \hideinitializer
- */
-#define LC_RESUME(lc)
-
-/**
- * Mark the end of local continuation usage.
- *
- * The end operation signifies that local continuations should not be
- * used any more in the function. This operation is not needed for
- * most implementations of local continuation, but is required by a
- * few implementations.
- *
- * \hideinitializer
- */
-#define LC_END(lc)
-
-/**
- * \var typedef lc_t;
- *
- * The local continuation type.
- *
- * \hideinitializer
- */
-#endif /* DOXYGEN */
-
-#ifndef __LC_H__
-#define __LC_H__
-
-#ifdef LC_CONF_INCLUDE
-#include LC_CONF_INCLUDE
-#else
-#include "lc-switch.h"
-#endif /* LC_CONF_INCLUDE */
-
-#endif /* __LC_H__ */
-
-/** @} */
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/psock.c
--- a/libs/Network/uip/uip/psock.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,373 +0,0 @@
-#pragma GCC diagnostic ignored "-Wpointer-sign"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "uipopt.h"
-#include "psock.h"
-#include "uip.h"
-
-#define STATE_NONE 0
-#define STATE_ACKED 1
-#define STATE_READ 2
-#define STATE_BLOCKED_NEWDATA 3
-#define STATE_BLOCKED_CLOSE 4
-#define STATE_BLOCKED_SEND 5
-#define STATE_DATA_SENT 6
-
-/*
- * Return value of the buffering functions that indicates that a
- * buffer was not filled by incoming data.
- *
- */
-#define BUF_NOT_FULL 0
-#define BUF_NOT_FOUND 0
-
-/*
- * Return value of the buffering functions that indicates that a
- * buffer was completely filled by incoming data.
- *
- */
-#define BUF_FULL 1
-
-/*
- * Return value of the buffering functions that indicates that an
- * end-marker byte was found.
- *
- */
-#define BUF_FOUND 2
-
-/*---------------------------------------------------------------------------*/
-static void
-buf_setup(struct psock_buf *buf,
-          u8_t *bufptr, u16_t bufsize)
-{
-    buf->ptr = bufptr;
-    buf->left = bufsize;
-}
-/*---------------------------------------------------------------------------*/
-static u8_t
-buf_bufdata(struct psock_buf *buf, u16_t len,
-            u8_t **dataptr, u16_t *datalen)
-{
-    if (*datalen < buf->left) {
-        memcpy(buf->ptr, *dataptr, *datalen);
-        buf->ptr += *datalen;
-        buf->left -= *datalen;
-        *dataptr += *datalen;
-        *datalen = 0;
-        return BUF_NOT_FULL;
-    } else if (*datalen == buf->left) {
-        memcpy(buf->ptr, *dataptr, *datalen);
-        buf->ptr += *datalen;
-        buf->left = 0;
-        *dataptr += *datalen;
-        *datalen = 0;
-        return BUF_FULL;
-    } else {
-        memcpy(buf->ptr, *dataptr, buf->left);
-        buf->ptr += buf->left;
-        *datalen -= buf->left;
-        *dataptr += buf->left;
-        buf->left = 0;
-        return BUF_FULL;
-    }
-}
-/*---------------------------------------------------------------------------*/
-static u8_t
-buf_bufto(register struct psock_buf *buf, u8_t endmarker,
-          register u8_t **dataptr, register u16_t *datalen)
-{
-    u8_t c;
-    while (buf->left > 0 && *datalen > 0) {
-        c = *buf->ptr = **dataptr;
-        ++*dataptr;
-        ++buf->ptr;
-        --*datalen;
-        --buf->left;
-
-        if (c == endmarker) {
-            return BUF_FOUND;
-        }
-    }
-
-    if (*datalen == 0) {
-        return BUF_NOT_FOUND;
-    }
-
-    while (*datalen > 0) {
-        c = **dataptr;
-        --*datalen;
-        ++*dataptr;
-
-        if (c == endmarker) {
-            return BUF_FOUND | BUF_FULL;
-        }
-    }
-
-    return BUF_FULL;
-}
-/*---------------------------------------------------------------------------*/
-static char
-send_data(register struct psock *s)
-{
-    if (s->state != STATE_DATA_SENT || uip_rexmit()) {
-        if (s->sendlen > uip_mss()) {
-            uip_send(s->sendptr, uip_mss());
-        } else {
-            uip_send(s->sendptr, s->sendlen);
-        }
-        s->state = STATE_DATA_SENT;
-        return 1;
-    }
-    return 0;
-}
-/*---------------------------------------------------------------------------*/
-static char
-data_acked(register struct psock *s)
-{
-    if (s->state == STATE_DATA_SENT && uip_acked()) {
-        if (s->sendlen > uip_mss()) {
-            s->sendlen -= uip_mss();
-            s->sendptr += uip_mss();
-        } else {
-            s->sendptr += s->sendlen;
-            s->sendlen = 0;
-        }
-        s->state = STATE_ACKED;
-        return 1;
-    }
-    return 0;
-}
-/*---------------------------------------------------------------------------*/
-PT_THREAD(psock_send(register struct psock *s, const char *buf,
-                     unsigned int len))
-{
-    PT_BEGIN(&s->psockpt);
-
-    /* If there is no data to send, we exit immediately. */
-    if (len == 0) {
-        PT_EXIT(&s->psockpt);
-    }
-
-    /* Save the length of and a pointer to the data that is to be
-       sent. */
-    s->sendptr = buf;
-    s->sendlen = len;
-
-    s->state = STATE_NONE;
-
-    /* We loop here until all data is sent. The s->sendlen variable is
-       updated by the data_sent() function. */
-    while (s->sendlen > 0) {
-
-        /*
-         * The condition for this PT_WAIT_UNTIL is a little tricky: the
-         * protothread will wait here until all data has been acknowledged
-         * (data_acked() returns true) and until all data has been sent
-         * (send_data() returns true). The two functions data_acked() and
-         * send_data() must be called in succession to ensure that all
-         * data is sent. Therefore the & operator is used instead of the
-         * && operator, which would cause only the data_acked() function
-         * to be called when it returns false.
-         */
-        PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
-    }
-
-    s->state = STATE_NONE;
-
-    PT_END(&s->psockpt);
-}
-/*---------------------------------------------------------------------------*/
-PT_THREAD(psock_generator_send(register struct psock *s,
-                               unsigned short (*generate)(void *), void *arg))
-{
-    PT_BEGIN(&s->psockpt);
-
-    /* Ensure that there is a generator function to call. */
-    if (generate == NULL) {
-        PT_EXIT(&s->psockpt);
-    }
-
-    /* Call the generator function to generate the data in the
-       uip_appdata buffer. */
-    s->sendlen = generate(arg);
-    s->sendptr = uip_appdata;
-
-    s->state = STATE_NONE;
-    do {
-        /* Call the generator function again if we are called to perform a
-           retransmission. */
-        if (uip_rexmit()) {
-            generate(arg);
-        }
-        /* Wait until all data is sent and acknowledged. */
-        PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
-    } while (s->sendlen > 0);
-
-    s->state = STATE_NONE;
-
-    PT_END(&s->psockpt);
-}
-/*---------------------------------------------------------------------------*/
-u16_t
-psock_datalen(struct psock *psock)
-{
-    return psock->bufsize - psock->buf.left;
-}
-/*---------------------------------------------------------------------------*/
-char
-psock_newdata(struct psock *s)
-{
-    if (s->readlen > 0) {
-        /* There is data in the uip_appdata buffer that has not yet been
-           read with the PSOCK_READ functions. */
-        return 1;
-    } else if (s->state == STATE_READ) {
-        /* All data in uip_appdata buffer already consumed. */
-        s->state = STATE_BLOCKED_NEWDATA;
-        return 0;
-    } else if (uip_newdata()) {
-        /* There is new data that has not been consumed. */
-        return 1;
-    } else {
-        /* There is no new data. */
-        return 0;
-    }
-}
-/*---------------------------------------------------------------------------*/
-PT_THREAD(psock_readto(register struct psock *psock, unsigned char c))
-{
-    PT_BEGIN(&psock->psockpt);
-
-    buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
-
-    /* XXX: Should add buf_checkmarker() before do{} loop, if
-       incoming data has been handled while waiting for a write. */
-
-    do {
-        if (psock->readlen == 0) {
-            PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
-            psock->state = STATE_READ;
-            psock->readptr = (u8_t *)uip_appdata;
-            psock->readlen = uip_datalen();
-        }
-    } while ((buf_bufto(&psock->buf, c,
-                        &psock->readptr,
-                        &psock->readlen) & BUF_FOUND) == 0);
-
-    if (psock_datalen(psock) == 0) {
-        psock->state = STATE_NONE;
-        PT_RESTART(&psock->psockpt);
-    }
-    PT_END(&psock->psockpt);
-}
-/*---------------------------------------------------------------------------*/
-PT_THREAD(psock_readbuf(register struct psock *psock))
-{
-    PT_BEGIN(&psock->psockpt);
-
-    buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
-
-    /* XXX: Should add buf_checkmarker() before do{} loop, if
-       incoming data has been handled while waiting for a write. */
-
-    do {
-        if (psock->readlen == 0) {
-            PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
-            //printf("Waited for newdata\n");
-            psock->state = STATE_READ;
-            psock->readptr = (u8_t *)uip_appdata;
-            psock->readlen = uip_datalen();
-        }
-    } while (buf_bufdata(&psock->buf, psock->bufsize,
-                         &psock->readptr,
-                         &psock->readlen) != BUF_FULL);
-
-    if (psock_datalen(psock) == 0) {
-        psock->state = STATE_NONE;
-        PT_RESTART(&psock->psockpt);
-    }
-    PT_END(&psock->psockpt);
-}
-/*---------------------------------------------------------------------------*/
-PT_THREAD(psock_readbuf_len(register struct psock *psock, uint16_t len))
-{
-    PT_BEGIN(&psock->psockpt);
-
-    // setup to read the smaller of buffer size or len
-    if(len > psock->bufsize) len= psock->bufsize;
-    buf_setup(&psock->buf, psock->bufptr, len);
-
-    /* XXX: Should add buf_checkmarker() before do{} loop, if
-    incoming data has been handled while waiting for a write. */
-
-    /* read len bytes or to end of data */
-    do {
-        if (psock->readlen == 0) {
-            PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
-            psock->state = STATE_READ;
-            psock->readptr = (uint8_t *)uip_appdata;
-            psock->readlen = uip_datalen();
-        }
-    } while (buf_bufdata(&psock->buf, psock->bufsize,
-                         &psock->readptr, &psock->readlen) != BUF_FULL);
-
-    if (psock_datalen(psock) == 0) {
-        psock->state = STATE_NONE;
-        PT_RESTART(&psock->psockpt);
-    }
-    PT_END(&psock->psockpt);
-}
-/*---------------------------------------------------------------------------*/
-void
-psock_init(register struct psock *psock, char *buffer, unsigned int buffersize)
-{
-    psock->state = STATE_NONE;
-    psock->readlen = 0;
-    psock->bufptr = buffer;
-    psock->bufsize = buffersize;
-    buf_setup(&psock->buf, buffer, buffersize);
-    PT_INIT(&psock->pt);
-    PT_INIT(&psock->psockpt);
-}
-/*---------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/psock.h
--- a/libs/Network/uip/uip/psock.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \defgroup psock Protosockets library
- * @{
- *
- * The protosocket library provides an interface to the uIP stack that is
- * similar to the traditional BSD socket interface. Unlike programs
- * written for the ordinary uIP event-driven interface, programs
- * written with the protosocket library are executed in a sequential
- * fashion and does not have to be implemented as explicit state
- * machines.
- *
- * Protosockets only work with TCP connections.
- *
- * The protosocket library uses \ref pt protothreads to provide
- * sequential control flow. This makes the protosockets lightweight in
- * terms of memory, but also means that protosockets inherits the
- * functional limitations of protothreads. Each protosocket lives only
- * within a single function. Automatic variables (stack variables) are
- * not retained across a protosocket library function call.
- *
- * \note Because the protosocket library uses protothreads, local
- * variables will not always be saved across a call to a protosocket
- * library function. It is therefore advised that local variables are
- * used with extreme care.
- *
- * The protosocket library provides functions for sending data without
- * having to deal with retransmissions and acknowledgements, as well
- * as functions for reading data without having to deal with data
- * being split across more than one TCP segment.
- *
- * Because each protosocket runs as a protothread, the protosocket has to be
- * started with a call to PSOCK_BEGIN() at the start of the function
- * in which the protosocket is used. Similarly, the protosocket protothread can
- * be terminated by a call to PSOCK_EXIT().
- *
- */
-
-/**
- * \file
- * Protosocket library header file
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- */
-
-#ifndef __PSOCK_H__
-#define __PSOCK_H__
-
-#include "uipopt.h"
-#include "pt.h"
-
- /*
- * The structure that holds the state of a buffer.
- *
- * This structure holds the state of a uIP buffer. The structure has
- * no user-visible elements, but is used through the functions
- * provided by the library.
- *
- */
-struct psock_buf {
-  u8_t *ptr;
-  unsigned short left;
-};
-
-/**
- * The representation of a protosocket.
- *
- * The protosocket structrure is an opaque structure with no user-visible
- * elements.
- */
-struct psock {
-  struct pt pt, psockpt; /* Protothreads - one that's using the psock
-			    functions, and one that runs inside the
-			    psock functions. */
-  const u8_t *sendptr;   /* Pointer to the next data to be sent. */
-  u8_t *readptr;         /* Pointer to the next data to be read. */
-
-  char *bufptr;          /* Pointer to the buffer used for buffering
-			    incoming data. */
-
-  u16_t sendlen;         /* The number of bytes left to be sent. */
-  u16_t readlen;         /* The number of bytes left to be read. */
-
-  struct psock_buf buf;  /* The structure holding the state of the
-			    input buffer. */
-  unsigned int bufsize;  /* The size of the input buffer. */
-
-  unsigned char state;   /* The state of the protosocket. */
-};
-
-void psock_init(struct psock *psock, char *buffer, unsigned int buffersize);
-/**
- * Initialize a protosocket.
- *
- * This macro initializes a protosocket and must be called before the
- * protosocket is used. The initialization also specifies the input buffer
- * for the protosocket.
- *
- * \param psock (struct psock *) A pointer to the protosocket to be
- * initialized
- *
- * \param buffer (char *) A pointer to the input buffer for the
- * protosocket.
- *
- * \param buffersize (unsigned int) The size of the input buffer.
- *
- * \hideinitializer
- */
-#define PSOCK_INIT(psock, buffer, buffersize) \
-  psock_init(psock, buffer, buffersize)
-
-/**
- * Start the protosocket protothread in a function.
- *
- * This macro starts the protothread associated with the protosocket and
- * must come before other protosocket calls in the function it is used.
- *
- * \param psock (struct psock *) A pointer to the protosocket to be
- * started.
- *
- * \hideinitializer
- */
-#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt))
-
-PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len));
-/**
- * Send data.
- *
- * This macro sends data over a protosocket. The protosocket protothread blocks
- * until all data has been sent and is known to have been received by
- * the remote end of the TCP connection.
- *
- * \param psock (struct psock *) A pointer to the protosocket over which
- * data is to be sent.
- *
- * \param data (char *) A pointer to the data that is to be sent.
- *
- * \param datalen (unsigned int) The length of the data that is to be
- * sent.
- *
- * \hideinitializer
- */
-#define PSOCK_SEND(psock, data, datalen)		\
-    PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen))
-
-/**
- * \brief      Send a null-terminated string.
- * \param psock Pointer to the protosocket.
- * \param str  The string to be sent.
- *
- *             This function sends a null-terminated string over the
- *             protosocket.
- *
- * \hideinitializer
- */
-#define PSOCK_SEND_STR(psock, str)      		\
-    PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str)))
-
-PT_THREAD(psock_generator_send(struct psock *psock,
-				unsigned short (*f)(void *), void *arg));
-
-/**
- * \brief      Generate data with a function and send it
- * \param psock Pointer to the protosocket.
- * \param generator Pointer to the generator function
- * \param arg   Argument to the generator function
- *
- *             This function generates data and sends it over the
- *             protosocket. This can be used to dynamically generate
- *             data for a transmission, instead of generating the data
- *             in a buffer beforehand. This function reduces the need for
- *             buffer memory. The generator function is implemented by
- *             the application, and a pointer to the function is given
- *             as an argument with the call to PSOCK_GENERATOR_SEND().
- *
- *             The generator function should place the generated data
- *             directly in the uip_appdata buffer, and return the
- *             length of the generated data. The generator function is
- *             called by the protosocket layer when the data first is
- *             sent, and once for every retransmission that is needed.
- *
- * \hideinitializer
- */
-#define PSOCK_GENERATOR_SEND(psock, generator, arg)     \
-    PT_WAIT_THREAD(&((psock)->pt),					\
-		   psock_generator_send(psock, generator, arg))
-
-
-/**
- * Close a protosocket.
- *
- * This macro closes a protosocket and can only be called from within the
- * protothread in which the protosocket lives.
- *
- * \param psock (struct psock *) A pointer to the protosocket that is to
- * be closed.
- *
- * \hideinitializer
- */
-#define PSOCK_CLOSE(psock) uip_close()
-
-PT_THREAD(psock_readbuf(struct psock *psock));
-/**
- * Read data until the buffer is full.
- *
- * This macro will block waiting for data and read the data into the
- * input buffer specified with the call to PSOCK_INIT(). Data is read
- * until the buffer is full..
- *
- * \param psock (struct psock *) A pointer to the protosocket from which
- * data should be read.
- *
- * \hideinitializer
- */
-#define PSOCK_READBUF(psock)        \
-  PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock))
-
-PT_THREAD(psock_readbuf_len(struct psock *psock,  uint16_t len));
-
-/**
- * Read n bytes of data where n is the smaller of the buffer size or len
- *
- * This macro will block waiting for data and read the data into the
- * input buffer specified with the call to PSOCK_INIT(). Data is read
- * until either len bytes are read or size of the buffer, note len should
- * be smaller or equel to the buffer size
- *
- * \param psock (struct psock *) A pointer to the protosocket from which
- * data should be read.
- *
- * \param len (int) The number of bytes to be read.
- * \hideinitializer
- */
-#define PSOCK_READBUF_LEN(psock, len)                        \
-PT_WAIT_THREAD(&((psock)->pt), psock_readbuf_len(psock, len))
-
-
-PT_THREAD(psock_readto(struct psock *psock, unsigned char c));
-/**
- * Read data up to a specified character.
- *
- * This macro will block waiting for data and read the data into the
- * input buffer specified with the call to PSOCK_INIT(). Data is only
- * read until the specifieed character appears in the data stream.
- *
- * \param psock (struct psock *) A pointer to the protosocket from which
- * data should be read.
- *
- * \param c (char) The character at which to stop reading.
- *
- * \hideinitializer
- */
-#define PSOCK_READTO(psock, c)				\
-  PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c))
-
-/**
- * The length of the data that was previously read.
- *
- * This macro returns the length of the data that was previously read
- * using PSOCK_READTO() or PSOCK_READ().
- *
- * \param psock (struct psock *) A pointer to the protosocket holding the data.
- *
- * \hideinitializer
- */
-#define PSOCK_DATALEN(psock) psock_datalen(psock)
-
-u16_t psock_datalen(struct psock *psock);
-
-/**
- * Exit the protosocket's protothread.
- *
- * This macro terminates the protothread of the protosocket and should
- * almost always be used in conjunction with PSOCK_CLOSE().
- *
- * \sa PSOCK_CLOSE_EXIT()
- *
- * \param psock (struct psock *) A pointer to the protosocket.
- *
- * \hideinitializer
- */
-#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt))
-
-/**
- * Close a protosocket and exit the protosocket's protothread.
- *
- * This macro closes a protosocket and exits the protosocket's protothread.
- *
- * \param psock (struct psock *) A pointer to the protosocket.
- *
- * \hideinitializer
- */
-#define PSOCK_CLOSE_EXIT(psock)		\
-  do {						\
-    PSOCK_CLOSE(psock);			\
-    PSOCK_EXIT(psock);			\
-  } while(0)
-
-/**
- * Declare the end of a protosocket's protothread.
- *
- * This macro is used for declaring that the protosocket's protothread
- * ends. It must always be used together with a matching PSOCK_BEGIN()
- * macro.
- *
- * \param psock (struct psock *) A pointer to the protosocket.
- *
- * \hideinitializer
- */
-#define PSOCK_END(psock) PT_END(&((psock)->pt))
-
-char psock_newdata(struct psock *s);
-
-/**
- * Check if new data has arrived on a protosocket.
- *
- * This macro is used in conjunction with the PSOCK_WAIT_UNTIL()
- * macro to check if data has arrived on a protosocket.
- *
- * \param psock (struct psock *) A pointer to the protosocket.
- *
- * \hideinitializer
- */
-#define PSOCK_NEWDATA(psock) psock_newdata(psock)
-
-/**
- * Wait until a condition is true.
- *
- * This macro blocks the protothread until the specified condition is
- * true. The macro PSOCK_NEWDATA() can be used to check if new data
- * arrives when the protosocket is waiting.
- *
- * Typically, this macro is used as follows:
- *
- \code
- PT_THREAD(thread(struct psock *s, struct timer *t))
- {
-   PSOCK_BEGIN(s);
-
-   PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t));
-
-   if(PSOCK_NEWDATA(s)) {
-     PSOCK_READTO(s, '\n');
-   } else {
-     handle_timed_out(s);
-   }
-
-   PSOCK_END(s);
- }
- \endcode
- *
- * \param psock (struct psock *) A pointer to the protosocket.
- * \param condition The condition to wait for.
- *
- * \hideinitializer
- */
-#define PSOCK_WAIT_UNTIL(psock, condition)    \
-  PT_WAIT_UNTIL(&((psock)->pt), (condition));
-
-#define PSOCK_WAIT_THREAD(psock, condition)   \
-  PT_WAIT_THREAD(&((psock)->pt), (condition))
-
-
-/**
- * return a pointer and length of whatever is left in the uip_appdata buffer
- * after previous use of PSOCK_READTO() and mark the internal buffer as fully read
- */
-#define PSOCK_GET_LENGTH_OF_REST_OF_BUFFER(psock) (psock)->readlen
-#define PSOCK_GET_START_OF_REST_OF_BUFFER(psock) (psock)->readptr
-#define PSOCK_MARK_BUFFER_READ(psock) do { (psock)->readlen= 0; (psock)->state = 0; } while(0)
-
-#endif /* __PSOCK_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/pt.h
--- a/libs/Network/uip/uip/pt.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-/*
- * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \addtogroup pt
- * @{
- */
-
-/**
- * \file
- * Protothreads implementation.
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- */
-
-#ifndef __PT_H__
-#define __PT_H__
-
-#include "lc.h"
-
-struct pt {
-  lc_t lc;
-};
-
-#define PT_WAITING 0
-#define PT_EXITED  1
-#define PT_ENDED   2
-#define PT_YIELDED 3
-
-/**
- * \name Initialization
- * @{
- */
-
-/**
- * Initialize a protothread.
- *
- * Initializes a protothread. Initialization must be done prior to
- * starting to execute the protothread.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \sa PT_SPAWN()
- *
- * \hideinitializer
- */
-#define PT_INIT(pt)   LC_INIT((pt)->lc)
-
-/** @} */
-
-/**
- * \name Declaration and definition
- * @{
- */
-
-/**
- * Declaration of a protothread.
- *
- * This macro is used to declare a protothread. All protothreads must
- * be declared with this macro.
- *
- * \param name_args The name and arguments of the C function
- * implementing the protothread.
- *
- * \hideinitializer
- */
-#define PT_THREAD(name_args) char name_args
-
-/**
- * Declare the start of a protothread inside the C function
- * implementing the protothread.
- *
- * This macro is used to declare the starting point of a
- * protothread. It should be placed at the start of the function in
- * which the protothread runs. All C statements above the PT_BEGIN()
- * invokation will be executed each time the protothread is scheduled.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \hideinitializer
- */
-#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)
-
-/**
- * Declare the end of a protothread.
- *
- * This macro is used for declaring that a protothread ends. It must
- * always be used together with a matching PT_BEGIN() macro.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \hideinitializer
- */
-#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
-                   PT_INIT(pt); return PT_ENDED; }
-
-/** @} */
-
-/**
- * \name Blocked wait
- * @{
- */
-
-/**
- * Block and wait until condition is true.
- *
- * This macro blocks the protothread until the specified condition is
- * true.
- *
- * \param pt A pointer to the protothread control structure.
- * \param condition The condition.
- *
- * \hideinitializer
- */
-#define PT_WAIT_UNTIL(pt, condition)	        \
-  do {						\
-    LC_SET((pt)->lc);				\
-    if(!(condition)) {				\
-      return PT_WAITING;			\
-    }						\
-  } while(0)
-
-/**
- * Block and wait while condition is true.
- *
- * This function blocks and waits while condition is true. See
- * PT_WAIT_UNTIL().
- *
- * \param pt A pointer to the protothread control structure.
- * \param cond The condition.
- *
- * \hideinitializer
- */
-#define PT_WAIT_WHILE(pt, cond)  PT_WAIT_UNTIL((pt), !(cond))
-
-/** @} */
-
-/**
- * \name Hierarchical protothreads
- * @{
- */
-
-/**
- * Block and wait until a child protothread completes.
- *
- * This macro schedules a child protothread. The current protothread
- * will block until the child protothread completes.
- *
- * \note The child protothread must be manually initialized with the
- * PT_INIT() function before this function is used.
- *
- * \param pt A pointer to the protothread control structure.
- * \param thread The child protothread with arguments
- *
- * \sa PT_SPAWN()
- *
- * \hideinitializer
- */
-#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread))
-
-/**
- * Spawn a child protothread and wait until it exits.
- *
- * This macro spawns a child protothread and waits until it exits. The
- * macro can only be used within a protothread.
- *
- * \param pt A pointer to the protothread control structure.
- * \param child A pointer to the child protothread's control structure.
- * \param thread The child protothread with arguments
- *
- * \hideinitializer
- */
-#define PT_SPAWN(pt, child, thread)		\
-  do {						\
-    PT_INIT((child));				\
-    PT_WAIT_THREAD((pt), (thread));		\
-  } while(0)
-
-/** @} */
-
-/**
- * \name Exiting and restarting
- * @{
- */
-
-/**
- * Restart the protothread.
- *
- * This macro will block and cause the running protothread to restart
- * its execution at the place of the PT_BEGIN() call.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \hideinitializer
- */
-#define PT_RESTART(pt)				\
-  do {						\
-    PT_INIT(pt);				\
-    return PT_WAITING;			\
-  } while(0)
-
-/**
- * Exit the protothread.
- *
- * This macro causes the protothread to exit. If the protothread was
- * spawned by another protothread, the parent protothread will become
- * unblocked and can continue to run.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \hideinitializer
- */
-#define PT_EXIT(pt)				\
-  do {						\
-    PT_INIT(pt);				\
-    return PT_EXITED;			\
-  } while(0)
-
-/** @} */
-
-/**
- * \name Calling a protothread
- * @{
- */
-
-/**
- * Schedule a protothread.
- *
- * This function shedules a protothread. The return value of the
- * function is non-zero if the protothread is running or zero if the
- * protothread has exited.
- *
- * \param f The call to the C function implementing the protothread to
- * be scheduled
- *
- * \hideinitializer
- */
-#define PT_SCHEDULE(f) ((f) == PT_WAITING)
-
-/** @} */
-
-/**
- * \name Yielding from a protothread
- * @{
- */
-
-/**
- * Yield from the current protothread.
- *
- * This function will yield the protothread, thereby allowing other
- * processing to take place in the system.
- *
- * \param pt A pointer to the protothread control structure.
- *
- * \hideinitializer
- */
-#define PT_YIELD(pt)				\
-  do {						\
-    PT_YIELD_FLAG = 0;				\
-    LC_SET((pt)->lc);				\
-    if(PT_YIELD_FLAG == 0) {			\
-      return PT_YIELDED;			\
-    }						\
-  } while(0)
-
-/**
- * \brief      Yield from the protothread until a condition occurs.
- * \param pt   A pointer to the protothread control structure.
- * \param cond The condition.
- *
- *             This function will yield the protothread, until the
- *             specified condition evaluates to true.
- *
- *
- * \hideinitializer
- */
-#define PT_YIELD_UNTIL(pt, cond)		\
-  do {						\
-    PT_YIELD_FLAG = 0;				\
-    LC_SET((pt)->lc);				\
-    if((PT_YIELD_FLAG == 0) || !(cond)) {	\
-      return PT_YIELDED;			\
-    }						\
-  } while(0)
-
-/** @} */
-
-#endif /* __PT_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/timer.c
--- a/libs/Network/uip/uip/timer.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/**
- * \addtogroup timer
- * @{
- */
-
-/**
- * \file
- * Timer library implementation.
- * \author
- * Adam Dunkels <adam@sics.se>
- */
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-#include "clock.h"
-#include "timer.h"
-
-/*---------------------------------------------------------------------------*/
-/**
- * Set a timer.
- *
- * This function is used to set a timer for a time sometime in the
- * future. The function timer_expired() will evaluate to true after
- * the timer has expired.
- *
- * \param t A pointer to the timer
- * \param interval The interval before the timer expires.
- *
- */
-void
-timer_set(struct timer *t, clock_time_t interval)
-{
-  t->interval = interval;
-  t->start = clock_time();
-}
-/*---------------------------------------------------------------------------*/
-/**
- * Reset the timer with the same interval.
- *
- * This function resets the timer with the same interval that was
- * given to the timer_set() function. The start point of the interval
- * is the exact time that the timer last expired. Therefore, this
- * function will cause the timer to be stable over time, unlike the
- * timer_rester() function.
- *
- * \param t A pointer to the timer.
- *
- * \sa timer_restart()
- */
-void
-timer_reset(struct timer *t)
-{
-  t->start += t->interval;
-}
-/*---------------------------------------------------------------------------*/
-/**
- * Restart the timer from the current point in time
- *
- * This function restarts a timer with the same interval that was
- * given to the timer_set() function. The timer will start at the
- * current time.
- *
- * \note A periodic timer will drift if this function is used to reset
- * it. For preioric timers, use the timer_reset() function instead.
- *
- * \param t A pointer to the timer.
- *
- * \sa timer_reset()
- */
-void
-timer_restart(struct timer *t)
-{
-  t->start = clock_time();
-}
-/*---------------------------------------------------------------------------*/
-/**
- * Check if a timer has expired.
- *
- * This function tests if a timer has expired and returns true or
- * false depending on its status.
- *
- * \param t A pointer to the timer
- *
- * \return Non-zero if the timer has expired, zero otherwise.
- *
- */
-int
-timer_expired(struct timer *t)
-{
-  return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval;
-}
-/*---------------------------------------------------------------------------*/
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/timer.h
--- a/libs/Network/uip/uip/timer.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/**
- * \defgroup timer Timer library
- *
- * The timer library provides functions for setting, resetting and
- * restarting timers, and for checking if a timer has expired. An
- * application must "manually" check if its timers have expired; this
- * is not done automatically.
- *
- * A timer is declared as a \c struct \c timer and all access to the
- * timer is made by a pointer to the declared timer.
- *
- * \note The timer library uses the \ref clock "Clock library" to
- * measure time. Intervals should be specified in the format used by
- * the clock library.
- *
- * @{
- */
-
-
-/**
- * \file
- * Timer library header file.
- * \author
- * Adam Dunkels <adam@sics.se>
- */
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $
- */
-#ifndef __TIMER_H__
-#define __TIMER_H__
-
-#include "clock.h"
-
-/**
- * A timer.
- *
- * This structure is used for declaring a timer. The timer must be set
- * with timer_set() before it can be used.
- *
- * \hideinitializer
- */
-struct timer {
-  clock_time_t start;
-  clock_time_t interval;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void timer_set(struct timer *t, clock_time_t interval);
-void timer_reset(struct timer *t);
-void timer_restart(struct timer *t);
-int timer_expired(struct timer *t);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TIMER_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-fw.c
--- a/libs/Network/uip/uip/uip-fw.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,537 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: uip-fw.c,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-/**
- * \addtogroup uip
- * @{
- */
-
-/**
- * \defgroup uipfw uIP packet forwarding
- * @{
- *
- */
-
-/**
- * \file
- * uIP packet forwarding.
- * \author Adam Dunkels <adam@sics.se>
- *
- * This file implements a number of simple functions which do packet
- * forwarding over multiple network interfaces with uIP.
- *
- */
-
-#include "uip.h"
-#include "uip_arch.h"
-#include "uip-fw.h"
-
-#include <string.h> /* for memcpy() */
-
-/*
- * The list of registered network interfaces.
- */
-static struct uip_fw_netif *netifs = NULL;
-
-/*
- * A pointer to the default network interface.
- */
-static struct uip_fw_netif *defaultnetif = NULL;
-
-struct tcpip_hdr {
-  /* IP header. */
-  u8_t vhl,
-    tos;
-  u16_t len,
-    ipid,
-    ipoffset;
-  u8_t ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-
-  /* TCP header. */
-  u16_t srcport,
-    destport;
-  u8_t seqno[4],
-    ackno[4],
-    tcpoffset,
-    flags,
-    wnd[2];
-  u16_t tcpchksum;
-  u8_t urgp[2];
-  u8_t optdata[4];
-};
-
-struct icmpip_hdr {
-  /* IP header. */
-  u8_t vhl,
-    tos,
-    len[2],
-    ipid[2],
-    ipoffset[2],
-    ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-  /* ICMP (echo) header. */
-  u8_t type, icode;
-  u16_t icmpchksum;
-  u16_t id, seqno;
-  u8_t payload[1];
-};
-
-/* ICMP ECHO. */
-#define ICMP_ECHO 8
-
-/* ICMP TIME-EXCEEDED. */
-#define ICMP_TE 11
-
-/*
- * Pointer to the TCP/IP headers of the packet in the uip_buf buffer.
- */
-#define BUF ((struct tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
-
-/*
- * Pointer to the ICMP/IP headers of the packet in the uip_buf buffer.
- */
-#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
-
-/*
- * Certain fields of an IP packet that are used for identifying
- * duplicate packets.
- */
-struct fwcache_entry {
-  u16_t timer;
-
-  u16_t srcipaddr[2];
-  u16_t destipaddr[2];
-  u16_t ipid;
-  u8_t proto;
-  u8_t unused;
-
-#if notdef
-  u16_t payload[2];
-#endif
-
-#if UIP_REASSEMBLY > 0
-  u16_t len, offset;
-#endif
-};
-
-/*
- * The number of packets to remember when looking for duplicates.
- */
-#ifdef UIP_CONF_FWCACHE_SIZE
-#define FWCACHE_SIZE UIP_CONF_FWCACHE_SIZE
-#else
-#define FWCACHE_SIZE 2
-#endif
-
-
-/*
- * A cache of packet header fields which are used for
- * identifying duplicate packets.
- */
-static struct fwcache_entry fwcache[FWCACHE_SIZE];
-
-/**
- * \internal
- * The time that a packet cache is active.
- */
-#define FW_TIME 20
-
-/*------------------------------------------------------------------------------*/
-/**
- * Initialize the uIP packet forwarding module.
- */
-/*------------------------------------------------------------------------------*/
-void
-uip_fw_init(void)
-{
-  struct uip_fw_netif *t;
-  defaultnetif = NULL;
-  while(netifs != NULL) {
-    t = netifs;
-    netifs = netifs->next;
-    t->next = NULL;
-  }
-}
-/*------------------------------------------------------------------------------*/
-/**
- * \internal
- * Check if an IP address is within the network defined by an IP
- * address and a netmask.
- *
- * \param ipaddr The IP address to be checked.
- * \param netipaddr The IP address of the network.
- * \param netmask The netmask of the network.
- *
- * \return Non-zero if IP address is in network, zero otherwise.
- */
-/*------------------------------------------------------------------------------*/
-static unsigned char
-ipaddr_maskcmp(u16_t *ipaddr, u16_t *netipaddr, u16_t *netmask)
-{
-  return (ipaddr[0] & netmask [0]) == (netipaddr[0] & netmask[0]) &&
-    (ipaddr[1] & netmask[1]) == (netipaddr[1] & netmask[1]);
-}
-/*------------------------------------------------------------------------------*/
-/**
- * \internal
- * Send out an ICMP TIME-EXCEEDED message.
- *
- * This function replaces the packet in the uip_buf buffer with the
- * ICMP packet.
- */
-/*------------------------------------------------------------------------------*/
-static void
-time_exceeded(void)
-{
-  u16_t tmp16;
-
-  /* We don't send out ICMP errors for ICMP messages. */
-  if(ICMPBUF->proto == UIP_PROTO_ICMP) {
-    uip_len = 0;
-    return;
-  }
-  /* Copy fields from packet header into payload of this ICMP packet. */
-  memcpy(&(ICMPBUF->payload[0]), ICMPBUF, 28);
-
-  /* Set the ICMP type and code. */
-  ICMPBUF->type = ICMP_TE;
-  ICMPBUF->icode = 0;
-
-  /* Calculate the ICMP checksum. */
-  ICMPBUF->icmpchksum = 0;
-  ICMPBUF->icmpchksum = ~uip_chksum((u16_t *)&(ICMPBUF->type), 36);
-
-  /* Set the IP destination address to be the source address of the
-     original packet. */
-  tmp16= BUF->destipaddr[0];
-  BUF->destipaddr[0] = BUF->srcipaddr[0];
-  BUF->srcipaddr[0] = tmp16;
-  tmp16 = BUF->destipaddr[1];
-  BUF->destipaddr[1] = BUF->srcipaddr[1];
-  BUF->srcipaddr[1] = tmp16;
-
-  /* Set our IP address as the source address. */
-  BUF->srcipaddr[0] = uip_hostaddr[0];
-  BUF->srcipaddr[1] = uip_hostaddr[1];
-
-  /* The size of the ICMP time exceeded packet is 36 + the size of the
-     IP header (20) = 56. */
-  uip_len = 56;
-  ICMPBUF->len[0] = 0;
-  ICMPBUF->len[1] = uip_len;
-
-  /* Fill in the other fields in the IP header. */
-  ICMPBUF->vhl = 0x45;
-  ICMPBUF->tos = 0;
-  ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0;
-  ICMPBUF->ttl  = UIP_TTL;
-  ICMPBUF->proto = UIP_PROTO_ICMP;
-
-  /* Calculate IP checksum. */
-  ICMPBUF->ipchksum = 0;
-  ICMPBUF->ipchksum = ~(uip_ipchksum());
-
-
-}
-/*------------------------------------------------------------------------------*/
-/**
- * \internal
- * Register a packet in the forwarding cache so that it won't be
- * forwarded again.
- */
-/*------------------------------------------------------------------------------*/
-static void
-fwcache_register(void)
-{
-  struct fwcache_entry *fw;
-  int i, oldest;
-
-  oldest = FW_TIME;
-  fw = NULL;
-
-  /* Find the oldest entry in the cache. */
-  for(i = 0; i < FWCACHE_SIZE; ++i) {
-    if(fwcache[i].timer == 0) {
-      fw = &fwcache[i];
-      break;
-    } else if(fwcache[i].timer <= oldest) {
-      fw = &fwcache[i];
-      oldest = fwcache[i].timer;
-    }
-  }
-
-  fw->timer = FW_TIME;
-  fw->ipid = BUF->ipid;
-  fw->srcipaddr[0] = BUF->srcipaddr[0];
-  fw->srcipaddr[1] = BUF->srcipaddr[1];
-  fw->destipaddr[0] = BUF->destipaddr[0];
-  fw->destipaddr[1] = BUF->destipaddr[1];
-  fw->proto = BUF->proto;
-#if notdef
-  fw->payload[0] = BUF->srcport;
-  fw->payload[1] = BUF->destport;
-#endif
-#if UIP_REASSEMBLY > 0
-  fw->len = BUF->len;
-  fw->offset = BUF->ipoffset;
-#endif
-}
-/*------------------------------------------------------------------------------*/
-/**
- * \internal
- * Find a network interface for the IP packet in uip_buf.
- */
-/*------------------------------------------------------------------------------*/
-static struct uip_fw_netif *
-find_netif(void)
-{
-  struct uip_fw_netif *netif;
-
-  /* Walk through every network interface to check for a match. */
-  for(netif = netifs; netif != NULL; netif = netif->next) {
-    if(ipaddr_maskcmp(BUF->destipaddr, netif->ipaddr,
-		      netif->netmask)) {
-      /* If there was a match, we break the loop. */
-      return netif;
-    }
-  }
-
-  /* If no matching netif was found, we use default netif. */
-  return defaultnetif;
-}
-/*------------------------------------------------------------------------------*/
-/**
- * Output an IP packet on the correct network interface.
- *
- * The IP packet should be present in the uip_buf buffer and its
- * length in the global uip_len variable.
- *
- * \retval UIP_FW_ZEROLEN Indicates that a zero-length packet
- * transmission was attempted and that no packet was sent.
- *
- * \retval UIP_FW_NOROUTE No suitable network interface could be found
- * for the outbound packet, and the packet was not sent.
- *
- * \return The return value from the actual network interface output
- * function is passed unmodified as a return value.
- */
-/*------------------------------------------------------------------------------*/
-u8_t
-uip_fw_output(void)
-{
-  struct uip_fw_netif *netif;
-
-  if(uip_len == 0) {
-    return UIP_FW_ZEROLEN;
-  }
-
-  fwcache_register();
-
-#if UIP_BROADCAST
-  /* Link local broadcasts go out on all interfaces. */
-  if(/*BUF->proto == UIP_PROTO_UDP &&*/
-     BUF->destipaddr[0] == 0xffff &&
-     BUF->destipaddr[1] == 0xffff) {
-    if(defaultnetif != NULL) {
-      defaultnetif->output();
-    }
-    for(netif = netifs; netif != NULL; netif = netif->next) {
-      netif->output();
-    }
-    return UIP_FW_OK;
-  }
-#endif /* UIP_BROADCAST */
-
-  netif = find_netif();
-  /*  printf("uip_fw_output: netif %p ->output %p len %d\n", netif,
-	 netif->output,
-	 uip_len);*/
-
-  if(netif == NULL) {
-    return UIP_FW_NOROUTE;
-  }
-  /* If we now have found a suitable network interface, we call its
-     output function to send out the packet. */
-  return netif->output();
-}
-/*------------------------------------------------------------------------------*/
-/**
- * Forward an IP packet in the uip_buf buffer.
- *
- *
- *
- * \return UIP_FW_FORWARDED if the packet was forwarded, UIP_FW_LOCAL if
- * the packet should be processed locally.
- */
-/*------------------------------------------------------------------------------*/
-u8_t
-uip_fw_forward(void)
-{
-  struct fwcache_entry *fw;
-
-  /* First check if the packet is destined for ourselves and return 0
-     to indicate that the packet should be processed locally. */
-  if(BUF->destipaddr[0] == uip_hostaddr[0] &&
-     BUF->destipaddr[1] == uip_hostaddr[1]) {
-    return UIP_FW_LOCAL;
-  }
-
-  /* If we use ping IP address configuration, and our IP address is
-     not yet configured, we should intercept all ICMP echo packets. */
-#if UIP_PINGADDRCONF
-  if((uip_hostaddr[0] | uip_hostaddr[1]) == 0 &&
-     BUF->proto == UIP_PROTO_ICMP &&
-     ICMPBUF->type == ICMP_ECHO) {
-    return UIP_FW_LOCAL;
-  }
-#endif /* UIP_PINGADDRCONF */
-
-  /* Check if the packet is in the forwarding cache already, and if so
-     we drop it. */
-
-  for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) {
-    if(fw->timer != 0 &&
-#if UIP_REASSEMBLY > 0
-       fw->len == BUF->len &&
-       fw->offset == BUF->ipoffset &&
-#endif
-       fw->ipid == BUF->ipid &&
-       fw->srcipaddr[0] == BUF->srcipaddr[0] &&
-       fw->srcipaddr[1] == BUF->srcipaddr[1] &&
-       fw->destipaddr[0] == BUF->destipaddr[0] &&
-       fw->destipaddr[1] == BUF->destipaddr[1] &&
-#if notdef
-       fw->payload[0] == BUF->srcport &&
-       fw->payload[1] == BUF->destport &&
-#endif
-       fw->proto == BUF->proto) {
-      /* Drop packet. */
-      return UIP_FW_FORWARDED;
-    }
-  }
-
-  /* If the TTL reaches zero we produce an ICMP time exceeded message
-     in the uip_buf buffer and forward that packet back to the sender
-     of the packet. */
-  if(BUF->ttl <= 1) {
-    /* No time exceeded for broadcasts and multicasts! */
-    if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) {
-      return UIP_FW_LOCAL;
-    }
-    time_exceeded();
-  }
-
-  /* Decrement the TTL (time-to-live) value in the IP header */
-  BUF->ttl = BUF->ttl - 1;
-
-  /* Update the IP checksum. */
-  if(BUF->ipchksum >= HTONS(0xffff - 0x0100)) {
-    BUF->ipchksum = BUF->ipchksum + HTONS(0x0100) + 1;
-  } else {
-    BUF->ipchksum = BUF->ipchksum + HTONS(0x0100);
-  }
-
-  if(uip_len > 0) {
-    uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN];
-    uip_fw_output();
-  }
-
-#if UIP_BROADCAST
-  if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) {
-    return UIP_FW_LOCAL;
-  }
-#endif /* UIP_BROADCAST */
-
-  /* Return non-zero to indicate that the packet was forwarded and that no
-     other processing should be made. */
-  return UIP_FW_FORWARDED;
-}
-/*------------------------------------------------------------------------------*/
-/**
- * Register a network interface with the forwarding module.
- *
- * \param netif A pointer to the network interface that is to be
- * registered.
- */
-/*------------------------------------------------------------------------------*/
-void
-uip_fw_register(struct uip_fw_netif *netif)
-{
-  netif->next = netifs;
-  netifs = netif;
-}
-/*------------------------------------------------------------------------------*/
-/**
- * Register a default network interface.
- *
- * All packets that don't go out on any of the other interfaces will
- * be routed to the default interface.
- *
- * \param netif A pointer to the network interface that is to be
- * registered.
- */
-/*------------------------------------------------------------------------------*/
-void
-uip_fw_default(struct uip_fw_netif *netif)
-{
-  defaultnetif = netif;
-}
-/*------------------------------------------------------------------------------*/
-/**
- * Perform periodic processing.
- */
-/*------------------------------------------------------------------------------*/
-void
-uip_fw_periodic(void)
-{
-  struct fwcache_entry *fw;
-  for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) {
-    if(fw->timer > 0) {
-      --fw->timer;
-    }
-  }
-}
-/*------------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-fw.h
--- a/libs/Network/uip/uip/uip-fw.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/**
- * \addtogroup uipfw
- * @{
- */
-
-/**
- * \file
- * uIP packet forwarding header file.
- * \author Adam Dunkels <adam@sics.se>
- */
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-#ifndef __UIP_FW_H__
-#define __UIP_FW_H__
-
-#include "uip.h"
-
-/**
- * Representation of a uIP network interface.
- */
-struct uip_fw_netif {
-  struct uip_fw_netif *next;  /**< Pointer to the next interface when
-				 linked in a list. */
-  u16_t ipaddr[2];            /**< The IP address of this interface. */
-  u16_t netmask[2];           /**< The netmask of the interface. */
-  u8_t (* output)(void);
-                              /**< A pointer to the function that
-				 sends a packet. */
-};
-
-/**
- * Intantiating macro for a uIP network interface.
- *
- * Example:
- \code
- struct uip_fw_netif slipnetif =
-   {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)};
- \endcode
- * \param ip1,ip2,ip3,ip4 The IP address of the network interface.
- *
- * \param nm1,nm2,nm3,nm4 The netmask of the network interface.
- *
- * \param outputfunc A pointer to the output function of the network interface.
- *
- * \hideinitializer
- */
-#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \
-        NULL, \
-	{HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \
-	{HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \
-        outputfunc
-
-/**
- * Set the IP address of a network interface.
- *
- * \param netif A pointer to the uip_fw_netif structure for the network interface.
- *
- * \param addr A pointer to an IP address.
- *
- * \hideinitializer
- */
-#define uip_fw_setipaddr(netif, addr) \
-        do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \
-             (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0)
-/**
- * Set the netmask of a network interface.
- *
- * \param netif A pointer to the uip_fw_netif structure for the network interface.
- *
- * \param addr A pointer to an IP address representing the netmask.
- *
- * \hideinitializer
- */
-#define uip_fw_setnetmask(netif, addr) \
-        do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \
-             (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0)
-
-void uip_fw_init(void);
-u8_t uip_fw_forward(void);
-u8_t uip_fw_output(void);
-void uip_fw_register(struct uip_fw_netif *netif);
-void uip_fw_default(struct uip_fw_netif *netif);
-void uip_fw_periodic(void);
-
-
-/**
- * A non-error message that indicates that a packet should be
- * processed locally.
- *
- * \hideinitializer
- */
-#define UIP_FW_LOCAL     0
-
-/**
- * A non-error message that indicates that something went OK.
- *
- * \hideinitializer
- */
-#define UIP_FW_OK        0
-
-/**
- * A non-error message that indicates that a packet was forwarded.
- *
- * \hideinitializer
- */
-#define UIP_FW_FORWARDED 1
-
-/**
- * A non-error message that indicates that a zero-length packet
- * transmission was attempted, and that no packet was sent.
- *
- * \hideinitializer
- */
-#define UIP_FW_ZEROLEN   2
-
-/**
- * An error message that indicates that a packet that was too large
- * for the outbound network interface was detected.
- *
- * \hideinitializer
- */
-#define UIP_FW_TOOLARGE  3
-
-/**
- * An error message that indicates that no suitable interface could be
- * found for an outbound packet.
- *
- * \hideinitializer
- */
-#define UIP_FW_NOROUTE   4
-
-/**
- * An error message that indicates that a packet that should be
- * forwarded or output was dropped.
- *
- * \hideinitializer
- */
-#define UIP_FW_DROPPED   5
-
-
-#endif /* __UIP_FW_H__ */
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-neighbor.c
--- a/libs/Network/uip/uip/uip-neighbor.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-/*
- * Copyright (c) 2006, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \file
- *         Database of link-local neighbors, used by IPv6 code and
- *         to be used by a future ARP code rewrite.
- * \author
- *         Adam Dunkels <adam@sics.se>
- */
-
-#include "uip-neighbor.h"
-
-#include "stdio.h"
-#include <string.h>
-
-#define MAX_TIME 128
-
-#ifdef UIP_NEIGHBOR_CONF_ENTRIES
-#define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES
-#else /* UIP_NEIGHBOR_CONF_ENTRIES */
-#define ENTRIES 8
-#endif /* UIP_NEIGHBOR_CONF_ENTRIES */
-
-struct neighbor_entry {
-  uip_ipaddr_t ipaddr;
-  struct uip_neighbor_addr addr;
-  u8_t time;
-};
-static struct neighbor_entry entries[ENTRIES];
-
-/*---------------------------------------------------------------------------*/
-void
-uip_neighbor_init(void)
-{
-  int i;
-
-  for(i = 0; i < ENTRIES; ++i) {
-    entries[i].time = MAX_TIME;
-  }
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_neighbor_periodic(void)
-{
-  int i;
-
-  for(i = 0; i < ENTRIES; ++i) {
-    if(entries[i].time < MAX_TIME) {
-      entries[i].time++;
-    }
-  }
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
-{
-  int i, oldest;
-  u8_t oldest_time;
-
-  printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
-	 addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3],
-	 addr->addr.addr[4], addr->addr.addr[5]);
-
-  /* Find the first unused entry or the oldest used entry. */
-  oldest_time = 0;
-  oldest = 0;
-  for(i = 0; i < ENTRIES; ++i) {
-    if(entries[i].time == MAX_TIME) {
-      oldest = i;
-      break;
-    }
-    if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) {
-      oldest = i;
-      break;
-    }
-    if(entries[i].time > oldest_time) {
-      oldest = i;
-      oldest_time = entries[i].time;
-    }
-  }
-
-  /* Use the oldest or first free entry (either pointed to by the
-     "oldest" variable). */
-  entries[oldest].time = 0;
-  uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr);
-  memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr));
-}
-/*---------------------------------------------------------------------------*/
-static struct neighbor_entry *
-find_entry(uip_ipaddr_t ipaddr)
-{
-  int i;
-
-  for(i = 0; i < ENTRIES; ++i) {
-    if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) {
-      return &entries[i];
-    }
-  }
-  return NULL;
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_neighbor_update(uip_ipaddr_t ipaddr)
-{
-  struct neighbor_entry *e;
-
-  e = find_entry(ipaddr);
-  if(e != NULL) {
-    e->time = 0;
-  }
-}
-/*---------------------------------------------------------------------------*/
-struct uip_neighbor_addr *
-uip_neighbor_lookup(uip_ipaddr_t ipaddr)
-{
-  struct neighbor_entry *e;
-
-  e = find_entry(ipaddr);
-  if(e != NULL) {
-    /*    printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
-	   e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3],
-	   e->addr.addr.addr[4], e->addr.addr.addr[5]);*/
-
-    return &e->addr;
-  }
-  return NULL;
-}
-/*---------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-neighbor.h
--- a/libs/Network/uip/uip/uip-neighbor.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2006, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-/**
- * \file
- *         Header file for database of link-local neighbors, used by
- *         IPv6 code and to be used by future ARP code.
- * \author
- *         Adam Dunkels <adam@sics.se>
- */
-
-#ifndef __UIP_NEIGHBOR_H__
-#define __UIP_NEIGHBOR_H__
-
-#include "uip.h"
-
-struct uip_neighbor_addr {
-#if UIP_NEIGHBOR_CONF_ADDRTYPE
-  UIP_NEIGHBOR_CONF_ADDRTYPE addr;
-#else
-  struct uip_eth_addr addr;
-#endif
-};
-
-void uip_neighbor_init(void);
-void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr);
-void uip_neighbor_update(uip_ipaddr_t ipaddr);
-struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr);
-void uip_neighbor_periodic(void);
-
-#endif /* __UIP-NEIGHBOR_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-split.c
--- a/libs/Network/uip/uip/uip-split.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-//#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-
-#include "stdio.h"
-#include <string.h>
-
-#include "uip-split.h"
-#include "uip.h"
-//#include "uip-fw.h"
-//#include "uip_arch.h"
-
-void uip_add32(u8_t *op32, u16_t op16);
-void tcpip_output();
-
-#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
-
-#ifdef UIP_SPLIT_CONF_SIZE
-#define UIP_SPLIT_SIZE UIP_SPLIT_CONF_SIZE
-#else /* UIP_SPLIT_CONF_SIZE */
-#define UIP_SPLIT_SIZE UIP_TCP_MSS
-#endif /* UIP_SPLIT_CONF_SIZE */
-
-/*-----------------------------------------------------------------------------*/
-void uip_split_output(void)
-{
-    u16_t tcplen, len1, len2;
-
-
-    /* We only try to split maximum sized TCP segments. */
-    if (BUF->proto == UIP_PROTO_TCP &&
-        uip_len >= UIP_SPLIT_SIZE + UIP_TCPIP_HLEN) {
-
-        tcplen = uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN;
-        /* Split the segment in two. If the original packet length was
-           odd, we make the second packet one byte larger. */
-        len1 = len2 = tcplen / 2;
-        if (len1 + len2 < tcplen) {
-            ++len2;
-        }
-
-        /* Create the first packet. This is done by altering the length
-           field of the IP header and updating the checksums. */
-        uip_len = len1 + UIP_TCPIP_HLEN;
-#if UIP_CONF_IPV6
-        /* For IPv6, the IP length field does not include the IPv6 IP header
-           length. */
-        BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-        BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-#else /* UIP_CONF_IPV6 */
-        BUF->len[0] = uip_len >> 8;
-        BUF->len[1] = uip_len & 0xff;
-#endif /* UIP_CONF_IPV6 */
-
-        /* Recalculate the TCP checksum. */
-        BUF->tcpchksum = 0;
-        BUF->tcpchksum = ~(uip_tcpchksum());
-
-#if !UIP_CONF_IPV6
-        /* Recalculate the IP checksum. */
-        BUF->ipchksum = 0;
-        BUF->ipchksum = ~(uip_ipchksum());
-#endif /* UIP_CONF_IPV6 */
-
-        uip_len += UIP_LLH_LEN;
-
-        /* Transmit the first packet. */
-        /*    uip_fw_output();*/
-        tcpip_output();
-
-        /* Now, create the second packet. To do this, it is not enough to
-           just alter the length field, but we must also update the TCP
-           sequence number and point the uip_appdata to a new place in
-           memory. This place is detemined by the length of the first
-           packet (len1). */
-        uip_len = len2 + UIP_TCPIP_HLEN;
-#if UIP_CONF_IPV6
-        /* For IPv6, the IP length field does not include the IPv6 IP header
-           length. */
-        BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-        BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-#else /* UIP_CONF_IPV6 */
-        BUF->len[0] = uip_len >> 8;
-        BUF->len[1] = uip_len & 0xff;
-#endif /* UIP_CONF_IPV6 */
-
-        /*    uip_appdata += len1;*/
-        memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2);
-
-        uip_add32(BUF->seqno, len1);
-        BUF->seqno[0] = uip_acc32[0];
-        BUF->seqno[1] = uip_acc32[1];
-        BUF->seqno[2] = uip_acc32[2];
-        BUF->seqno[3] = uip_acc32[3];
-
-        /* Recalculate the TCP checksum. */
-        BUF->tcpchksum = 0;
-        BUF->tcpchksum = ~(uip_tcpchksum());
-
-#if !UIP_CONF_IPV6
-        /* Recalculate the IP checksum. */
-        BUF->ipchksum = 0;
-        BUF->ipchksum = ~(uip_ipchksum());
-#endif /* UIP_CONF_IPV6 */
-
-        uip_len += UIP_LLH_LEN;
-        /* Transmit the second packet. */
-        /*    uip_fw_output();*/
-        tcpip_output();
-    } else {
-        /*    uip_fw_output();*/
-        tcpip_output();
-    }
-
-}
-/*-----------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip-split.h
--- a/libs/Network/uip/uip/uip-split.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2004, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $
- */
-/**
- * \addtogroup uip
- * @{
- */
-
-/**
- * \defgroup uipsplit uIP TCP throughput booster hack
- * @{
- *
- * The basic uIP TCP implementation only allows each TCP connection to
- * have a single TCP segment in flight at any given time. Because of
- * the delayed ACK algorithm employed by most TCP receivers, uIP's
- * limit on the amount of in-flight TCP segments seriously reduces the
- * maximum achievable throughput for sending data from uIP.
- *
- * The uip-split module is a hack which tries to remedy this
- * situation. By splitting maximum sized outgoing TCP segments into
- * two, the delayed ACK algorithm is not invoked at TCP
- * receivers. This improves the throughput when sending data from uIP
- * by orders of magnitude.
- *
- * The uip-split module uses the uip-fw module (uIP IP packet
- * forwarding) for sending packets. Therefore, the uip-fw module must
- * be set up with the appropriate network interfaces for this module
- * to work.
- */
-
-
-/**
- * \file
- * Module for splitting outbound TCP segments in two to avoid the
- * delayed ACK throughput degradation.
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- */
-
-#ifndef __UIP_SPLIT_H__
-#define __UIP_SPLIT_H__
-
-/**
- * Handle outgoing packets.
- *
- * This function inspects an outgoing packet in the uip_buf buffer and
- * sends it out using the uip_fw_output() function. If the packet is a
- * full-sized TCP segment it will be split into two segments and
- * transmitted separately. This function should be called instead of
- * the actual device driver output function, or the uip_fw_output()
- * function.
- *
- * The headers of the outgoing packet is assumed to be in the uip_buf
- * buffer and the payload is assumed to be wherever uip_appdata
- * points. The length of the outgoing packet is assumed to be in the
- * uip_len variable.
- *
- */
-void uip_split_output(void);
-
-#endif /* __UIP_SPLIT_H__ */
-
-/** @} */
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip.c
--- a/libs/Network/uip/uip/uip.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1923 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-#define DEBUG_PRINTF(...)
-//printf(__VA_ARGS__)
-
-/**
- * \defgroup uip The uIP TCP/IP stack
- * @{
- *
- * uIP is an implementation of the TCP/IP protocol stack intended for
- * small 8-bit and 16-bit microcontrollers.
- *
- * uIP provides the necessary protocols for Internet communication,
- * with a very small code footprint and RAM requirements - the uIP
- * code size is on the order of a few kilobytes and RAM usage is on
- * the order of a few hundred bytes.
- */
-
-/**
- * \file
- * The uIP TCP/IP stack code.
- * \author Adam Dunkels <adam@dunkels.com>
- */
-
-/*
- * Copyright (c) 2001-2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $
- *
- */
-
-/*
- * uIP is a small implementation of the IP, UDP and TCP protocols (as
- * well as some basic ICMP stuff). The implementation couples the IP,
- * UDP, TCP and the application layers very tightly. To keep the size
- * of the compiled code down, this code frequently uses the goto
- * statement. While it would be possible to break the uip_process()
- * function into many smaller functions, this would increase the code
- * size because of the overhead of parameter passing and the fact that
- * the optimier would not be as efficient.
- *
- * The principle is that we have a small buffer, called the uip_buf,
- * in which the device driver puts an incoming packet. The TCP/IP
- * stack parses the headers in the packet, and calls the
- * application. If the remote host has sent data to the application,
- * this data is present in the uip_buf and the application read the
- * data from there. It is up to the application to put this data into
- * a byte stream if needed. The application will not be fed with data
- * that is out of sequence.
- *
- * If the application whishes to send data to the peer, it should put
- * its data into the uip_buf. The uip_appdata pointer points to the
- * first available byte. The TCP/IP stack will calculate the
- * checksums, and fill in the necessary header fields and finally send
- * the packet back to the peer.
-*/
-
-#include "uip.h"
-#include "uipopt.h"
-#include "uip_arch.h"
-
-#if UIP_CONF_IPV6
-#include "uip-neighbor.h"
-#endif /* UIP_CONF_IPV6 */
-
-#include <string.h>
-
-/*---------------------------------------------------------------------------*/
-/* Variable definitions. */
-
-
-/* The IP address of this host. If it is defined to be fixed (by
-   setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set
-   here. Otherwise, the address */
-#if UIP_FIXEDADDR > 0
-const uip_ipaddr_t uip_hostaddr = {
-    HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1),
-    HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)
-};
-const uip_ipaddr_t uip_draddr = {
-    HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1),
-    HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)
-};
-const uip_ipaddr_t uip_netmask = {
-    HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1),
-    HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)
-};
-#else
-uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
-#endif /* UIP_FIXEDADDR */
-
-static const uip_ipaddr_t all_ones_addr =
-#if UIP_CONF_IPV6
-{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff};
-#else /* UIP_CONF_IPV6 */
-    {
-        0xffff, 0xffff
-    };
-#endif /* UIP_CONF_IPV6 */
-static const uip_ipaddr_t all_zeroes_addr =
-#if UIP_CONF_IPV6
-{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};
-#else /* UIP_CONF_IPV6 */
-    {
-        0x0000, 0x0000
-    };
-#endif /* UIP_CONF_IPV6 */
-
-
-#if UIP_FIXEDETHADDR
-const struct uip_eth_addr uip_ethaddr = {{
-        UIP_ETHADDR0,
-        UIP_ETHADDR1,
-        UIP_ETHADDR2,
-        UIP_ETHADDR3,
-        UIP_ETHADDR4,
-        UIP_ETHADDR5
-    }
-};
-#else
-struct uip_eth_addr uip_ethaddr = {{0, 0, 0, 0, 0, 0}};
-#endif
-
-#ifndef UIP_CONF_EXTERNAL_BUFFER
-u8_t uip_buf[UIP_BUFSIZE + 2] __attribute__ ((section ("AHBSRAM1")));   /* The packet buffer that contains
-                    incoming packets. */
-#endif /* UIP_CONF_EXTERNAL_BUFFER */
-
-void *uip_appdata;               /* The uip_appdata pointer points to
-                    application data. */
-void *uip_sappdata;              /* The uip_appdata pointer points to
-                    the application data which is to
-                    be sent. */
-#if UIP_URGDATA > 0
-void *uip_urgdata;               /* The uip_urgdata pointer points to
-                    urgent data (out-of-band data), if
-                    present. */
-u16_t uip_urglen, uip_surglen;
-#endif /* UIP_URGDATA > 0 */
-
-u16_t uip_len, uip_slen;
-/* The uip_len is either 8 or 16 bits,
-depending on the maximum packet
-            size. */
-
-u8_t uip_flags;     /* The uip_flags variable is used for
-                communication between the TCP/IP stack
-                and the application program. */
-struct uip_conn *uip_conn;   /* uip_conn always points to the current
-                connection. */
-
-struct uip_conn uip_conns[UIP_CONNS]  __attribute__ ((section ("AHBSRAM1")));
-/* The uip_conns array holds all TCP
-connections. */
-u16_t uip_listenports[UIP_LISTENPORTS] __attribute__ ((section ("AHBSRAM1")));
-/* The uip_listenports list all currently
-listning ports. */
-#if UIP_UDP
-struct uip_udp_conn *uip_udp_conn;
-struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]  __attribute__ ((section ("AHBSRAM1")));
-#endif /* UIP_UDP */
-
-static u16_t ipid;           /* Ths ipid variable is an increasing
-                number that is used for the IP ID
-                field. */
-
-void uip_setipid(u16_t id)
-{
-    ipid = id;
-}
-
-static u8_t iss[4];          /* The iss variable is used for the TCP
-                initial sequence number. */
-
-#if UIP_ACTIVE_OPEN
-static u16_t lastport;       /* Keeps track of the last port used for
-                a new connection. */
-#endif /* UIP_ACTIVE_OPEN */
-
-/* Temporary variables. */
-u8_t uip_acc32[4];
-static u8_t c, opt;
-static u16_t tmp16;
-
-/* Structures and definitions. */
-#define TCP_FIN 0x01
-#define TCP_SYN 0x02
-#define TCP_RST 0x04
-#define TCP_PSH 0x08
-#define TCP_ACK 0x10
-#define TCP_URG 0x20
-#define TCP_CTL 0x3f
-
-#define TCP_OPT_END     0   /* End of TCP options list */
-#define TCP_OPT_NOOP    1   /* "No-operation" TCP option */
-#define TCP_OPT_MSS     2   /* Maximum segment size TCP option */
-
-#define TCP_OPT_MSS_LEN 4   /* Length of TCP MSS option. */
-
-#define ICMP_ECHO_REPLY 0
-#define ICMP_ECHO       8
-
-#define ICMP6_ECHO_REPLY             129
-#define ICMP6_ECHO                   128
-#define ICMP6_NEIGHBOR_SOLICITATION  135
-#define ICMP6_NEIGHBOR_ADVERTISEMENT 136
-
-#define ICMP6_FLAG_S (1 << 6)
-
-#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1
-#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2
-
-
-/* Macros. */
-#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
-#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
-#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
-#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
-
-
-#if UIP_STATISTICS == 1
-struct uip_stats uip_stat;
-#define UIP_STAT(s) s
-#else
-#define UIP_STAT(s)
-#endif /* UIP_STATISTICS == 1 */
-
-#if UIP_LOGGING == 1
-void uip_log(char *msg);
-#define UIP_LOG(m) uip_log(m)
-#else
-#define UIP_LOG(m)
-#endif /* UIP_LOGGING == 1 */
-
-#if ! UIP_ARCH_ADD32
-void
-uip_add32(u8_t *op32, u16_t op16)
-{
-    uip_acc32[3] = op32[3] + (op16 & 0xff);
-    uip_acc32[2] = op32[2] + (op16 >> 8);
-    uip_acc32[1] = op32[1];
-    uip_acc32[0] = op32[0];
-
-    if (uip_acc32[2] < (op16 >> 8)) {
-        ++uip_acc32[1];
-        if (uip_acc32[1] == 0) {
-            ++uip_acc32[0];
-        }
-    }
-
-
-    if (uip_acc32[3] < (op16 & 0xff)) {
-        ++uip_acc32[2];
-        if (uip_acc32[2] == 0) {
-            ++uip_acc32[1];
-            if (uip_acc32[1] == 0) {
-                ++uip_acc32[0];
-            }
-        }
-    }
-}
-
-#endif /* UIP_ARCH_ADD32 */
-
-#if ! UIP_ARCH_CHKSUM
-/*---------------------------------------------------------------------------*/
-static u16_t
-chksum(u16_t sum, const u8_t *data, u16_t len)
-{
-    u16_t t;
-    const u8_t *dataptr;
-    const u8_t *last_byte;
-
-    dataptr = data;
-    last_byte = data + len - 1;
-
-    while (dataptr < last_byte) { /* At least two more bytes */
-        t = (dataptr[0] << 8) + dataptr[1];
-        sum += t;
-        if (sum < t) {
-            sum++;        /* carry */
-        }
-        dataptr += 2;
-    }
-
-    if (dataptr == last_byte) {
-        t = (dataptr[0] << 8) + 0;
-        sum += t;
-        if (sum < t) {
-            sum++;        /* carry */
-        }
-    }
-
-    /* Return sum in host byte order. */
-    return sum;
-}
-/*---------------------------------------------------------------------------*/
-u16_t
-uip_chksum(u16_t *data, u16_t len)
-{
-    return htons(chksum(0, (u8_t *)data, len));
-}
-/*---------------------------------------------------------------------------*/
-#ifndef UIP_ARCH_IPCHKSUM
-u16_t
-uip_ipchksum(void)
-{
-    u16_t sum;
-
-    sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
-    DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum);
-    return (sum == 0) ? 0xffff : htons(sum);
-}
-#endif
-/*---------------------------------------------------------------------------*/
-static u16_t
-upper_layer_chksum(u8_t proto)
-{
-    u16_t upper_layer_len;
-    u16_t sum;
-
-#if UIP_CONF_IPV6
-    upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]);
-#else /* UIP_CONF_IPV6 */
-    upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN;
-#endif /* UIP_CONF_IPV6 */
-
-    /* First sum pseudoheader. */
-
-    /* IP protocol and length fields. This addition cannot carry. */
-    sum = upper_layer_len + proto;
-    /* Sum IP source and destination addresses. */
-    sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t));
-
-    /* Sum TCP header and data. */
-    sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN],
-                 upper_layer_len);
-
-    return (sum == 0) ? 0xffff : htons(sum);
-}
-/*---------------------------------------------------------------------------*/
-#if UIP_CONF_IPV6
-u16_t
-uip_icmp6chksum(void)
-{
-    return upper_layer_chksum(UIP_PROTO_ICMP6);
-
-}
-#endif /* UIP_CONF_IPV6 */
-/*---------------------------------------------------------------------------*/
-u16_t
-uip_tcpchksum(void)
-{
-    return upper_layer_chksum(UIP_PROTO_TCP);
-}
-/*---------------------------------------------------------------------------*/
-#if UIP_UDP_CHECKSUMS
-u16_t
-uip_udpchksum(void)
-{
-    return upper_layer_chksum(UIP_PROTO_UDP);
-}
-#endif /* UIP_UDP_CHECKSUMS */
-#endif /* UIP_ARCH_CHKSUM */
-/*---------------------------------------------------------------------------*/
-void
-uip_init(void)
-{
-    DEBUG_PRINTF("In uip_init\n");
-
-    for (c = 0; c < UIP_LISTENPORTS; ++c) {
-        uip_listenports[c] = 0;
-    }
-    for (c = 0; c < UIP_CONNS; ++c) {
-        uip_conns[c].tcpstateflags = UIP_CLOSED;
-    }
-#if UIP_ACTIVE_OPEN
-    lastport = 1024;
-#endif /* UIP_ACTIVE_OPEN */
-
-#if UIP_UDP
-    for (c = 0; c < UIP_UDP_CONNS; ++c) {
-        uip_udp_conns[c].lport = 0;
-    }
-#endif /* UIP_UDP */
-
-
-    /* IPv4 initialization. */
-#if UIP_FIXEDADDR == 0
-    /*  uip_hostaddr[0] = uip_hostaddr[1] = 0;*/
-#endif /* UIP_FIXEDADDR */
-
-}
-/*---------------------------------------------------------------------------*/
-#if UIP_ACTIVE_OPEN
-struct uip_conn *
-uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)
-{
-    register struct uip_conn *conn, *cconn;
-
-    /* Find an unused local port. */
-again:
-    ++lastport;
-
-    if (lastport >= 32000) {
-        lastport = 4096;
-    }
-
-    /* Check if this port is already in use, and if so try to find
-       another one. */
-    for (c = 0; c < UIP_CONNS; ++c) {
-        conn = &uip_conns[c];
-        if (conn->tcpstateflags != UIP_CLOSED &&
-            conn->lport == htons(lastport)) {
-            goto again;
-        }
-    }
-
-    conn = 0;
-    for (c = 0; c < UIP_CONNS; ++c) {
-        cconn = &uip_conns[c];
-        if (cconn->tcpstateflags == UIP_CLOSED) {
-            conn = cconn;
-            break;
-        }
-        if (cconn->tcpstateflags == UIP_TIME_WAIT) {
-            if (conn == 0 ||
-                cconn->timer > conn->timer) {
-                conn = cconn;
-            }
-        }
-    }
-
-    if (conn == 0) {
-        return 0;
-    }
-
-    conn->tcpstateflags = UIP_SYN_SENT;
-
-    conn->snd_nxt[0] = iss[0];
-    conn->snd_nxt[1] = iss[1];
-    conn->snd_nxt[2] = iss[2];
-    conn->snd_nxt[3] = iss[3];
-
-    conn->initialmss = conn->mss = UIP_TCP_MSS;
-
-    conn->len = 1;   /* TCP length of the SYN is one. */
-    conn->nrtx = 0;
-    conn->timer = 1; /* Send the SYN next time around. */
-    conn->rto = UIP_RTO;
-    conn->sa = 0;
-    conn->sv = 16;   /* Initial value of the RTT variance. */
-    conn->lport = htons(lastport);
-    conn->rport = rport;
-    uip_ipaddr_copy(&conn->ripaddr, ripaddr);
-
-    return conn;
-}
-#endif /* UIP_ACTIVE_OPEN */
-/*---------------------------------------------------------------------------*/
-#if UIP_UDP
-struct uip_udp_conn *
-uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport)
-{
-    register struct uip_udp_conn *conn;
-
-    /* Find an unused local port. */
-again:
-    ++lastport;
-
-    if (lastport >= 32000) {
-        lastport = 4096;
-    }
-
-    for (c = 0; c < UIP_UDP_CONNS; ++c) {
-        if (uip_udp_conns[c].lport == htons(lastport)) {
-            goto again;
-        }
-    }
-
-
-    conn = 0;
-    for (c = 0; c < UIP_UDP_CONNS; ++c) {
-        if (uip_udp_conns[c].lport == 0) {
-            conn = &uip_udp_conns[c];
-            break;
-        }
-    }
-
-    if (conn == 0) {
-        return 0;
-    }
-
-    conn->lport = HTONS(lastport);
-    conn->rport = rport;
-    if (ripaddr == NULL) {
-        memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t));
-    } else {
-        uip_ipaddr_copy(&conn->ripaddr, ripaddr);
-    }
-    conn->ttl = UIP_TTL;
-
-    return conn;
-}
-#endif /* UIP_UDP */
-/*---------------------------------------------------------------------------*/
-void
-uip_unlisten(u16_t port)
-{
-    for (c = 0; c < UIP_LISTENPORTS; ++c) {
-        if (uip_listenports[c] == port) {
-            uip_listenports[c] = 0;
-            return;
-        }
-    }
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_listen(u16_t port)
-{
-    for (c = 0; c < UIP_LISTENPORTS; ++c) {
-        if (uip_listenports[c] == 0) {
-            uip_listenports[c] = port;
-            return;
-        }
-    }
-}
-/*---------------------------------------------------------------------------*/
-/* XXX: IP fragment reassembly: not well-tested. */
-
-#if UIP_REASSEMBLY && !UIP_CONF_IPV6
-#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN)
-static u8_t uip_reassbuf[UIP_REASS_BUFSIZE];
-static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)];
-static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f,
-                                    0x0f, 0x07, 0x03, 0x01
-                                   };
-static u16_t uip_reasslen;
-static u8_t uip_reassflags;
-#define UIP_REASS_FLAG_LASTFRAG 0x01
-static u8_t uip_reasstmr;
-
-#define IP_MF   0x20
-
-static u8_t
-uip_reass(void)
-{
-    u16_t offset, len;
-    u16_t i;
-
-    /* If ip_reasstmr is zero, no packet is present in the buffer, so we
-       write the IP header of the fragment into the reassembly
-       buffer. The timer is updated with the maximum age. */
-    if (uip_reasstmr == 0) {
-        memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN);
-        uip_reasstmr = UIP_REASS_MAXAGE;
-        uip_reassflags = 0;
-        /* Clear the bitmap. */
-        memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap));
-    }
-
-    /* Check if the incoming fragment matches the one currently present
-       in the reasembly buffer. If so, we proceed with copying the
-       fragment into the buffer. */
-    if (BUF->srcipaddr[0] == FBUF->srcipaddr[0] &&
-        BUF->srcipaddr[1] == FBUF->srcipaddr[1] &&
-        BUF->destipaddr[0] == FBUF->destipaddr[0] &&
-        BUF->destipaddr[1] == FBUF->destipaddr[1] &&
-        BUF->ipid[0] == FBUF->ipid[0] &&
-        BUF->ipid[1] == FBUF->ipid[1]) {
-
-        len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4;
-        offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8;
-
-        /* If the offset or the offset + fragment length overflows the
-           reassembly buffer, we discard the entire packet. */
-        if (offset > UIP_REASS_BUFSIZE ||
-            offset + len > UIP_REASS_BUFSIZE) {
-            uip_reasstmr = 0;
-            goto nullreturn;
-        }
-
-        /* Copy the fragment into the reassembly buffer, at the right
-           offset. */
-        memcpy(&uip_reassbuf[UIP_IPH_LEN + offset],
-               (char *)BUF + (int)((BUF->vhl & 0x0f) * 4),
-               len);
-
-        /* Update the bitmap. */
-        if (offset / (8 * 8) == (offset + len) / (8 * 8)) {
-            /* If the two endpoints are in the same byte, we only update
-            that byte. */
-
-            uip_reassbitmap[offset / (8 * 8)] |=
-                bitmap_bits[(offset / 8 ) & 7] &
-                ~bitmap_bits[((offset + len) / 8 ) & 7];
-        } else {
-            /* If the two endpoints are in different bytes, we update the
-            bytes in the endpoints and fill the stuff inbetween with
-             0xff. */
-            uip_reassbitmap[offset / (8 * 8)] |=
-                bitmap_bits[(offset / 8 ) & 7];
-            for (i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) {
-                uip_reassbitmap[i] = 0xff;
-            }
-            uip_reassbitmap[(offset + len) / (8 * 8)] |=
-                ~bitmap_bits[((offset + len) / 8 ) & 7];
-        }
-
-        /* If this fragment has the More Fragments flag set to zero, we
-           know that this is the last fragment, so we can calculate the
-           size of the entire packet. We also set the
-           IP_REASS_FLAG_LASTFRAG flag to indicate that we have received
-           the final fragment. */
-
-        if ((BUF->ipoffset[0] & IP_MF) == 0) {
-            uip_reassflags |= UIP_REASS_FLAG_LASTFRAG;
-            uip_reasslen = offset + len;
-        }
-
-        /* Finally, we check if we have a full packet in the buffer. We do
-           this by checking if we have the last fragment and if all bits
-           in the bitmap are set. */
-        if (uip_reassflags & UIP_REASS_FLAG_LASTFRAG) {
-            /* Check all bytes up to and including all but the last byte in
-            the bitmap. */
-            for (i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) {
-                if (uip_reassbitmap[i] != 0xff) {
-                    goto nullreturn;
-                }
-            }
-            /* Check the last byte in the bitmap. It should contain just the
-            right amount of bits. */
-            if (uip_reassbitmap[uip_reasslen / (8 * 8)] !=
-                (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) {
-                goto nullreturn;
-            }
-
-            /* If we have come this far, we have a full packet in the
-            buffer, so we allocate a pbuf and copy the packet into it. We
-             also reset the timer. */
-            uip_reasstmr = 0;
-            memcpy(BUF, FBUF, uip_reasslen);
-
-            /* Pretend to be a "normal" (i.e., not fragmented) IP packet
-            from now on. */
-            BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
-            BUF->len[0] = uip_reasslen >> 8;
-            BUF->len[1] = uip_reasslen & 0xff;
-            BUF->ipchksum = 0;
-            BUF->ipchksum = ~(uip_ipchksum());
-
-            return uip_reasslen;
-        }
-    }
-
-nullreturn:
-    return 0;
-}
-#endif /* UIP_REASSEMBLY */
-/*---------------------------------------------------------------------------*/
-static void
-uip_add_rcv_nxt(u16_t n)
-{
-    uip_add32(uip_conn->rcv_nxt, n);
-    uip_conn->rcv_nxt[0] = uip_acc32[0];
-    uip_conn->rcv_nxt[1] = uip_acc32[1];
-    uip_conn->rcv_nxt[2] = uip_acc32[2];
-    uip_conn->rcv_nxt[3] = uip_acc32[3];
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_process(u8_t flag)
-{
-    register struct uip_conn *uip_connr = uip_conn;
-
-#if UIP_UDP
-    if (flag == UIP_UDP_SEND_CONN) {
-        goto udp_send;
-    }
-#endif /* UIP_UDP */
-
-    uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN];
-
-    /* Check if we were invoked because of a poll request for a
-       particular connection. */
-    if (flag == UIP_POLL_REQUEST) {
-        if ((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
-            !uip_outstanding(uip_connr)) {
-            uip_flags = UIP_POLL;
-            UIP_APPCALL();
-            goto appsend;
-        }
-        goto drop;
-
-        /* Check if we were invoked because of the perodic timer fireing. */
-    } else if (flag == UIP_TIMER) {
-#if UIP_REASSEMBLY
-        if (uip_reasstmr != 0) {
-            --uip_reasstmr;
-        }
-#endif /* UIP_REASSEMBLY */
-        /* Increase the initial sequence number. */
-        if (++iss[3] == 0) {
-            if (++iss[2] == 0) {
-                if (++iss[1] == 0) {
-                    ++iss[0];
-                }
-            }
-        }
-
-        /* Reset the length variables. */
-        uip_len = 0;
-        uip_slen = 0;
-
-        /* Check if the connection is in a state in which we simply wait
-           for the connection to time out. If so, we increase the
-           connection's timer and remove the connection if it times
-           out. */
-        if (uip_connr->tcpstateflags == UIP_TIME_WAIT ||
-            uip_connr->tcpstateflags == UIP_FIN_WAIT_2) {
-            ++(uip_connr->timer);
-            if (uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {
-                uip_connr->tcpstateflags = UIP_CLOSED;
-            }
-        } else if (uip_connr->tcpstateflags != UIP_CLOSED) {
-            /* If the connection has outstanding data, we increase the
-            connection's timer and see if it has reached the RTO value
-             in which case we retransmit. */
-            if (uip_outstanding(uip_connr)) {
-                if (uip_connr->timer-- == 0) {
-                    if (uip_connr->nrtx == UIP_MAXRTX ||
-                        ((uip_connr->tcpstateflags == UIP_SYN_SENT ||
-                          uip_connr->tcpstateflags == UIP_SYN_RCVD) &&
-                         uip_connr->nrtx == UIP_MAXSYNRTX)) {
-                        uip_connr->tcpstateflags = UIP_CLOSED;
-
-                        /* We call UIP_APPCALL() with uip_flags set to
-                           UIP_TIMEDOUT to inform the application that the
-                           connection has timed out. */
-                        uip_flags = UIP_TIMEDOUT;
-                        UIP_APPCALL();
-
-                        /* We also send a reset packet to the remote host. */
-                        BUF->flags = TCP_RST | TCP_ACK;
-                        goto tcp_send_nodata;
-                    }
-
-                    /* Exponential backoff. */
-                    uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4 ?
-                                                   4 :
-                                                   uip_connr->nrtx);
-                    ++(uip_connr->nrtx);
-
-                    /* Ok, so we need to retransmit. We do this differently
-                       depending on which state we are in. In ESTABLISHED, we
-                       call upon the application so that it may prepare the
-                       data for the retransmit. In SYN_RCVD, we resend the
-                       SYNACK that we sent earlier and in LAST_ACK we have to
-                       retransmit our FINACK. */
-                    UIP_STAT(++uip_stat.tcp.rexmit);
-                    switch (uip_connr->tcpstateflags & UIP_TS_MASK) {
-                        case UIP_SYN_RCVD:
-                            /* In the SYN_RCVD state, we should retransmit our
-                                   SYNACK. */
-                            goto tcp_send_synack;
-
-#if UIP_ACTIVE_OPEN
-                        case UIP_SYN_SENT:
-                            /* In the SYN_SENT state, we retransmit out SYN. */
-                            BUF->flags = 0;
-                            goto tcp_send_syn;
-#endif /* UIP_ACTIVE_OPEN */
-
-                        case UIP_ESTABLISHED:
-                            /* In the ESTABLISHED state, we call upon the application
-                                   to do the actual retransmit after which we jump into
-                                   the code for sending out the packet (the apprexmit
-                                   label). */
-                            uip_flags = UIP_REXMIT;
-                            UIP_APPCALL();
-                            goto apprexmit;
-
-                        case UIP_FIN_WAIT_1:
-                        case UIP_CLOSING:
-                        case UIP_LAST_ACK:
-                            /* In all these states we should retransmit a FINACK. */
-                            goto tcp_send_finack;
-
-                    }
-                }
-            } else if ((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) {
-                /* If there was no need for a retransmission, we poll the
-                       application for new data. */
-                uip_flags = UIP_POLL;
-                UIP_APPCALL();
-                goto appsend;
-            }
-        }
-        goto drop;
-    }
-#if UIP_UDP
-    if (flag == UIP_UDP_TIMER) {
-        if (uip_udp_conn->lport != 0) {
-            uip_conn = NULL;
-            uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-            uip_len = uip_slen = 0;
-            uip_flags = UIP_POLL;
-            UIP_UDP_APPCALL();
-            goto udp_send;
-        } else {
-            goto drop;
-        }
-    }
-#endif
-
-    /* This is where the input processing starts. */
-    UIP_STAT(++uip_stat.ip.recv);
-
-    /* Start of IP input header processing code. */
-
-#if UIP_CONF_IPV6
-    /* Check validity of the IP header. */
-    if ((BUF->vtc & 0xf0) != 0x60)  { /* IP version and header length. */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.vhlerr);
-        UIP_LOG("ipv6: invalid version.");
-        goto drop;
-    }
-#else /* UIP_CONF_IPV6 */
-    /* Check validity of the IP header. */
-    if (BUF->vhl != 0x45)  { /* IP version and header length. */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.vhlerr);
-        UIP_LOG("ip: invalid version or header length.");
-        goto drop;
-    }
-#endif /* UIP_CONF_IPV6 */
-
-    /* Check the size of the packet. If the size reported to us in
-       uip_len is smaller the size reported in the IP header, we assume
-       that the packet has been corrupted in transit. If the size of
-       uip_len is larger than the size reported in the IP packet header,
-       the packet has been padded and we set uip_len to the correct
-       value.. */
-
-    if ((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
-        uip_len = (BUF->len[0] << 8) + BUF->len[1];
-#if UIP_CONF_IPV6
-        uip_len += 40; /* The length reported in the IPv6 header is the
-              length of the payload that follows the
-              header. However, uIP uses the uip_len variable
-              for holding the size of the entire packet,
-              including the IP header. For IPv4 this is not a
-              problem as the length field in the IPv4 header
-              contains the length of the entire packet. But
-              for IPv6 we need to add the size of the IPv6
-              header (40 bytes). */
-#endif /* UIP_CONF_IPV6 */
-    } else {
-        UIP_LOG("ip: packet shorter than reported in IP header.");
-        goto drop;
-    }
-
-#if !UIP_CONF_IPV6
-    /* Check the fragment flag. */
-    if ((BUF->ipoffset[0] & 0x3f) != 0 ||
-        BUF->ipoffset[1] != 0) {
-#if UIP_REASSEMBLY
-        uip_len = uip_reass();
-        if (uip_len == 0) {
-            goto drop;
-        }
-#else /* UIP_REASSEMBLY */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.fragerr);
-        UIP_LOG("ip: fragment dropped.");
-        goto drop;
-#endif /* UIP_REASSEMBLY */
-    }
-#endif /* UIP_CONF_IPV6 */
-
-    if (uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) {
-        /* If we are configured to use ping IP address configuration and
-           hasn't been assigned an IP address yet, we accept all ICMP
-           packets. */
-#if UIP_PINGADDRCONF && !UIP_CONF_IPV6
-        if (BUF->proto == UIP_PROTO_ICMP) {
-            UIP_LOG("ip: possible ping config packet received.");
-            goto icmp_input;
-        } else {
-            UIP_LOG("ip: packet dropped since no address assigned.");
-            goto drop;
-        }
-#endif /* UIP_PINGADDRCONF */
-
-    } else {
-        /* If IP broadcast support is configured, we check for a broadcast
-           UDP packet, which may be destined to us. */
-#if UIP_BROADCAST
-        DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum());
-        if (BUF->proto == UIP_PROTO_UDP &&
-            uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr)
-            /*&&
-            uip_ipchksum() == 0xffff*/) {
-            goto udp_input;
-        }
-#endif /* UIP_BROADCAST */
-
-        /* Check if the packet is destined for our IP address. */
-#if !UIP_CONF_IPV6
-        if (!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) {
-            UIP_STAT(++uip_stat.ip.drop);
-            goto drop;
-        }
-#else /* UIP_CONF_IPV6 */
-        /* For IPv6, packet reception is a little trickier as we need to
-           make sure that we listen to certain multicast addresses (all
-           hosts multicast address, and the solicited-node multicast
-           address) as well. However, we will cheat here and accept all
-           multicast packets that are sent to the ff02::/16 addresses. */
-        if (!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) &&
-            BUF->destipaddr[0] != HTONS(0xff02)) {
-            UIP_STAT(++uip_stat.ip.drop);
-            goto drop;
-        }
-#endif /* UIP_CONF_IPV6 */
-    }
-
-#if !UIP_CONF_IPV6
-    if (uip_ipchksum() != 0xffff) {
-        /* Compute and check the IP header
-                      checksum. */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.chkerr);
-        UIP_LOG("ip: bad checksum.");
-        goto drop;
-    }
-#endif /* UIP_CONF_IPV6 */
-
-    if (BUF->proto == UIP_PROTO_TCP) {
-        /* Check for TCP packet. If so,
-                         proceed with TCP input
-                         processing. */
-        goto tcp_input;
-    }
-
-#if UIP_UDP
-    if (BUF->proto == UIP_PROTO_UDP) {
-        goto udp_input;
-    }
-#endif /* UIP_UDP */
-
-#if !UIP_CONF_IPV6
-    /* ICMPv4 processing code follows. */
-    if (BUF->proto != UIP_PROTO_ICMP) {
-        /* We only allow ICMP packets from
-                      here. */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.protoerr);
-        UIP_LOG("ip: neither tcp nor icmp.");
-        goto drop;
-    }
-
-#if UIP_PINGADDRCONF
-icmp_input:
-#endif /* UIP_PINGADDRCONF */
-    UIP_STAT(++uip_stat.icmp.recv);
-
-    /* ICMP echo (i.e., ping) processing. This is simple, we only change
-       the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
-       checksum before we return the packet. */
-    if (ICMPBUF->type != ICMP_ECHO) {
-        UIP_STAT(++uip_stat.icmp.drop);
-        UIP_STAT(++uip_stat.icmp.typeerr);
-        UIP_LOG("icmp: not icmp echo.");
-        goto drop;
-    }
-
-    /* If we are configured to use ping IP address assignment, we use
-       the destination IP address of this ping packet and assign it to
-       ourself. */
-#if UIP_PINGADDRCONF
-    if ((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {
-        uip_hostaddr[0] = BUF->destipaddr[0];
-        uip_hostaddr[1] = BUF->destipaddr[1];
-    }
-#endif /* UIP_PINGADDRCONF */
-
-    ICMPBUF->type = ICMP_ECHO_REPLY;
-
-    if (ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
-        ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
-    } else {
-        ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
-    }
-
-    /* Swap IP addresses. */
-    uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-    uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-
-    UIP_STAT(++uip_stat.icmp.sent);
-    goto send;
-
-    /* End of IPv4 input header processing code. */
-#else /* !UIP_CONF_IPV6 */
-
-    /* This is IPv6 ICMPv6 processing code. */
-    DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);
-
-    if (BUF->proto != UIP_PROTO_ICMP6) {
-        /* We only allow ICMPv6 packets from
-                       here. */
-        UIP_STAT(++uip_stat.ip.drop);
-        UIP_STAT(++uip_stat.ip.protoerr);
-        UIP_LOG("ip: neither tcp nor icmp6.");
-        goto drop;
-    }
-
-    UIP_STAT(++uip_stat.icmp.recv);
-
-    /* If we get a neighbor solicitation for our address we should send
-       a neighbor advertisement message back. */
-    if (ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) {
-        if (uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) {
-
-            if (ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) {
-                /* Save the sender's address in our neighbor list. */
-                uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2]));
-            }
-
-            /* We should now send a neighbor advertisement back to where the
-            neighbor solicication came from. */
-            ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT;
-            ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */
-
-            ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0;
-
-            uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr);
-            uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr);
-            ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS;
-            ICMPBUF->options[1] = 1;  /* Options length, 1 = 8 bytes. */
-            memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr));
-            ICMPBUF->icmpchksum = 0;
-            ICMPBUF->icmpchksum = ~uip_icmp6chksum();
-            goto send;
-
-        }
-        goto drop;
-    } else if (ICMPBUF->type == ICMP6_ECHO) {
-        /* ICMP echo (i.e., ping) processing. This is simple, we only
-           change the ICMP type from ECHO to ECHO_REPLY and update the
-           ICMP checksum before we return the packet. */
-
-        ICMPBUF->type = ICMP6_ECHO_REPLY;
-
-        uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-        uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-        ICMPBUF->icmpchksum = 0;
-        ICMPBUF->icmpchksum = ~uip_icmp6chksum();
-
-        UIP_STAT(++uip_stat.icmp.sent);
-        goto send;
-    } else {
-        DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type);
-        UIP_STAT(++uip_stat.icmp.drop);
-        UIP_STAT(++uip_stat.icmp.typeerr);
-        UIP_LOG("icmp: unknown ICMP message.");
-        goto drop;
-    }
-
-    /* End of IPv6 ICMP processing. */
-
-#endif /* !UIP_CONF_IPV6 */
-
-#if UIP_UDP
-    /* UDP input processing. */
-udp_input:
-    /* UDP processing is really just a hack. We don't do anything to the
-       UDP/IP headers, but let the UDP application do all the hard
-       work. If the application sets uip_slen, it has a packet to
-       send. */
-#if UIP_UDP_CHECKSUMS
-    uip_len = uip_len - UIP_IPUDPH_LEN;
-    uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-    if (UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) {
-        UIP_STAT(++uip_stat.udp.drop);
-        UIP_STAT(++uip_stat.udp.chkerr);
-        UIP_LOG("udp: bad checksum.");
-        goto drop;
-    }
-#else /* UIP_UDP_CHECKSUMS */
-    uip_len = uip_len - UIP_IPUDPH_LEN;
-#endif /* UIP_UDP_CHECKSUMS */
-
-    /* Demultiplex this UDP packet between the UDP "connections". */
-    for (uip_udp_conn = &uip_udp_conns[0];
-         uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];
-         ++uip_udp_conn) {
-        /* If the local UDP port is non-zero, the connection is considered
-           to be used. If so, the local port number is checked against the
-           destination port number in the received packet. If the two port
-           numbers match, the remote port number is checked if the
-           connection is bound to a remote port. Finally, if the
-           connection is bound to a remote IP address, the source IP
-           address of the packet is checked. */
-        if (uip_udp_conn->lport != 0 &&
-            UDPBUF->destport == uip_udp_conn->lport &&
-            (uip_udp_conn->rport == 0 ||
-             UDPBUF->srcport == uip_udp_conn->rport) &&
-            (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
-             uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
-             uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) {
-            goto udp_found;
-        }
-    }
-    UIP_LOG("udp: no matching connection found");
-    goto drop;
-
-udp_found:
-    uip_conn = NULL;
-    uip_flags = UIP_NEWDATA;
-    uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-    uip_slen = 0;
-    UIP_UDP_APPCALL();
-udp_send:
-    if (uip_slen == 0) {
-        goto drop;
-    }
-    uip_len = uip_slen + UIP_IPUDPH_LEN;
-
-#if UIP_CONF_IPV6
-    /* For IPv6, the IP length field does not include the IPv6 IP header
-       length. */
-    BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-    BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-#else /* UIP_CONF_IPV6 */
-    BUF->len[0] = (uip_len >> 8);
-    BUF->len[1] = (uip_len & 0xff);
-#endif /* UIP_CONF_IPV6 */
-
-    BUF->ttl = uip_udp_conn->ttl;
-    BUF->proto = UIP_PROTO_UDP;
-
-    UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN);
-    UDPBUF->udpchksum = 0;
-
-    BUF->srcport  = uip_udp_conn->lport;
-    BUF->destport = uip_udp_conn->rport;
-
-    uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-    uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr);
-
-    uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN];
-
-#if UIP_UDP_CHECKSUMS
-    /* Calculate UDP checksum. */
-    UDPBUF->udpchksum = ~(uip_udpchksum());
-    if (UDPBUF->udpchksum == 0) {
-        UDPBUF->udpchksum = 0xffff;
-    }
-#endif /* UIP_UDP_CHECKSUMS */
-
-    goto ip_send_nolen;
-#endif /* UIP_UDP */
-
-    /* TCP input processing. */
-tcp_input:
-    UIP_STAT(++uip_stat.tcp.recv);
-
-    /* Start of TCP input header processing code. */
-
-    if (uip_tcpchksum() != 0xffff) {
-        /* Compute and check the TCP
-                         checksum. */
-        UIP_STAT(++uip_stat.tcp.drop);
-        UIP_STAT(++uip_stat.tcp.chkerr);
-        UIP_LOG("tcp: bad checksum.");
-        goto drop;
-    }
-
-
-    /* Demultiplex this segment. */
-    /* First check any active connections. */
-    for (uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1];
-         ++uip_connr) {
-        if (uip_connr->tcpstateflags != UIP_CLOSED &&
-            BUF->destport == uip_connr->lport &&
-            BUF->srcport == uip_connr->rport &&
-            uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) {
-            goto found;
-        }
-    }
-
-    /* If we didn't find and active connection that expected the packet,
-       either this packet is an old duplicate, or this is a SYN packet
-       destined for a connection in LISTEN. If the SYN flag isn't set,
-       it is an old packet and we send a RST. */
-    if ((BUF->flags & TCP_CTL) != TCP_SYN) {
-        goto reset;
-    }
-
-    tmp16 = BUF->destport;
-    /* Next, check listening connections. */
-    for (c = 0; c < UIP_LISTENPORTS; ++c) {
-        if (tmp16 == uip_listenports[c])
-            goto found_listen;
-    }
-
-    /* No matching connection found, so we send a RST packet. */
-    UIP_STAT(++uip_stat.tcp.synrst);
-reset:
-
-    /* We do not send resets in response to resets. */
-    if (BUF->flags & TCP_RST) {
-        goto drop;
-    }
-
-    UIP_STAT(++uip_stat.tcp.rst);
-
-    BUF->flags = TCP_RST | TCP_ACK;
-    uip_len = UIP_IPTCPH_LEN;
-    BUF->tcpoffset = 5 << 4;
-
-    /* Flip the seqno and ackno fields in the TCP header. */
-    c = BUF->seqno[3];
-    BUF->seqno[3] = BUF->ackno[3];
-    BUF->ackno[3] = c;
-
-    c = BUF->seqno[2];
-    BUF->seqno[2] = BUF->ackno[2];
-    BUF->ackno[2] = c;
-
-    c = BUF->seqno[1];
-    BUF->seqno[1] = BUF->ackno[1];
-    BUF->ackno[1] = c;
-
-    c = BUF->seqno[0];
-    BUF->seqno[0] = BUF->ackno[0];
-    BUF->ackno[0] = c;
-
-    /* We also have to increase the sequence number we are
-       acknowledging. If the least significant byte overflowed, we need
-       to propagate the carry to the other bytes as well. */
-    if (++BUF->ackno[3] == 0) {
-        if (++BUF->ackno[2] == 0) {
-            if (++BUF->ackno[1] == 0) {
-                ++BUF->ackno[0];
-            }
-        }
-    }
-
-    /* Swap port numbers. */
-    tmp16 = BUF->srcport;
-    BUF->srcport = BUF->destport;
-    BUF->destport = tmp16;
-
-    /* Swap IP addresses. */
-    uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-    uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-
-    /* And send out the RST packet! */
-    goto tcp_send_noconn;
-
-    /* This label will be jumped to if we matched the incoming packet
-       with a connection in LISTEN. In that case, we should create a new
-       connection and send a SYNACK in return. */
-found_listen:
-    /* First we check if there are any connections avaliable. Unused
-       connections are kept in the same table as used connections, but
-       unused ones have the tcpstate set to CLOSED. Also, connections in
-       TIME_WAIT are kept track of and we'll use the oldest one if no
-       CLOSED connections are found. Thanks to Eddie C. Dost for a very
-       nice algorithm for the TIME_WAIT search. */
-    uip_connr = 0;
-    for (c = 0; c < UIP_CONNS; ++c) {
-        if (uip_conns[c].tcpstateflags == UIP_CLOSED) {
-            uip_connr = &uip_conns[c];
-            break;
-        }
-        if (uip_conns[c].tcpstateflags == UIP_TIME_WAIT) {
-            if (uip_connr == 0 ||
-                uip_conns[c].timer > uip_connr->timer) {
-                uip_connr = &uip_conns[c];
-            }
-        }
-    }
-
-    if (uip_connr == 0) {
-        /* All connections are used already, we drop packet and hope that
-           the remote end will retransmit the packet at a time when we
-           have more spare connections. */
-        UIP_STAT(++uip_stat.tcp.syndrop);
-        UIP_LOG("tcp: found no unused connections.");
-        goto drop;
-    }
-    uip_conn = uip_connr;
-
-    /* Fill in the necessary fields for the new connection. */
-    uip_connr->rto = uip_connr->timer = UIP_RTO;
-    uip_connr->sa = 0;
-    uip_connr->sv = 4;
-    uip_connr->nrtx = 0;
-    uip_connr->lport = BUF->destport;
-    uip_connr->rport = BUF->srcport;
-    uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr);
-    uip_connr->tcpstateflags = UIP_SYN_RCVD;
-
-    uip_connr->snd_nxt[0] = iss[0];
-    uip_connr->snd_nxt[1] = iss[1];
-    uip_connr->snd_nxt[2] = iss[2];
-    uip_connr->snd_nxt[3] = iss[3];
-    uip_connr->len = 1;
-
-    /* rcv_nxt should be the seqno from the incoming packet + 1. */
-    uip_connr->rcv_nxt[3] = BUF->seqno[3];
-    uip_connr->rcv_nxt[2] = BUF->seqno[2];
-    uip_connr->rcv_nxt[1] = BUF->seqno[1];
-    uip_connr->rcv_nxt[0] = BUF->seqno[0];
-    uip_add_rcv_nxt(1);
-
-    /* Parse the TCP MSS option, if present. */
-    if ((BUF->tcpoffset & 0xf0) > 0x50) {
-        for (c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
-            opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c];
-            if (opt == TCP_OPT_END) {
-                /* End of options. */
-                break;
-            } else if (opt == TCP_OPT_NOOP) {
-                ++c;
-                /* NOP option. */
-            } else if (opt == TCP_OPT_MSS &&
-                       uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
-                /* An MSS option with the right option length. */
-                tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
-                        (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c];
-                uip_connr->initialmss = uip_connr->mss =
-                                            tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16;
-
-                /* And we are done processing options. */
-                break;
-            } else {
-                /* All other options have a length field, so that we easily
-                   can skip past them. */
-                if (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
-                    /* If the length field is zero, the options are malformed
-                       and we don't process them further. */
-                    break;
-                }
-                c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
-            }
-        }
-    }
-
-    /* Our response will be a SYNACK. */
-#if UIP_ACTIVE_OPEN
-tcp_send_synack:
-    BUF->flags = TCP_ACK;
-
-tcp_send_syn:
-    BUF->flags |= TCP_SYN;
-#else /* UIP_ACTIVE_OPEN */
-tcp_send_synack:
-    BUF->flags = TCP_SYN | TCP_ACK;
-#endif /* UIP_ACTIVE_OPEN */
-
-    /* We send out the TCP Maximum Segment Size option with our
-       SYNACK. */
-    BUF->optdata[0] = TCP_OPT_MSS;
-    BUF->optdata[1] = TCP_OPT_MSS_LEN;
-    BUF->optdata[2] = (UIP_TCP_MSS) / 256;
-    BUF->optdata[3] = (UIP_TCP_MSS) & 255;
-    uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN;
-    BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4;
-    goto tcp_send;
-
-    /* This label will be jumped to if we found an active connection. */
-found:
-    uip_conn = uip_connr;
-    uip_flags = 0;
-    /* We do a very naive form of TCP reset processing; we just accept
-       any RST and kill our connection. We should in fact check if the
-       sequence number of this reset is wihtin our advertised window
-       before we accept the reset. */
-    if (BUF->flags & TCP_RST) {
-        uip_connr->tcpstateflags = UIP_CLOSED;
-        UIP_LOG("tcp: got reset, aborting connection.");
-        uip_flags = UIP_ABORT;
-        UIP_APPCALL();
-        goto drop;
-    }
-    /* Calculated the length of the data, if the application has sent
-       any data to us. */
-    c = (BUF->tcpoffset >> 4) << 2;
-    /* uip_len will contain the length of the actual TCP data. This is
-       calculated by subtracing the length of the TCP header (in
-       c) and the length of the IP header (20 bytes). */
-    uip_len = uip_len - c - UIP_IPH_LEN;
-
-    /* First, check if the sequence number of the incoming packet is
-       what we're expecting next. If not, we send out an ACK with the
-       correct numbers in. */
-    if (!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) &&
-          ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) {
-        if ((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) &&
-            (BUF->seqno[0] != uip_connr->rcv_nxt[0] ||
-             BUF->seqno[1] != uip_connr->rcv_nxt[1] ||
-             BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
-             BUF->seqno[3] != uip_connr->rcv_nxt[3])) {
-            goto tcp_send_ack;
-        }
-    }
-
-    /* Next, check if the incoming segment acknowledges any outstanding
-       data. If so, we update the sequence number, reset the length of
-       the outstanding data, calculate RTT estimations, and reset the
-       retransmission timer. */
-    if ((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) {
-        uip_add32(uip_connr->snd_nxt, uip_connr->len);
-
-        if (BUF->ackno[0] == uip_acc32[0] &&
-            BUF->ackno[1] == uip_acc32[1] &&
-            BUF->ackno[2] == uip_acc32[2] &&
-            BUF->ackno[3] == uip_acc32[3]) {
-            /* Update sequence number. */
-            uip_connr->snd_nxt[0] = uip_acc32[0];
-            uip_connr->snd_nxt[1] = uip_acc32[1];
-            uip_connr->snd_nxt[2] = uip_acc32[2];
-            uip_connr->snd_nxt[3] = uip_acc32[3];
-
-
-            /* Do RTT estimation, unless we have done retransmissions. */
-            if (uip_connr->nrtx == 0) {
-                signed char m;
-                m = uip_connr->rto - uip_connr->timer;
-                /* This is taken directly from VJs original code in his paper */
-                m = m - (uip_connr->sa >> 3);
-                uip_connr->sa += m;
-                if (m < 0) {
-                    m = -m;
-                }
-                m = m - (uip_connr->sv >> 2);
-                uip_connr->sv += m;
-                uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv;
-
-            }
-            /* Set the acknowledged flag. */
-            uip_flags = UIP_ACKDATA;
-            /* Reset the retransmission timer. */
-            uip_connr->timer = uip_connr->rto;
-
-            /* Reset length of outstanding data. */
-            uip_connr->len = 0;
-        }
-
-    }
-
-    /* Do different things depending on in what state the connection is. */
-    switch (uip_connr->tcpstateflags & UIP_TS_MASK) {
-            /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not
-            implemented, since we force the application to close when the
-            peer sends a FIN (hence the application goes directly from
-            ESTABLISHED to LAST_ACK). */
-        case UIP_SYN_RCVD:
-            /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and
-               we are waiting for an ACK that acknowledges the data we sent
-               out the last time. Therefore, we want to have the UIP_ACKDATA
-               flag set. If so, we enter the ESTABLISHED state. */
-            if (uip_flags & UIP_ACKDATA) {
-                uip_connr->tcpstateflags = UIP_ESTABLISHED;
-                uip_flags = UIP_CONNECTED;
-                uip_connr->len = 0;
-                if (uip_len > 0) {
-                    uip_flags |= UIP_NEWDATA;
-                    uip_add_rcv_nxt(uip_len);
-                }
-                uip_slen = 0;
-                UIP_APPCALL();
-                goto appsend;
-            }
-            goto drop;
-#if UIP_ACTIVE_OPEN
-        case UIP_SYN_SENT:
-            /* In SYN_SENT, we wait for a SYNACK that is sent in response to
-               our SYN. The rcv_nxt is set to sequence number in the SYNACK
-               plus one, and we send an ACK. We move into the ESTABLISHED
-               state. */
-            if ((uip_flags & UIP_ACKDATA) &&
-                (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) {
-
-                /* Parse the TCP MSS option, if present. */
-                if ((BUF->tcpoffset & 0xf0) > 0x50) {
-                    for (c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
-                        opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c];
-                        if (opt == TCP_OPT_END) {
-                            /* End of options. */
-                            break;
-                        } else if (opt == TCP_OPT_NOOP) {
-                            ++c;
-                            /* NOP option. */
-                        } else if (opt == TCP_OPT_MSS &&
-                                   uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
-                            /* An MSS option with the right option length. */
-                            tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
-                                    uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
-                            uip_connr->initialmss =
-                                uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16;
-
-                            /* And we are done processing options. */
-                            break;
-                        } else {
-                            /* All other options have a length field, so that we easily
-                               can skip past them. */
-                            if (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
-                                /* If the length field is zero, the options are malformed
-                                and we don't process them further. */
-                                break;
-                            }
-                            c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
-                        }
-                    }
-                }
-                uip_connr->tcpstateflags = UIP_ESTABLISHED;
-                uip_connr->rcv_nxt[0] = BUF->seqno[0];
-                uip_connr->rcv_nxt[1] = BUF->seqno[1];
-                uip_connr->rcv_nxt[2] = BUF->seqno[2];
-                uip_connr->rcv_nxt[3] = BUF->seqno[3];
-                uip_add_rcv_nxt(1);
-                uip_flags = UIP_CONNECTED | UIP_NEWDATA;
-                uip_connr->len = 0;
-                uip_len = 0;
-                uip_slen = 0;
-                UIP_APPCALL();
-                goto appsend;
-            }
-            /* Inform the application that the connection failed */
-            uip_flags = UIP_ABORT;
-            UIP_APPCALL();
-            /* The connection is closed after we send the RST */
-            uip_conn->tcpstateflags = UIP_CLOSED;
-            goto reset;
-#endif /* UIP_ACTIVE_OPEN */
-
-        case UIP_ESTABLISHED:
-            /* In the ESTABLISHED state, we call upon the application to feed
-            data into the uip_buf. If the UIP_ACKDATA flag is set, the
-            application should put new data into the buffer, otherwise we are
-            retransmitting an old segment, and the application should put that
-            data into the buffer.
-
-            If the incoming packet is a FIN, we should close the connection on
-            this side as well, and we send out a FIN and enter the LAST_ACK
-            state. We require that there is no outstanding data; otherwise the
-            sequence numbers will be screwed up. */
-
-            if (BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
-                if (uip_outstanding(uip_connr)) {
-                    goto drop;
-                }
-                uip_add_rcv_nxt(1 + uip_len);
-                uip_flags |= UIP_CLOSE;
-                if (uip_len > 0) {
-                    uip_flags |= UIP_NEWDATA;
-                }
-                UIP_APPCALL();
-                uip_connr->len = 1;
-                uip_connr->tcpstateflags = UIP_LAST_ACK;
-                uip_connr->nrtx = 0;
-tcp_send_finack:
-                BUF->flags = TCP_FIN | TCP_ACK;
-                goto tcp_send_nodata;
-            }
-
-            /* Check the URG flag. If this is set, the segment carries urgent
-               data that we must pass to the application. */
-            if ((BUF->flags & TCP_URG) != 0) {
-#if UIP_URGDATA > 0
-                uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
-                if (uip_urglen > uip_len) {
-                    /* There is more urgent data in the next segment to come. */
-                    uip_urglen = uip_len;
-                }
-                uip_add_rcv_nxt(uip_urglen);
-                uip_len -= uip_urglen;
-                uip_urgdata = uip_appdata;
-                uip_appdata += uip_urglen;
-            } else {
-                uip_urglen = 0;
-#else /* UIP_URGDATA > 0 */
-                uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]);
-                uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
-#endif /* UIP_URGDATA > 0 */
-            }
-
-            /* If uip_len > 0 we have TCP data in the packet, and we flag this
-               by setting the UIP_NEWDATA flag and update the sequence number
-               we acknowledge. If the application has stopped the dataflow
-               using uip_stop(), we must not accept any data packets from the
-               remote host. */
-            if (uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
-                uip_flags |= UIP_NEWDATA;
-                uip_add_rcv_nxt(uip_len);
-            }
-
-            /* Check if the available buffer space advertised by the other end
-               is smaller than the initial MSS for this connection. If so, we
-               set the current MSS to the window size to ensure that the
-               application does not send more data than the other end can
-               handle.
-
-               If the remote host advertises a zero window, we set the MSS to
-               the initial MSS so that the application will send an entire MSS
-               of data. This data will not be acknowledged by the receiver,
-               and the application will retransmit it. This is called the
-               "persistent timer" and uses the retransmission mechanim.
-            */
-            tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
-            if (tmp16 > uip_connr->initialmss ||
-                tmp16 == 0) {
-                tmp16 = uip_connr->initialmss;
-            }
-            uip_connr->mss = tmp16;
-
-            /* If this packet constitutes an ACK for outstanding data (flagged
-               by the UIP_ACKDATA flag, we should call the application since it
-               might want to send more data. If the incoming packet had data
-               from the peer (as flagged by the UIP_NEWDATA flag), the
-               application must also be notified.
-
-               When the application is called, the global variable uip_len
-               contains the length of the incoming data. The application can
-               access the incoming data through the global pointer
-               uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN
-               bytes into the uip_buf array.
-
-               If the application wishes to send any data, this data should be
-               put into the uip_appdata and the length of the data should be
-               put into uip_len. If the application don't have any data to
-               send, uip_len must be set to 0. */
-            if (uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {
-                uip_slen = 0;
-                UIP_APPCALL();
-
-appsend:
-
-                if (uip_flags & UIP_ABORT) {
-                    uip_slen = 0;
-                    uip_connr->tcpstateflags = UIP_CLOSED;
-                    BUF->flags = TCP_RST | TCP_ACK;
-                    goto tcp_send_nodata;
-                }
-
-                if (uip_flags & UIP_CLOSE) {
-                    uip_slen = 0;
-                    uip_connr->len = 1;
-                    uip_connr->tcpstateflags = UIP_FIN_WAIT_1;
-                    uip_connr->nrtx = 0;
-                    BUF->flags = TCP_FIN | TCP_ACK;
-                    goto tcp_send_nodata;
-                }
-
-                /* If uip_slen > 0, the application has data to be sent. */
-                if (uip_slen > 0) {
-
-                    /* If the connection has acknowledged data, the contents of
-                       the ->len variable should be discarded. */
-                    if ((uip_flags & UIP_ACKDATA) != 0) {
-                        uip_connr->len = 0;
-                    }
-
-                    /* If the ->len variable is non-zero the connection has
-                       already data in transit and cannot send anymore right
-                       now. */
-                    if (uip_connr->len == 0) {
-
-                        /* The application cannot send more than what is allowed by
-                           the mss (the minumum of the MSS and the available
-                           window). */
-                        if (uip_slen > uip_connr->mss) {
-                            uip_slen = uip_connr->mss;
-                        }
-
-                        /* Remember how much data we send out now so that we know
-                           when everything has been acknowledged. */
-                        uip_connr->len = uip_slen;
-                    } else {
-
-                        /* If the application already had unacknowledged data, we
-                           make sure that the application does not send (i.e.,
-                           retransmit) out more than it previously sent out. */
-                        uip_slen = uip_connr->len;
-                    }
-                }
-                uip_connr->nrtx = 0;
-apprexmit:
-                uip_appdata = uip_sappdata;
-
-                /* If the application has data to be sent, or if the incoming
-                   packet had new data in it, we must send out a packet. */
-                if (uip_slen > 0 && uip_connr->len > 0) {
-                    /* Add the length of the IP and TCP headers. */
-                    uip_len = uip_connr->len + UIP_TCPIP_HLEN;
-                    /* We always set the ACK flag in response packets. */
-                    BUF->flags = TCP_ACK | TCP_PSH;
-                    /* Send the packet. */
-                    goto tcp_send_noopts;
-                }
-                /* If there is no data to send, just send out a pure ACK if
-                there is newdata. */
-                if (uip_flags & UIP_NEWDATA) {
-                    uip_len = UIP_TCPIP_HLEN;
-                    BUF->flags = TCP_ACK;
-                    goto tcp_send_noopts;
-                }
-            }
-            goto drop;
-        case UIP_LAST_ACK:
-            /* We can close this connection if the peer has acknowledged our
-               FIN. This is indicated by the UIP_ACKDATA flag. */
-            if (uip_flags & UIP_ACKDATA) {
-                uip_connr->tcpstateflags = UIP_CLOSED;
-                uip_flags = UIP_CLOSE;
-                UIP_APPCALL();
-            }
-            break;
-
-        case UIP_FIN_WAIT_1:
-            /* The application has closed the connection, but the remote host
-               hasn't closed its end yet. Thus we do nothing but wait for a
-               FIN from the other side. */
-            if (uip_len > 0) {
-                uip_add_rcv_nxt(uip_len);
-            }
-            if (BUF->flags & TCP_FIN) {
-                if (uip_flags & UIP_ACKDATA) {
-                    uip_connr->tcpstateflags = UIP_TIME_WAIT;
-                    uip_connr->timer = 0;
-                    uip_connr->len = 0;
-                } else {
-                    uip_connr->tcpstateflags = UIP_CLOSING;
-                }
-                uip_add_rcv_nxt(1);
-                uip_flags = UIP_CLOSE;
-                UIP_APPCALL();
-                goto tcp_send_ack;
-            } else if (uip_flags & UIP_ACKDATA) {
-                uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
-                uip_connr->len = 0;
-                goto drop;
-            }
-            if (uip_len > 0) {
-                goto tcp_send_ack;
-            }
-            goto drop;
-
-        case UIP_FIN_WAIT_2:
-            if (uip_len > 0) {
-                uip_add_rcv_nxt(uip_len);
-            }
-            if (BUF->flags & TCP_FIN) {
-                uip_connr->tcpstateflags = UIP_TIME_WAIT;
-                uip_connr->timer = 0;
-                uip_add_rcv_nxt(1);
-                uip_flags = UIP_CLOSE;
-                UIP_APPCALL();
-                goto tcp_send_ack;
-            }
-            if (uip_len > 0) {
-                goto tcp_send_ack;
-            }
-            goto drop;
-
-        case UIP_TIME_WAIT:
-            goto tcp_send_ack;
-
-        case UIP_CLOSING:
-            if (uip_flags & UIP_ACKDATA) {
-                uip_connr->tcpstateflags = UIP_TIME_WAIT;
-                uip_connr->timer = 0;
-            }
-    }
-    goto drop;
-
-
-    /* We jump here when we are ready to send the packet, and just want
-       to set the appropriate TCP sequence numbers in the TCP header. */
-tcp_send_ack:
-    BUF->flags = TCP_ACK;
-tcp_send_nodata:
-    uip_len = UIP_IPTCPH_LEN;
-tcp_send_noopts:
-    BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4;
-tcp_send:
-    /* We're done with the input processing. We are now ready to send a
-       reply. Our job is to fill in all the fields of the TCP and IP
-       headers before calculating the checksum and finally send the
-       packet. */
-    BUF->ackno[0] = uip_connr->rcv_nxt[0];
-    BUF->ackno[1] = uip_connr->rcv_nxt[1];
-    BUF->ackno[2] = uip_connr->rcv_nxt[2];
-    BUF->ackno[3] = uip_connr->rcv_nxt[3];
-
-    BUF->seqno[0] = uip_connr->snd_nxt[0];
-    BUF->seqno[1] = uip_connr->snd_nxt[1];
-    BUF->seqno[2] = uip_connr->snd_nxt[2];
-    BUF->seqno[3] = uip_connr->snd_nxt[3];
-
-    BUF->proto = UIP_PROTO_TCP;
-
-    BUF->srcport  = uip_connr->lport;
-    BUF->destport = uip_connr->rport;
-
-    uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-    uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr);
-
-    if (uip_connr->tcpstateflags & UIP_STOPPED) {
-        /* If the connection has issued uip_stop(), we advertise a zero
-           window so that the remote host will stop sending data. */
-        BUF->wnd[0] = BUF->wnd[1] = 0;
-    } else {
-        BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8);
-        BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff);
-    }
-
-tcp_send_noconn:
-    BUF->ttl = UIP_TTL;
-#if UIP_CONF_IPV6
-    /* For IPv6, the IP length field does not include the IPv6 IP header
-       length. */
-    BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-    BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-#else /* UIP_CONF_IPV6 */
-    BUF->len[0] = (uip_len >> 8);
-    BUF->len[1] = (uip_len & 0xff);
-#endif /* UIP_CONF_IPV6 */
-
-    BUF->urgp[0] = BUF->urgp[1] = 0;
-
-    /* Calculate TCP checksum. */
-    BUF->tcpchksum = 0;
-    BUF->tcpchksum = ~(uip_tcpchksum());
-
-ip_send_nolen:
-
-#if UIP_CONF_IPV6
-    BUF->vtc = 0x60;
-    BUF->tcflow = 0x00;
-    BUF->flow = 0x00;
-#else /* UIP_CONF_IPV6 */
-    BUF->vhl = 0x45;
-    BUF->tos = 0;
-    BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
-    ++ipid;
-    BUF->ipid[0] = ipid >> 8;
-    BUF->ipid[1] = ipid & 0xff;
-    /* Calculate IP checksum. */
-    BUF->ipchksum = 0;
-    BUF->ipchksum = ~(uip_ipchksum());
-    DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
-#endif /* UIP_CONF_IPV6 */
-
-    UIP_STAT(++uip_stat.tcp.sent);
-send:
-    DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
-                 (BUF->len[0] << 8) | BUF->len[1]);
-
-    UIP_STAT(++uip_stat.ip.sent);
-    /* Return and let the caller do the actual transmission. */
-    uip_flags = 0;
-    return;
-drop:
-    uip_len = 0;
-    uip_flags = 0;
-    return;
-}
-/*---------------------------------------------------------------------------*/
-u16_t
-htons(u16_t val)
-{
-    return HTONS(val);
-}
-/*---------------------------------------------------------------------------*/
-void
-uip_send(const void *data, int len)
-{
-    if (len > 0) {
-        uip_slen = len;
-        if (data != uip_sappdata) {
-            memcpy(uip_sappdata, (data), uip_slen);
-        }
-    }
-}
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip.h
--- a/libs/Network/uip/uip/uip.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1638 +0,0 @@
-/**
- * \addtogroup uip
- * @{
- */
-
-/**
- * \file
- * Header file for the uIP TCP/IP stack.
- * \author Adam Dunkels <adam@dunkels.com>
- *
- * The uIP TCP/IP stack header file contains definitions for a number
- * of C macros that are used by uIP programs as well as internal uIP
- * structures, TCP/IP header structures and function declarations.
- *
- */
-
-
-/*
- * Copyright (c) 2001-2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $
- *
- */
-
-#ifndef __UIP_H__
-#define __UIP_H__
-
-#include "uipopt.h"
-
-/**
- * Repressentation of an IP address.
- *
- */
-typedef u16_t uip_ip4addr_t[2];
-typedef u16_t uip_ip6addr_t[8];
-#if UIP_CONF_IPV6
-typedef uip_ip6addr_t uip_ipaddr_t;
-#else /* UIP_CONF_IPV6 */
-typedef uip_ip4addr_t uip_ipaddr_t;
-#endif /* UIP_CONF_IPV6 */
-
-/*---------------------------------------------------------------------------*/
-/* First, the functions that should be called from the
- * system. Initialization, the periodic timer and incoming packets are
- * handled by the following three functions.
- */
-
-/**
- * \defgroup uipconffunc uIP configuration functions
- * @{
- *
- * The uIP configuration functions are used for setting run-time
- * parameters in uIP such as IP addresses.
- */
-
-/**
- * Set the IP address of this host.
- *
- * The IP address is represented as a 4-byte array where the first
- * octet of the IP address is put in the first member of the 4-byte
- * array.
- *
- * Example:
- \code
-
- uip_ipaddr_t addr;
-
- uip_ipaddr(&addr, 192,168,1,2);
- uip_sethostaddr(&addr);
-
- \endcode
- * \param addr A pointer to an IP address of type uip_ipaddr_t;
- *
- * \sa uip_ipaddr()
- *
- * \hideinitializer
- */
-#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr))
-
-/**
- * Get the IP address of this host.
- *
- * The IP address is represented as a 4-byte array where the first
- * octet of the IP address is put in the first member of the 4-byte
- * array.
- *
- * Example:
- \code
- uip_ipaddr_t hostaddr;
-
- uip_gethostaddr(&hostaddr);
- \endcode
- * \param addr A pointer to a uip_ipaddr_t variable that will be
- * filled in with the currently configured IP address.
- *
- * \hideinitializer
- */
-#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr)
-
-/**
- * Set the default router's IP address.
- *
- * \param addr A pointer to a uip_ipaddr_t variable containing the IP
- * address of the default router.
- *
- * \sa uip_ipaddr()
- *
- * \hideinitializer
- */
-#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr))
-
-/**
- * Set the netmask.
- *
- * \param addr A pointer to a uip_ipaddr_t variable containing the IP
- * address of the netmask.
- *
- * \sa uip_ipaddr()
- *
- * \hideinitializer
- */
-#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr))
-
-
-/**
- * Get the default router's IP address.
- *
- * \param addr A pointer to a uip_ipaddr_t variable that will be
- * filled in with the IP address of the default router.
- *
- * \hideinitializer
- */
-#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr)
-
-/**
- * Get the netmask.
- *
- * \param addr A pointer to a uip_ipaddr_t variable that will be
- * filled in with the value of the netmask.
- *
- * \hideinitializer
- */
-#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @} */
-
-/**
- * \defgroup uipinit uIP initialization functions
- * @{
- *
- * The uIP initialization functions are used for booting uIP.
- */
-
-/**
- * uIP initialization function.
- *
- * This function should be called at boot up to initilize the uIP
- * TCP/IP stack.
- */
-void uip_init(void);
-
-/**
- * uIP initialization function.
- *
- * This function may be used at boot time to set the initial ip_id.
- */
-void uip_setipid(u16_t id);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-
-/**
- * \defgroup uipdevfunc uIP device driver functions
- * @{
- *
- * These functions are used by a network device driver for interacting
- * with uIP.
- */
-
-/**
- * Process an incoming packet.
- *
- * This function should be called when the device driver has received
- * a packet from the network. The packet from the device driver must
- * be present in the uip_buf buffer, and the length of the packet
- * should be placed in the uip_len variable.
- *
- * When the function returns, there may be an outbound packet placed
- * in the uip_buf packet buffer. If so, the uip_len variable is set to
- * the length of the packet. If no packet is to be sent out, the
- * uip_len variable is set to 0.
- *
- * The usual way of calling the function is presented by the source
- * code below.
- \code
-  uip_len = devicedriver_poll();
-  if(uip_len > 0) {
-    uip_input();
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
- \endcode
- *
- * \note If you are writing a uIP device driver that needs ARP
- * (Address Resolution Protocol), e.g., when running uIP over
- * Ethernet, you will need to call the uIP ARP code before calling
- * this function:
- \code
-  #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
-  uip_len = ethernet_devicedrver_poll();
-  if(uip_len > 0) {
-    if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
-      uip_arp_ipin();
-      uip_input();
-      if(uip_len > 0) {
-        uip_arp_out();
-	ethernet_devicedriver_send();
-      }
-    } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
-      uip_arp_arpin();
-      if(uip_len > 0) {
-	ethernet_devicedriver_send();
-      }
-    }
- \endcode
- *
- * \hideinitializer
- */
-#define uip_input()        uip_process(UIP_DATA)
-
-/**
- * Periodic processing for a connection identified by its number.
- *
- * This function does the necessary periodic processing (timers,
- * polling) for a uIP TCP conneciton, and should be called when the
- * periodic uIP timer goes off. It should be called for every
- * connection, regardless of whether they are open of closed.
- *
- * When the function returns, it may have an outbound packet waiting
- * for service in the uIP packet buffer, and if so the uip_len
- * variable is set to a value larger than zero. The device driver
- * should be called to send out the packet.
- *
- * The ususal way of calling the function is through a for() loop like
- * this:
- \code
-  for(i = 0; i < UIP_CONNS; ++i) {
-    uip_periodic(i);
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
- \endcode
- *
- * \note If you are writing a uIP device driver that needs ARP
- * (Address Resolution Protocol), e.g., when running uIP over
- * Ethernet, you will need to call the uip_arp_out() function before
- * calling the device driver:
- \code
-  for(i = 0; i < UIP_CONNS; ++i) {
-    uip_periodic(i);
-    if(uip_len > 0) {
-      uip_arp_out();
-      ethernet_devicedriver_send();
-    }
-  }
- \endcode
- *
- * \param conn The number of the connection which is to be periodically polled.
- *
- * \hideinitializer
- */
-#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \
-                                uip_process(UIP_TIMER); } while (0)
-
-/**
- *
- *
- */
-#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED)
-
-/**
- * Perform periodic processing for a connection identified by a pointer
- * to its structure.
- *
- * Same as uip_periodic() but takes a pointer to the actual uip_conn
- * struct instead of an integer as its argument. This function can be
- * used to force periodic processing of a specific connection.
- *
- * \param conn A pointer to the uip_conn struct for the connection to
- * be processed.
- *
- * \hideinitializer
- */
-#define uip_periodic_conn(conn) do { uip_conn = conn; \
-                                     uip_process(UIP_TIMER); } while (0)
-
-/**
- * Reuqest that a particular connection should be polled.
- *
- * Similar to uip_periodic_conn() but does not perform any timer
- * processing. The application is polled for new data.
- *
- * \param conn A pointer to the uip_conn struct for the connection to
- * be processed.
- *
- * \hideinitializer
- */
-#define uip_poll_conn(conn) do { uip_conn = conn; \
-                                 uip_process(UIP_POLL_REQUEST); } while (0)
-
-
-#if UIP_UDP
-/**
- * Periodic processing for a UDP connection identified by its number.
- *
- * This function is essentially the same as uip_periodic(), but for
- * UDP connections. It is called in a similar fashion as the
- * uip_periodic() function:
- \code
-  for(i = 0; i < UIP_UDP_CONNS; i++) {
-    uip_udp_periodic(i);
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
- \endcode
- *
- * \note As for the uip_periodic() function, special care has to be
- * taken when using uIP together with ARP and Ethernet:
- \code
-  for(i = 0; i < UIP_UDP_CONNS; i++) {
-    uip_udp_periodic(i);
-    if(uip_len > 0) {
-      uip_arp_out();
-      ethernet_devicedriver_send();
-    }
-  }
- \endcode
- *
- * \param conn The number of the UDP connection to be processed.
- *
- * \hideinitializer
- */
-#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \
-                                uip_process(UIP_UDP_TIMER); } while (0)
-
-/**
- * Periodic processing for a UDP connection identified by a pointer to
- * its structure.
- *
- * Same as uip_udp_periodic() but takes a pointer to the actual
- * uip_conn struct instead of an integer as its argument. This
- * function can be used to force periodic processing of a specific
- * connection.
- *
- * \param conn A pointer to the uip_udp_conn struct for the connection
- * to be processed.
- *
- * \hideinitializer
- */
-#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \
-                                         uip_process(UIP_UDP_TIMER); } while (0)
-
-
-#endif /* UIP_UDP */
-
-/**
- * The uIP packet buffer.
- *
- * The uip_buf array is used to hold incoming and outgoing
- * packets. The device driver should place incoming data into this
- * buffer. When sending data, the device driver should read the link
- * level headers and the TCP/IP headers from this buffer. The size of
- * the link level headers is configured by the UIP_LLH_LEN define.
- *
- * \note The application data need not be placed in this buffer, so
- * the device driver must read it from the place pointed to by the
- * uip_appdata pointer as illustrated by the following example:
- \code
- void
- devicedriver_send(void)
- {
-    hwsend(&uip_buf[0], UIP_LLH_LEN);
-    if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
-      hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
-    } else {
-      hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
-      hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
-    }
- }
- \endcode
- */
-
-#ifdef __cplusplus
-extern "C" u8_t uip_buf[UIP_BUFSIZE+2];
-#else
-extern u8_t uip_buf[UIP_BUFSIZE+2];
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/** @} */
-
-/*---------------------------------------------------------------------------*/
-/* Functions that are used by the uIP application program. Opening and
- * closing connections, sending and receiving data, etc. is all
- * handled by the functions below.
-*/
-/**
- * \defgroup uipappfunc uIP application functions
- * @{
- *
- * Functions used by an application running of top of uIP.
- */
-
-/**
- * Start listening to the specified port.
- *
- * \note Since this function expects the port number in network byte
- * order, a conversion using HTONS() or htons() is necessary.
- *
- \code
- uip_listen(HTONS(80));
- \endcode
- *
- * \param port A 16-bit port number in network byte order.
- */
-void uip_listen(u16_t port);
-
-/**
- * Stop listening to the specified port.
- *
- * \note Since this function expects the port number in network byte
- * order, a conversion using HTONS() or htons() is necessary.
- *
- \code
- uip_unlisten(HTONS(80));
- \endcode
- *
- * \param port A 16-bit port number in network byte order.
- */
-void uip_unlisten(u16_t port);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**
- * Connect to a remote host using TCP.
- *
- * This function is used to start a new connection to the specified
- * port on the specied host. It allocates a new connection identifier,
- * sets the connection to the SYN_SENT state and sets the
- * retransmission timer to 0. This will cause a TCP SYN segment to be
- * sent out the next time this connection is periodically processed,
- * which usually is done within 0.5 seconds after the call to
- * uip_connect().
- *
- * \note This function is avaliable only if support for active open
- * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.
- *
- * \note Since this function requires the port number to be in network
- * byte order, a conversion using HTONS() or htons() is necessary.
- *
- \code
- uip_ipaddr_t ipaddr;
-
- uip_ipaddr(&ipaddr, 192,168,1,2);
- uip_connect(&ipaddr, HTONS(80));
- \endcode
- *
- * \param ripaddr The IP address of the remote hot.
- *
- * \param port A 16-bit port number in network byte order.
- *
- * \return A pointer to the uIP connection identifier for the new connection,
- * or NULL if no connection could be allocated.
- *
- */
-struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port);
-
-
-
-/**
- * \internal
- *
- * Check if a connection has outstanding (i.e., unacknowledged) data.
- *
- * \param conn A pointer to the uip_conn structure for the connection.
- *
- * \hideinitializer
- */
-#define uip_outstanding(conn) ((conn)->len)
-
-/**
- * Send data on the current connection.
- *
- * This function is used to send out a single segment of TCP
- * data. Only applications that have been invoked by uIP for event
- * processing can send data.
- *
- * The amount of data that actually is sent out after a call to this
- * funcion is determined by the maximum amount of data TCP allows. uIP
- * will automatically crop the data so that only the appropriate
- * amount of data is sent. The function uip_mss() can be used to query
- * uIP for the amount of data that actually will be sent.
- *
- * \note This function does not guarantee that the sent data will
- * arrive at the destination. If the data is lost in the network, the
- * application will be invoked with the uip_rexmit() event being
- * set. The application will then have to resend the data using this
- * function.
- *
- * \param data A pointer to the data which is to be sent.
- *
- * \param len The maximum amount of data bytes to be sent.
- *
- * \hideinitializer
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-void uip_send(const void *data, int len);
-#ifdef __cplusplus
-}
-#endif
-/**
- * The length of any incoming data that is currently avaliable (if avaliable)
- * in the uip_appdata buffer.
- *
- * The test function uip_data() must first be used to check if there
- * is any data available at all.
- *
- * \hideinitializer
- */
-/*void uip_datalen(void);*/
-#define uip_datalen()       uip_len
-
-/**
- * The length of any out-of-band data (urgent data) that has arrived
- * on the connection.
- *
- * \note The configuration parameter UIP_URGDATA must be set for this
- * function to be enabled.
- *
- * \hideinitializer
- */
-#define uip_urgdatalen()    uip_urglen
-
-/**
- * Close the current connection.
- *
- * This function will close the current connection in a nice way.
- *
- * \hideinitializer
- */
-#define uip_close()         (uip_flags = UIP_CLOSE)
-
-/**
- * Abort the current connection.
- *
- * This function will abort (reset) the current connection, and is
- * usually used when an error has occured that prevents using the
- * uip_close() function.
- *
- * \hideinitializer
- */
-#define uip_abort()         (uip_flags = UIP_ABORT)
-
-/**
- * Tell the sending host to stop sending data.
- *
- * This function will close our receiver's window so that we stop
- * receiving data for the current connection.
- *
- * \hideinitializer
- */
-#define uip_stop()          (uip_conn->tcpstateflags |= UIP_STOPPED)
-
-/**
- * Find out if the current connection has been previously stopped with
- * uip_stop().
- *
- * \hideinitializer
- */
-#define uip_stopped(conn)   ((conn)->tcpstateflags & UIP_STOPPED)
-
-/**
- * Restart the current connection, if is has previously been stopped
- * with uip_stop().
- *
- * This function will open the receiver's window again so that we
- * start receiving data for the current connection.
- *
- * \hideinitializer
- */
-#define uip_restart()         do { uip_flags |= UIP_NEWDATA; \
-                                   uip_conn->tcpstateflags &= ~UIP_STOPPED; \
-                              } while(0)
-
-
-/* uIP tests that can be made to determine in what state the current
-   connection is, and what the application function should do. */
-
-/**
- * Is the current connection a UDP connection?
- *
- * This function checks whether the current connection is a UDP connection.
- *
- * \hideinitializer
- *
- */
-#define uip_udpconnection() (uip_conn == NULL)
-
-/**
- * Is new incoming data available?
- *
- * Will reduce to non-zero if there is new data for the application
- * present at the uip_appdata pointer. The size of the data is
- * avaliable through the uip_len variable.
- *
- * \hideinitializer
- */
-#define uip_newdata()   (uip_flags & UIP_NEWDATA)
-
-/**
- * Has previously sent data been acknowledged?
- *
- * Will reduce to non-zero if the previously sent data has been
- * acknowledged by the remote host. This means that the application
- * can send new data.
- *
- * \hideinitializer
- */
-#define uip_acked()   (uip_flags & UIP_ACKDATA)
-
-/**
- * Has the connection just been connected?
- *
- * Reduces to non-zero if the current connection has been connected to
- * a remote host. This will happen both if the connection has been
- * actively opened (with uip_connect()) or passively opened (with
- * uip_listen()).
- *
- * \hideinitializer
- */
-#define uip_connected() (uip_flags & UIP_CONNECTED)
-
-/**
- * Has the connection been closed by the other end?
- *
- * Is non-zero if the connection has been closed by the remote
- * host. The application may then do the necessary clean-ups.
- *
- * \hideinitializer
- */
-#define uip_closed()    (uip_flags & UIP_CLOSE)
-
-/**
- * Has the connection been aborted by the other end?
- *
- * Non-zero if the current connection has been aborted (reset) by the
- * remote host.
- *
- * \hideinitializer
- */
-#define uip_aborted()    (uip_flags & UIP_ABORT)
-
-/**
- * Has the connection timed out?
- *
- * Non-zero if the current connection has been aborted due to too many
- * retransmissions.
- *
- * \hideinitializer
- */
-#define uip_timedout()    (uip_flags & UIP_TIMEDOUT)
-
-/**
- * Do we need to retransmit previously data?
- *
- * Reduces to non-zero if the previously sent data has been lost in
- * the network, and the application should retransmit it. The
- * application should send the exact same data as it did the last
- * time, using the uip_send() function.
- *
- * \hideinitializer
- */
-#define uip_rexmit()     (uip_flags & UIP_REXMIT)
-
-/**
- * Is the connection being polled by uIP?
- *
- * Is non-zero if the reason the application is invoked is that the
- * current connection has been idle for a while and should be
- * polled.
- *
- * The polling event can be used for sending data without having to
- * wait for the remote host to send data.
- *
- * \hideinitializer
- */
-#define uip_poll()       (uip_flags & UIP_POLL)
-
-/**
- * Get the initial maxium segment size (MSS) of the current
- * connection.
- *
- * \hideinitializer
- */
-#define uip_initialmss()             (uip_conn->initialmss)
-
-/**
- * Get the current maxium segment size that can be sent on the current
- * connection.
- *
- * The current maxiumum segment size that can be sent on the
- * connection is computed from the receiver's window and the MSS of
- * the connection (which also is available by calling
- * uip_initialmss()).
- *
- * \hideinitializer
- */
-#define uip_mss()             (uip_conn->mss)
-
-/**
- * Set up a new UDP connection.
- *
- * This function sets up a new UDP connection. The function will
- * automatically allocate an unused local port for the new
- * connection. However, another port can be chosen by using the
- * uip_udp_bind() call, after the uip_udp_new() function has been
- * called.
- *
- * Example:
- \code
- uip_ipaddr_t addr;
- struct uip_udp_conn *c;
-
- uip_ipaddr(&addr, 192,168,2,1);
- c = uip_udp_new(&addr, HTONS(12345));
- if(c != NULL) {
-   uip_udp_bind(c, HTONS(12344));
- }
- \endcode
- * \param ripaddr The IP address of the remote host.
- *
- * \param rport The remote port number in network byte order.
- *
- * \return The uip_udp_conn structure for the new connection or NULL
- * if no connection could be allocated.
- */
-struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport);
-
-/**
- * Removed a UDP connection.
- *
- * \param conn A pointer to the uip_udp_conn structure for the connection.
- *
- * \hideinitializer
- */
-#define uip_udp_remove(conn) (conn)->lport = 0
-
-/**
- * Bind a UDP connection to a local port.
- *
- * \param conn A pointer to the uip_udp_conn structure for the
- * connection.
- *
- * \param port The local port number, in network byte order.
- *
- * \hideinitializer
- */
-#define uip_udp_bind(conn, port) (conn)->lport = port
-
-/**
- * Send a UDP datagram of length len on the current connection.
- *
- * This function can only be called in response to a UDP event (poll
- * or newdata). The data must be present in the uip_buf buffer, at the
- * place pointed to by the uip_appdata pointer.
- *
- * \param len The length of the data in the uip_buf buffer.
- *
- * \hideinitializer
- */
-#define uip_udp_send(len) uip_send((char *)uip_appdata, len)
-
-/** @} */
-
-/* uIP convenience and converting functions. */
-
-/**
- * \defgroup uipconvfunc uIP conversion functions
- * @{
- *
- * These functions can be used for converting between different data
- * formats used by uIP.
- */
-
-/**
- * Construct an IP address from four bytes.
- *
- * This function constructs an IP address of the type that uIP handles
- * internally from four bytes. The function is handy for specifying IP
- * addresses to use with e.g. the uip_connect() function.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr;
- struct uip_conn *c;
-
- uip_ipaddr(&ipaddr, 192,168,1,2);
- c = uip_connect(&ipaddr, HTONS(80));
- \endcode
- *
- * \param addr A pointer to a uip_ipaddr_t variable that will be
- * filled in with the IP address.
- *
- * \param addr0 The first octet of the IP address.
- * \param addr1 The second octet of the IP address.
- * \param addr2 The third octet of the IP address.
- * \param addr3 The forth octet of the IP address.
- *
- * \hideinitializer
- */
-#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \
-                     ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \
-                     ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \
-                  } while(0)
-
-/**
- * Construct an IPv6 address from eight 16-bit words.
- *
- * This function constructs an IPv6 address.
- *
- * \hideinitializer
- */
-#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \
-                     ((u16_t *)(addr))[0] = HTONS((addr0)); \
-                     ((u16_t *)(addr))[1] = HTONS((addr1)); \
-                     ((u16_t *)(addr))[2] = HTONS((addr2)); \
-                     ((u16_t *)(addr))[3] = HTONS((addr3)); \
-                     ((u16_t *)(addr))[4] = HTONS((addr4)); \
-                     ((u16_t *)(addr))[5] = HTONS((addr5)); \
-                     ((u16_t *)(addr))[6] = HTONS((addr6)); \
-                     ((u16_t *)(addr))[7] = HTONS((addr7)); \
-                  } while(0)
-
-/**
- * Copy an IP address to another IP address.
- *
- * Copies an IP address from one place to another.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr1, ipaddr2;
-
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- uip_ipaddr_copy(&ipaddr2, &ipaddr1);
- \endcode
- *
- * \param dest The destination for the copy.
- * \param src The source from where to copy.
- *
- * \hideinitializer
- */
-#if !UIP_CONF_IPV6
-#define uip_ipaddr_copy(dest, src) do { \
-                     ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \
-                     ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \
-                  } while(0)
-#else /* !UIP_CONF_IPV6 */
-#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t))
-#endif /* !UIP_CONF_IPV6 */
-
-/**
- * Compare two IP addresses
- *
- * Compares two IP addresses.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr1, ipaddr2;
-
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
-    printf("They are the same");
- }
- \endcode
- *
- * \param addr1 The first IP address.
- * \param addr2 The second IP address.
- *
- * \hideinitializer
- */
-#if !UIP_CONF_IPV6
-#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \
-				      ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1])
-#else /* !UIP_CONF_IPV6 */
-#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
-#endif /* !UIP_CONF_IPV6 */
-
-/**
- * Compare two IP addresses with netmasks
- *
- * Compares two IP addresses with netmasks. The masks are used to mask
- * out the bits that are to be compared.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr1, ipaddr2, mask;
-
- uip_ipaddr(&mask, 255,255,255,0);
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- uip_ipaddr(&ipaddr2, 192,16,1,3);
- if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) {
-    printf("They are the same");
- }
- \endcode
- *
- * \param addr1 The first IP address.
- * \param addr2 The second IP address.
- * \param mask The netmask.
- *
- * \hideinitializer
- */
-#define uip_ipaddr_maskcmp(addr1, addr2, mask) \
-                          (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \
-                            (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \
-                           ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \
-                            (((u16_t *)addr2)[1] & ((u16_t *)mask)[1])))
-
-
-/**
- * Mask out the network part of an IP address.
- *
- * Masks out the network part of an IP address, given the address and
- * the netmask.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr1, ipaddr2, netmask;
-
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- uip_ipaddr(&netmask, 255,255,255,0);
- uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask);
- \endcode
- *
- * In the example above, the variable "ipaddr2" will contain the IP
- * address 192.168.1.0.
- *
- * \param dest Where the result is to be placed.
- * \param src The IP address.
- * \param mask The netmask.
- *
- * \hideinitializer
- */
-#define uip_ipaddr_mask(dest, src, mask) do { \
-                     ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \
-                     ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \
-                  } while(0)
-
-/**
- * Pick the first octet of an IP address.
- *
- * Picks out the first octet of an IP address.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr1(&ipaddr);
- \endcode
- *
- * In the example above, the variable "octet" will contain the value 1.
- *
- * \hideinitializer
- */
-#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8)
-
-/**
- * Pick the second octet of an IP address.
- *
- * Picks out the second octet of an IP address.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr2(&ipaddr);
- \endcode
- *
- * In the example above, the variable "octet" will contain the value 2.
- *
- * \hideinitializer
- */
-#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff)
-
-/**
- * Pick the third octet of an IP address.
- *
- * Picks out the third octet of an IP address.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr3(&ipaddr);
- \endcode
- *
- * In the example above, the variable "octet" will contain the value 3.
- *
- * \hideinitializer
- */
-#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8)
-
-/**
- * Pick the fourth octet of an IP address.
- *
- * Picks out the fourth octet of an IP address.
- *
- * Example:
- \code
- uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr4(&ipaddr);
- \endcode
- *
- * In the example above, the variable "octet" will contain the value 4.
- *
- * \hideinitializer
- */
-#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff)
-
-/**
- * Convert 16-bit quantity from host byte order to network byte order.
- *
- * This macro is primarily used for converting constants from host
- * byte order to network byte order. For converting variables to
- * network byte order, use the htons() function instead.
- *
- * \hideinitializer
- */
-#ifndef HTONS
-#   if UIP_BYTE_ORDER == UIP_BIG_ENDIAN
-#      define HTONS(n) (n)
-#   else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
-#      define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))
-#   endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
-#else
-#error "HTONS already defined!"
-#endif /* HTONS */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Convert 16-bit quantity from host byte order to network byte order.
- *
- * This function is primarily used for converting variables from host
- * byte order to network byte order. For converting constants to
- * network byte order, use the HTONS() macro instead.
- */
-#ifndef htons
-u16_t htons(u16_t val);
-#endif /* htons */
-#ifndef ntohs
-#define ntohs htons
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-/** @} */
-
-/**
- * Pointer to the application data in the packet buffer.
- *
- * This pointer points to the application data when the application is
- * called. If the application wishes to send data, the application may
- * use this space to write the data into before calling uip_send().
- */
-extern void *uip_appdata;
-
-#if UIP_URGDATA > 0
-/* u8_t *uip_urgdata:
- *
- * This pointer points to any urgent data that has been received. Only
- * present if compiled with support for urgent data (UIP_URGDATA).
- */
-extern void *uip_urgdata;
-#endif /* UIP_URGDATA > 0 */
-
-
-/**
- * \defgroup uipdrivervars Variables used in uIP device drivers
- * @{
- *
- * uIP has a few global variables that are used in device drivers for
- * uIP.
- */
-
-/**
- * The length of the packet in the uip_buf buffer.
- *
- * The global variable uip_len holds the length of the packet in the
- * uip_buf buffer.
- *
- * When the network device driver calls the uIP input function,
- * uip_len should be set to the length of the packet in the uip_buf
- * buffer.
- *
- * When sending packets, the device driver should use the contents of
- * the uip_len variable to determine the length of the outgoing
- * packet.
- *
- */
-extern u16_t uip_len;
-
-/** @} */
-
-#if UIP_URGDATA > 0
-extern u16_t uip_urglen, uip_surglen;
-#endif /* UIP_URGDATA > 0 */
-
-
-/**
- * Representation of a uIP TCP connection.
- *
- * The uip_conn structure is used for identifying a connection. All
- * but one field in the structure are to be considered read-only by an
- * application. The only exception is the appstate field whos purpose
- * is to let the application store application-specific state (e.g.,
- * file pointers) for the connection. The type of this field is
- * configured in the "uipopt.h" header file.
- */
-struct uip_conn {
-  uip_ipaddr_t ripaddr;   /**< The IP address of the remote host. */
-
-  u16_t lport;        /**< The local TCP port, in network byte order. */
-  u16_t rport;        /**< The local remote TCP port, in network byte
-			 order. */
-
-  u8_t rcv_nxt[4];    /**< The sequence number that we expect to
-			 receive next. */
-  u8_t snd_nxt[4];    /**< The sequence number that was last sent by
-                         us. */
-  u16_t len;          /**< Length of the data that was previously sent. */
-  u16_t mss;          /**< Current maximum segment size for the
-			 connection. */
-  u16_t initialmss;   /**< Initial maximum segment size for the
-			 connection. */
-  u8_t sa;            /**< Retransmission time-out calculation state
-			 variable. */
-  u8_t sv;            /**< Retransmission time-out calculation state
-			 variable. */
-  u8_t rto;           /**< Retransmission time-out. */
-  u8_t tcpstateflags; /**< TCP state and flags. */
-  u8_t timer;         /**< The retransmission timer. */
-  u8_t nrtx;          /**< The number of retransmissions for the last
-			 segment sent. */
-
-  /** The application state. */
-  uip_tcp_appstate_t appstate;
-};
-
-
-/**
- * Pointer to the current TCP connection.
- *
- * The uip_conn pointer can be used to access the current TCP
- * connection.
- */
-extern struct uip_conn *uip_conn;
-/* The array containing all uIP connections. */
-extern struct uip_conn uip_conns[UIP_CONNS];
-/**
- * \addtogroup uiparch
- * @{
- */
-
-/**
- * 4-byte array used for the 32-bit sequence number calculations.
- */
-extern u8_t uip_acc32[4];
-
-/** @} */
-
-
-#if UIP_UDP
-/**
- * Representation of a uIP UDP connection.
- */
-struct uip_udp_conn {
-  uip_ipaddr_t ripaddr;   /**< The IP address of the remote peer. */
-  u16_t lport;        /**< The local port number in network byte order. */
-  u16_t rport;        /**< The remote port number in network byte order. */
-  u8_t  ttl;          /**< Default time-to-live. */
-
-  /** The application state. */
-  uip_udp_appstate_t appstate;
-};
-
-/**
- * The current UDP connection.
- */
-extern struct uip_udp_conn *uip_udp_conn;
-extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
-#endif /* UIP_UDP */
-
-/**
- * The structure holding the TCP/IP statistics that are gathered if
- * UIP_STATISTICS is set to 1.
- *
- */
-struct uip_stats {
-  struct {
-    uip_stats_t drop;     /**< Number of dropped packets at the IP
-			     layer. */
-    uip_stats_t recv;     /**< Number of received packets at the IP
-			     layer. */
-    uip_stats_t sent;     /**< Number of sent packets at the IP
-			     layer. */
-    uip_stats_t vhlerr;   /**< Number of packets dropped due to wrong
-			     IP version or header length. */
-    uip_stats_t hblenerr; /**< Number of packets dropped due to wrong
-			     IP length, high byte. */
-    uip_stats_t lblenerr; /**< Number of packets dropped due to wrong
-			     IP length, low byte. */
-    uip_stats_t fragerr;  /**< Number of packets dropped since they
-			     were IP fragments. */
-    uip_stats_t chkerr;   /**< Number of packets dropped due to IP
-			     checksum errors. */
-    uip_stats_t protoerr; /**< Number of packets dropped since they
-			     were neither ICMP, UDP nor TCP. */
-  } ip;                   /**< IP statistics. */
-  struct {
-    uip_stats_t drop;     /**< Number of dropped ICMP packets. */
-    uip_stats_t recv;     /**< Number of received ICMP packets. */
-    uip_stats_t sent;     /**< Number of sent ICMP packets. */
-    uip_stats_t typeerr;  /**< Number of ICMP packets with a wrong
-			     type. */
-  } icmp;                 /**< ICMP statistics. */
-  struct {
-    uip_stats_t drop;     /**< Number of dropped TCP segments. */
-    uip_stats_t recv;     /**< Number of recived TCP segments. */
-    uip_stats_t sent;     /**< Number of sent TCP segments. */
-    uip_stats_t chkerr;   /**< Number of TCP segments with a bad
-			     checksum. */
-    uip_stats_t ackerr;   /**< Number of TCP segments with a bad ACK
-			     number. */
-    uip_stats_t rst;      /**< Number of recevied TCP RST (reset) segments. */
-    uip_stats_t rexmit;   /**< Number of retransmitted TCP segments. */
-    uip_stats_t syndrop;  /**< Number of dropped SYNs due to too few
-			     connections was avaliable. */
-    uip_stats_t synrst;   /**< Number of SYNs for closed ports,
-			     triggering a RST. */
-  } tcp;                  /**< TCP statistics. */
-#if UIP_UDP
-  struct {
-    uip_stats_t drop;     /**< Number of dropped UDP segments. */
-    uip_stats_t recv;     /**< Number of recived UDP segments. */
-    uip_stats_t sent;     /**< Number of sent UDP segments. */
-    uip_stats_t chkerr;   /**< Number of UDP segments with a bad
-			     checksum. */
-  } udp;                  /**< UDP statistics. */
-#endif /* UIP_UDP */
-};
-
-/**
- * The uIP TCP/IP statistics.
- *
- * This is the variable in which the uIP TCP/IP statistics are gathered.
- */
-extern struct uip_stats uip_stat;
-
-
-/*---------------------------------------------------------------------------*/
-/* All the stuff below this point is internal to uIP and should not be
- * used directly by an application or by a device driver.
- */
-/*---------------------------------------------------------------------------*/
-/* u8_t uip_flags:
- *
- * When the application is called, uip_flags will contain the flags
- * that are defined in this file. Please read below for more
- * infomation.
- */
-extern u8_t uip_flags;
-
-/* The following flags may be set in the global variable uip_flags
-   before calling the application callback. The UIP_ACKDATA,
-   UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time,
-   whereas the others are mutualy exclusive. Note that these flags
-   should *NOT* be accessed directly, but only through the uIP
-   functions/macros. */
-
-#define UIP_ACKDATA   1     /* Signifies that the outstanding data was
-			       acked and the application should send
-			       out new data instead of retransmitting
-			       the last data. */
-#define UIP_NEWDATA   2     /* Flags the fact that the peer has sent
-			       us new data. */
-#define UIP_REXMIT    4     /* Tells the application to retransmit the
-			       data that was last sent. */
-#define UIP_POLL      8     /* Used for polling the application, to
-			       check if the application has data that
-			       it wants to send. */
-#define UIP_CLOSE     16    /* The remote host has closed the
-			       connection, thus the connection has
-			       gone away. Or the application signals
-			       that it wants to close the
-			       connection. */
-#define UIP_ABORT     32    /* The remote host has aborted the
-			       connection, thus the connection has
-			       gone away. Or the application signals
-			       that it wants to abort the
-			       connection. */
-#define UIP_CONNECTED 64    /* We have got a connection from a remote
-                               host and have set up a new connection
-                               for it, or an active connection has
-                               been successfully established. */
-
-#define UIP_TIMEDOUT  128   /* The connection has been aborted due to
-			       too many retransmissions. */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/* uip_process(flag):
- *
- * The actual uIP function which does all the work.
- */
-void uip_process(u8_t flag);
-#ifdef __cplusplus
-}
-#endif
-
-/* The following flags are passed as an argument to the uip_process()
-   function. They are used to distinguish between the two cases where
-   uip_process() is called. It can be called either because we have
-   incoming data that should be processed, or because the periodic
-   timer has fired. These values are never used directly, but only in
-   the macrose defined in this file. */
-
-#define UIP_DATA          1     /* Tells uIP that there is incoming
-				   data in the uip_buf buffer. The
-				   length of the data is stored in the
-				   global variable uip_len. */
-#define UIP_TIMER         2     /* Tells uIP that the periodic timer
-				   has fired. */
-#define UIP_POLL_REQUEST  3     /* Tells uIP that a connection should
-				   be polled. */
-#define UIP_UDP_SEND_CONN 4     /* Tells uIP that a UDP datagram
-				   should be constructed in the
-				   uip_buf buffer. */
-#if UIP_UDP
-#define UIP_UDP_TIMER     5
-#endif /* UIP_UDP */
-
-/* The TCP states used in the uip_conn->tcpstateflags. */
-#define UIP_CLOSED      0
-#define UIP_SYN_RCVD    1
-#define UIP_SYN_SENT    2
-#define UIP_ESTABLISHED 3
-#define UIP_FIN_WAIT_1  4
-#define UIP_FIN_WAIT_2  5
-#define UIP_CLOSING     6
-#define UIP_TIME_WAIT   7
-#define UIP_LAST_ACK    8
-#define UIP_TS_MASK     15
-
-#define UIP_STOPPED      16
-
-/* The TCP and IP headers. */
-struct uip_tcpip_hdr {
-#if UIP_CONF_IPV6
-  /* IPv6 header. */
-  u8_t vtc,
-    tcflow;
-  u16_t flow;
-  u8_t len[2];
-  u8_t proto, ttl;
-  uip_ip6addr_t srcipaddr, destipaddr;
-#else /* UIP_CONF_IPV6 */
-  /* IPv4 header. */
-  u8_t vhl,
-    tos,
-    len[2],
-    ipid[2],
-    ipoffset[2],
-    ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-#endif /* UIP_CONF_IPV6 */
-
-  /* TCP header. */
-  u16_t srcport,
-    destport;
-  u8_t seqno[4],
-    ackno[4],
-    tcpoffset,
-    flags,
-    wnd[2];
-  u16_t tcpchksum;
-  u8_t urgp[2];
-  u8_t optdata[4];
-};
-
-/* The ICMP and IP headers. */
-struct uip_icmpip_hdr {
-#if UIP_CONF_IPV6
-  /* IPv6 header. */
-  u8_t vtc,
-    tcf;
-  u16_t flow;
-  u8_t len[2];
-  u8_t proto, ttl;
-  uip_ip6addr_t srcipaddr, destipaddr;
-#else /* UIP_CONF_IPV6 */
-  /* IPv4 header. */
-  u8_t vhl,
-    tos,
-    len[2],
-    ipid[2],
-    ipoffset[2],
-    ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-#endif /* UIP_CONF_IPV6 */
-
-  /* ICMP (echo) header. */
-  u8_t type, icode;
-  u16_t icmpchksum;
-#if !UIP_CONF_IPV6
-  u16_t id, seqno;
-#else /* !UIP_CONF_IPV6 */
-  u8_t flags, reserved1, reserved2, reserved3;
-  u8_t icmp6data[16];
-  u8_t options[1];
-#endif /* !UIP_CONF_IPV6 */
-};
-
-
-/* The UDP and IP headers. */
-struct uip_udpip_hdr {
-#if UIP_CONF_IPV6
-  /* IPv6 header. */
-  u8_t vtc,
-    tcf;
-  u16_t flow;
-  u8_t len[2];
-  u8_t proto, ttl;
-  uip_ip6addr_t srcipaddr, destipaddr;
-#else /* UIP_CONF_IPV6 */
-  /* IP header. */
-  u8_t vhl,
-    tos,
-    len[2],
-    ipid[2],
-    ipoffset[2],
-    ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-#endif /* UIP_CONF_IPV6 */
-
-  /* UDP header. */
-  u16_t srcport,
-    destport;
-  u16_t udplen;
-  u16_t udpchksum;
-};
-
-
-
-/**
- * The buffer size available for user data in the \ref uip_buf buffer.
- *
- * This macro holds the available size for user data in the \ref
- * uip_buf buffer. The macro is intended to be used for checking
- * bounds of available user data.
- *
- * Example:
- \code
- snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
- \endcode
- *
- * \hideinitializer
- */
-#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
-
-
-#define UIP_PROTO_ICMP  1
-#define UIP_PROTO_TCP   6
-#define UIP_PROTO_UDP   17
-#define UIP_PROTO_ICMP6 58
-
-/* Header sizes. */
-#if UIP_CONF_IPV6
-#define UIP_IPH_LEN    40
-#else /* UIP_CONF_IPV6 */
-#define UIP_IPH_LEN    20    /* Size of IP header */
-#endif /* UIP_CONF_IPV6 */
-#define UIP_UDPH_LEN    8    /* Size of UDP header */
-#define UIP_TCPH_LEN   20    /* Size of TCP header */
-#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN)    /* Size of IP +
-							  UDP
-							  header */
-#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN)    /* Size of IP +
-							  TCP
-							  header */
-#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN
-
-
-#if UIP_FIXEDADDR
-extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
-#else /* UIP_FIXEDADDR */
-extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
-#endif /* UIP_FIXEDADDR */
-
-
-
-/**
- * Representation of a 48-bit Ethernet address.
- */
-struct uip_eth_addr {
-  u8_t addr[6];
-};
-
-/**
- * Calculate the Internet checksum over a buffer.
- *
- * The Internet checksum is the one's complement of the one's
- * complement sum of all 16-bit words in the buffer.
- *
- * See RFC1071.
- *
- * \param buf A pointer to the buffer over which the checksum is to be
- * computed.
- *
- * \param len The length of the buffer over which the checksum is to
- * be computed.
- *
- * \return The Internet checksum of the buffer.
- */
-u16_t uip_chksum(u16_t *buf, u16_t len);
-
-/**
- * Calculate the IP header checksum of the packet header in uip_buf.
- *
- * The IP header checksum is the Internet checksum of the 20 bytes of
- * the IP header.
- *
- * \return The IP header checksum of the IP header in the uip_buf
- * buffer.
- */
-u16_t uip_ipchksum(void);
-
-/**
- * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
- *
- * The TCP checksum is the Internet checksum of data contents of the
- * TCP segment, and a pseudo-header as defined in RFC793.
- *
- * \return The TCP checksum of the TCP segment in uip_buf and pointed
- * to by uip_appdata.
- */
-u16_t uip_tcpchksum(void);
-
-/**
- * Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
- *
- * The UDP checksum is the Internet checksum of data contents of the
- * UDP segment, and a pseudo-header as defined in RFC768.
- *
- * \return The UDP checksum of the UDP segment in uip_buf and pointed
- * to by uip_appdata.
- */
-u16_t uip_udpchksum(void);
-
-
-#endif /* __UIP_H__ */
-
-
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip_arch.h
--- a/libs/Network/uip/uip/uip_arch.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/**
- * \addtogroup uip
- * {@
- */
-
-/**
- * \defgroup uiparch Architecture specific uIP functions
- * @{
- *
- * The functions in the architecture specific module implement the IP
- * check sum and 32-bit additions.
- *
- * The IP checksum calculation is the most computationally expensive
- * operation in the TCP/IP stack and it therefore pays off to
- * implement this in efficient assembler. The purpose of the uip-arch
- * module is to let the checksum functions to be implemented in
- * architecture specific assembler.
- *
- */
-
-/**
- * \file
- * Declarations of architecture specific functions.
- * \author Adam Dunkels <adam@dunkels.com>
- */
-
-/*
- * Copyright (c) 2001, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $
- *
- */
-
-#ifndef __UIP_ARCH_H__
-#define __UIP_ARCH_H__
-
-#include "uip.h"
-
-/**
- * Carry out a 32-bit addition.
- *
- * Because not all architectures for which uIP is intended has native
- * 32-bit arithmetic, uIP uses an external C function for doing the
- * required 32-bit additions in the TCP protocol processing. This
- * function should add the two arguments and place the result in the
- * global variable uip_acc32.
- *
- * \note The 32-bit integer pointed to by the op32 parameter and the
- * result in the uip_acc32 variable are in network byte order (big
- * endian).
- *
- * \param op32 A pointer to a 4-byte array representing a 32-bit
- * integer in network byte order (big endian).
- *
- * \param op16 A 16-bit integer in host byte order.
- */
-void uip_add32(u8_t *op32, u16_t op16);
-
-/**
- * Calculate the Internet checksum over a buffer.
- *
- * The Internet checksum is the one's complement of the one's
- * complement sum of all 16-bit words in the buffer.
- *
- * See RFC1071.
- *
- * \note This function is not called in the current version of uIP,
- * but future versions might make use of it.
- *
- * \param buf A pointer to the buffer over which the checksum is to be
- * computed.
- *
- * \param len The length of the buffer over which the checksum is to
- * be computed.
- *
- * \return The Internet checksum of the buffer.
- */
-u16_t uip_chksum(u16_t *buf, u16_t len);
-
-/**
- * Calculate the IP header checksum of the packet header in uip_buf.
- *
- * The IP header checksum is the Internet checksum of the 20 bytes of
- * the IP header.
- *
- * \return The IP header checksum of the IP header in the uip_buf
- * buffer.
- */
-u16_t uip_ipchksum(void);
-
-/**
- * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
- *
- * The TCP checksum is the Internet checksum of data contents of the
- * TCP segment, and a pseudo-header as defined in RFC793.
- *
- * \note The uip_appdata pointer that points to the packet data may
- * point anywhere in memory, so it is not possible to simply calculate
- * the Internet checksum of the contents of the uip_buf buffer.
- *
- * \return The TCP checksum of the TCP segment in uip_buf and pointed
- * to by uip_appdata.
- */
-u16_t uip_tcpchksum(void);
-
-u16_t uip_udpchksum(void);
-
-/** @} */
-/** @} */
-
-#endif /* __UIP_ARCH_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip_arp.c
--- a/libs/Network/uip/uip/uip_arp.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-/**
- * \addtogroup uip
- * @{
- */
-
-/**
- * \defgroup uiparp uIP Address Resolution Protocol
- * @{
- *
- * The Address Resolution Protocol ARP is used for mapping between IP
- * addresses and link level addresses such as the Ethernet MAC
- * addresses. ARP uses broadcast queries to ask for the link level
- * address of a known IP address and the host which is configured with
- * the IP address for which the query was meant, will respond with its
- * link level address.
- *
- * \note This ARP implementation only supports Ethernet.
- */
-
-/**
- * \file
- * Implementation of the ARP Address Resolution Protocol.
- * \author Adam Dunkels <adam@dunkels.com>
- *
- */
-
-/*
- * Copyright (c) 2001-2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $
- *
- */
-
-
-#include "uip_arp.h"
-
-#include <string.h>
-
-struct arp_hdr {
-  struct uip_eth_hdr ethhdr;
-  u16_t hwtype;
-  u16_t protocol;
-  u8_t hwlen;
-  u8_t protolen;
-  u16_t opcode;
-  struct uip_eth_addr shwaddr;
-  u16_t sipaddr[2];
-  struct uip_eth_addr dhwaddr;
-  u16_t dipaddr[2];
-};
-
-struct ethip_hdr {
-  struct uip_eth_hdr ethhdr;
-  /* IP header. */
-  u8_t vhl,
-    tos,
-    len[2],
-    ipid[2],
-    ipoffset[2],
-    ttl,
-    proto;
-  u16_t ipchksum;
-  u16_t srcipaddr[2],
-    destipaddr[2];
-};
-
-#define ARP_REQUEST 1
-#define ARP_REPLY   2
-
-#define ARP_HWTYPE_ETH 1
-
-struct arp_entry {
-  u16_t ipaddr[2];
-  struct uip_eth_addr ethaddr;
-  u8_t time;
-};
-
-static const struct uip_eth_addr broadcast_ethaddr =
-  {{0xff,0xff,0xff,0xff,0xff,0xff}};
-static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff};
-
-static struct arp_entry arp_table[UIP_ARPTAB_SIZE]  __attribute__ ((section ("AHBSRAM1")));
-static u16_t ipaddr[2];
-static u8_t i, c;
-
-static u8_t arptime;
-static u8_t tmpage;
-
-#define BUF   ((struct arp_hdr *)&uip_buf[0])
-#define IPBUF ((struct ethip_hdr *)&uip_buf[0])
-/*-----------------------------------------------------------------------------------*/
-/**
- * Initialize the ARP module.
- *
- */
-/*-----------------------------------------------------------------------------------*/
-void
-uip_arp_init(void)
-{
-  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-    memset(arp_table[i].ipaddr, 0, 4);
-  }
-}
-/*-----------------------------------------------------------------------------------*/
-/**
- * Periodic ARP processing function.
- *
- * This function performs periodic timer processing in the ARP module
- * and should be called at regular intervals. The recommended interval
- * is 10 seconds between the calls.
- *
- */
-/*-----------------------------------------------------------------------------------*/
-void
-uip_arp_timer(void)
-{
-  struct arp_entry *tabptr;
-
-  ++arptime;
-  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-    tabptr = &arp_table[i];
-    if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 &&
-       arptime - tabptr->time >= UIP_ARP_MAXAGE) {
-      memset(tabptr->ipaddr, 0, 4);
-    }
-  }
-
-}
-/*-----------------------------------------------------------------------------------*/
-static void
-uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr)
-{
-  register struct arp_entry *tabptr;
-  /* Walk through the ARP mapping table and try to find an entry to
-     update. If none is found, the IP -> MAC address mapping is
-     inserted in the ARP table. */
-  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-
-    tabptr = &arp_table[i];
-    /* Only check those entries that are actually in use. */
-    if(tabptr->ipaddr[0] != 0 &&
-       tabptr->ipaddr[1] != 0) {
-
-      /* Check if the source IP address of the incoming packet matches
-         the IP address in this ARP table entry. */
-      if(ipaddr[0] == tabptr->ipaddr[0] &&
-	 ipaddr[1] == tabptr->ipaddr[1]) {
-
-	/* An old entry found, update this and return. */
-	memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
-	tabptr->time = arptime;
-
-	return;
-      }
-    }
-  }
-
-  /* If we get here, no existing ARP table entry was found, so we
-     create one. */
-
-  /* First, we try to find an unused entry in the ARP table. */
-  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-    tabptr = &arp_table[i];
-    if(tabptr->ipaddr[0] == 0 &&
-       tabptr->ipaddr[1] == 0) {
-      break;
-    }
-  }
-
-  /* If no unused entry is found, we try to find the oldest entry and
-     throw it away. */
-  if(i == UIP_ARPTAB_SIZE) {
-    tmpage = 0;
-    c = 0;
-    for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-      tabptr = &arp_table[i];
-      if(arptime - tabptr->time > tmpage) {
-	tmpage = arptime - tabptr->time;
-	c = i;
-      }
-    }
-    i = c;
-    tabptr = &arp_table[i];
-  }
-
-  /* Now, i is the ARP table entry which we will fill with the new
-     information. */
-  memcpy(tabptr->ipaddr, ipaddr, 4);
-  memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
-  tabptr->time = arptime;
-}
-/*-----------------------------------------------------------------------------------*/
-/**
- * ARP processing for incoming IP packets
- *
- * This function should be called by the device driver when an IP
- * packet has been received. The function will check if the address is
- * in the ARP cache, and if so the ARP cache entry will be
- * refreshed. If no ARP cache entry was found, a new one is created.
- *
- * This function expects an IP packet with a prepended Ethernet header
- * in the uip_buf[] buffer, and the length of the packet in the global
- * variable uip_len.
- */
-/*-----------------------------------------------------------------------------------*/
-#if 0
-void
-uip_arp_ipin(void)
-{
-  uip_len -= sizeof(struct uip_eth_hdr);
-
-  /* Only insert/update an entry if the source IP address of the
-     incoming IP packet comes from a host on the local network. */
-  if((IPBUF->srcipaddr[0] & uip_netmask[0]) !=
-     (uip_hostaddr[0] & uip_netmask[0])) {
-    return;
-  }
-  if((IPBUF->srcipaddr[1] & uip_netmask[1]) !=
-     (uip_hostaddr[1] & uip_netmask[1])) {
-    return;
-  }
-  uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src));
-
-  return;
-}
-#endif /* 0 */
-/*-----------------------------------------------------------------------------------*/
-/**
- * ARP processing for incoming ARP packets.
- *
- * This function should be called by the device driver when an ARP
- * packet has been received. The function will act differently
- * depending on the ARP packet type: if it is a reply for a request
- * that we previously sent out, the ARP cache will be filled in with
- * the values from the ARP reply. If the incoming ARP packet is an ARP
- * request for our IP address, an ARP reply packet is created and put
- * into the uip_buf[] buffer.
- *
- * When the function returns, the value of the global variable uip_len
- * indicates whether the device driver should send out a packet or
- * not. If uip_len is zero, no packet should be sent. If uip_len is
- * non-zero, it contains the length of the outbound packet that is
- * present in the uip_buf[] buffer.
- *
- * This function expects an ARP packet with a prepended Ethernet
- * header in the uip_buf[] buffer, and the length of the packet in the
- * global variable uip_len.
- */
-/*-----------------------------------------------------------------------------------*/
-void
-uip_arp_arpin(void)
-{
-
-  if(uip_len < sizeof(struct arp_hdr)) {
-    uip_len = 0;
-    return;
-  }
-  uip_len = 0;
-
-  switch(BUF->opcode) {
-  case HTONS(ARP_REQUEST):
-    /* ARP request. If it asked for our address, we send out a
-       reply. */
-    if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
-      /* First, we register the one who made the request in our ARP
-	 table, since it is likely that we will do more communication
-	 with this host in the future. */
-      uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
-
-      /* The reply opcode is 2. */
-      BUF->opcode = HTONS(2);
-
-      memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6);
-      memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
-      memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-      memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6);
-
-      BUF->dipaddr[0] = BUF->sipaddr[0];
-      BUF->dipaddr[1] = BUF->sipaddr[1];
-      BUF->sipaddr[0] = uip_hostaddr[0];
-      BUF->sipaddr[1] = uip_hostaddr[1];
-
-      BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
-      uip_len = sizeof(struct arp_hdr);
-    }
-    break;
-  case HTONS(ARP_REPLY):
-    /* ARP reply. We insert or update the ARP table if it was meant
-       for us. */
-    if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
-      uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
-    }
-    break;
-  }
-
-  return;
-}
-/*-----------------------------------------------------------------------------------*/
-/**
- * Prepend Ethernet header to an outbound IP packet and see if we need
- * to send out an ARP request.
- *
- * This function should be called before sending out an IP packet. The
- * function checks the destination IP address of the IP packet to see
- * what Ethernet MAC address that should be used as a destination MAC
- * address on the Ethernet.
- *
- * If the destination IP address is in the local network (determined
- * by logical ANDing of netmask and our IP address), the function
- * checks the ARP cache to see if an entry for the destination IP
- * address is found. If so, an Ethernet header is prepended and the
- * function returns. If no ARP cache entry is found for the
- * destination IP address, the packet in the uip_buf[] is replaced by
- * an ARP request packet for the IP address. The IP packet is dropped
- * and it is assumed that they higher level protocols (e.g., TCP)
- * eventually will retransmit the dropped packet.
- *
- * If the destination IP address is not on the local network, the IP
- * address of the default router is used instead.
- *
- * When the function returns, a packet is present in the uip_buf[]
- * buffer, and the length of the packet is in the global variable
- * uip_len.
- */
-/*-----------------------------------------------------------------------------------*/
-void
-uip_arp_out(void)
-{
-  struct arp_entry *tabptr;
-
-  /* Find the destination IP address in the ARP table and construct
-     the Ethernet header. If the destination IP addres isn't on the
-     local network, we use the default router's IP address instead.
-
-     If not ARP table entry is found, we overwrite the original IP
-     packet with an ARP request for the IP address. */
-
-  /* First check if destination is a local broadcast. */
-  if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) {
-    memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6);
-  } else {
-    /* Check if the destination address is on the local network. */
-    if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) {
-      /* Destination address was not on the local network, so we need to
-	 use the default router's IP address instead of the destination
-	 address when determining the MAC address. */
-      uip_ipaddr_copy(ipaddr, uip_draddr);
-    } else {
-      /* Else, we use the destination IP address. */
-      uip_ipaddr_copy(ipaddr, IPBUF->destipaddr);
-    }
-
-    for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-      tabptr = &arp_table[i];
-      if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) {
-	break;
-      }
-    }
-
-    if(i == UIP_ARPTAB_SIZE) {
-      /* The destination address was not in our ARP table, so we
-	 overwrite the IP packet with an ARP request. */
-
-      memset(BUF->ethhdr.dest.addr, 0xff, 6);
-      memset(BUF->dhwaddr.addr, 0x00, 6);
-      memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-      memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
-
-      uip_ipaddr_copy(BUF->dipaddr, ipaddr);
-      uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr);
-      BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */
-      BUF->hwtype = HTONS(ARP_HWTYPE_ETH);
-      BUF->protocol = HTONS(UIP_ETHTYPE_IP);
-      BUF->hwlen = 6;
-      BUF->protolen = 4;
-      BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
-
-      uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN];
-
-      uip_len = sizeof(struct arp_hdr);
-      return;
-    }
-
-    /* Build an ethernet header. */
-    memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6);
-  }
-  memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-
-  IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP);
-
-  uip_len += sizeof(struct uip_eth_hdr);
-}
-/*-----------------------------------------------------------------------------------*/
-
-/** @} */
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uip_arp.h
--- a/libs/Network/uip/uip/uip_arp.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/**
- * \addtogroup uip
- * @{
- */
-
-/**
- * \addtogroup uiparp
- * @{
- */
-
-/**
- * \file
- * Macros and definitions for the ARP module.
- * \author Adam Dunkels <adam@dunkels.com>
- */
-
-
-/*
- * Copyright (c) 2001-2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $
- *
- */
-
-#ifndef __UIP_ARP_H__
-#define __UIP_ARP_H__
-
-#include "uip.h"
-
-
-extern struct uip_eth_addr uip_ethaddr;
-
-/**
- * The Ethernet header.
- */
-struct uip_eth_hdr {
-  struct uip_eth_addr dest;
-  struct uip_eth_addr src;
-  u16_t type;
-};
-
-#define UIP_ETHTYPE_ARP 0x0806
-#define UIP_ETHTYPE_IP  0x0800
-#define UIP_ETHTYPE_IP6 0x86dd
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The uip_arp_init() function must be called before any of the other
-   ARP functions. */
-void uip_arp_init(void);
-
-/* The uip_arp_ipin() function should be called whenever an IP packet
-   arrives from the Ethernet. This function refreshes the ARP table or
-   inserts a new mapping if none exists. The function assumes that an
-   IP packet with an Ethernet header is present in the uip_buf buffer
-   and that the length of the packet is in the uip_len variable. */
-/*void uip_arp_ipin(void);*/
-#define uip_arp_ipin()
-
-/* The uip_arp_arpin() should be called when an ARP packet is received
-   by the Ethernet driver. This function also assumes that the
-   Ethernet frame is present in the uip_buf buffer. When the
-   uip_arp_arpin() function returns, the contents of the uip_buf
-   buffer should be sent out on the Ethernet if the uip_len variable
-   is > 0. */
-void uip_arp_arpin(void);
-
-/* The uip_arp_out() function should be called when an IP packet
-   should be sent out on the Ethernet. This function creates an
-   Ethernet header before the IP header in the uip_buf buffer. The
-   Ethernet header will have the correct Ethernet MAC destination
-   address filled in if an ARP table entry for the destination IP
-   address (or the IP address of the default router) is present. If no
-   such table entry is found, the IP packet is overwritten with an ARP
-   request and we rely on TCP to retransmit the packet that was
-   overwritten. In any case, the uip_len variable holds the length of
-   the Ethernet frame that should be transmitted. */
-void uip_arp_out(void);
-
-/* The uip_arp_timer() function should be called every ten seconds. It
-   is responsible for flushing old entries in the ARP table. */
-void uip_arp_timer(void);
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-
-/**
- * \addtogroup uipconffunc
- * @{
- */
-
-
-/**
- * Specifiy the Ethernet MAC address.
- *
- * The ARP code needs to know the MAC address of the Ethernet card in
- * order to be able to respond to ARP queries and to generate working
- * Ethernet headers.
- *
- * \note This macro only specifies the Ethernet MAC address to the ARP
- * code. It cannot be used to change the MAC address of the Ethernet
- * card.
- *
- * \param eaddr A pointer to a struct uip_eth_addr containing the
- * Ethernet MAC address of the Ethernet card.
- *
- * \hideinitializer
- */
-#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr[0]; \
-                              uip_ethaddr.addr[1] = eaddr[1];\
-                              uip_ethaddr.addr[2] = eaddr[2];\
-                              uip_ethaddr.addr[3] = eaddr[3];\
-                              uip_ethaddr.addr[4] = eaddr[4];\
-                              uip_ethaddr.addr[5] = eaddr[5];} while(0)
-
-/** @} */
-/** @} */
-
-#endif /* __UIP_ARP_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uiplib.c
--- a/libs/Network/uip/uip/uiplib.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of
- * Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $
- *
- */
-
-
-#include "uip.h"
-#include "uiplib.h"
-
-
-/*-----------------------------------------------------------------------------------*/
-unsigned char
-uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr)
-{
-  unsigned char tmp;
-  char c;
-  unsigned char i, j;
-
-  tmp = 0;
-
-  for(i = 0; i < 4; ++i) {
-    j = 0;
-    do {
-      c = *addrstr;
-      ++j;
-      if(j > 4) {
-	return 0;
-      }
-      if(c == '.' || c == 0) {
-	*ipaddr = tmp;
-	++ipaddr;
-	tmp = 0;
-      } else if(c >= '0' && c <= '9') {
-	tmp = (tmp * 10) + (c - '0');
-      } else {
-	return 0;
-      }
-      ++addrstr;
-    } while(c != '.' && c != 0);
-  }
-  return 1;
-}
-
-/*-----------------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uiplib.h
--- a/libs/Network/uip/uip/uiplib.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/**
- * \file
- * Various uIP library functions.
- * \author
- * Adam Dunkels <adam@sics.se>
- *
- */
-
-/*
- * Copyright (c) 2002, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the following
- *    disclaimer in the documentation and/or other materials provided
- *    with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $
- *
- */
-#ifndef __UIPLIB_H__
-#define __UIPLIB_H__
-
-/**
- * \addtogroup uipconvfunc
- * @{
- */
-
-/**
- * Convert a textual representation of an IP address to a numerical representation.
- *
- * This function takes a textual representation of an IP address in
- * the form a.b.c.d and converts it into a 4-byte array that can be
- * used by other uIP functions.
- *
- * \param addrstr A pointer to a string containing the IP address in
- * textual form.
- *
- * \param addr A pointer to a 4-byte array that will be filled in with
- * the numerical representation of the address.
- *
- * \retval 0 If the IP address could not be parsed.
- * \retval Non-zero If the IP address was parsed.
- */
-unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr);
-
-/** @} */
-
-#endif /* __UIPLIB_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/uip/uipopt.h
--- a/libs/Network/uip/uip/uipopt.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,546 +0,0 @@
-/**
- * \defgroup uipopt Configuration options for uIP
- * @{
- *
- * uIP is configured using the per-project configuration file
- * uipopt.h. This file contains all compile-time options for uIP and
- * should be tweaked to match each specific project. The uIP
- * distribution contains a documented example "uipopt.h" that can be
- * copied and modified for each project.
- *
- * \note Most of the configuration options in the uipopt.h should not
- * be changed, but rather the per-project uip-conf.h file.
- */
-
-/**
- * \file
- * Configuration options for uIP.
- * \author Adam Dunkels <adam@dunkels.com>
- *
- * This file is used for tweaking various configuration options for
- * uIP. You should make a copy of this file into one of your project's
- * directories instead of editing this example "uipopt.h" file that
- * comes with the uIP distribution.
- */
-
-/*
- * Copyright (c) 2001-2003, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $
- *
- */
-
-#ifndef __UIPOPT_H__
-#define __UIPOPT_H__
-
-#ifndef UIP_LITTLE_ENDIAN
-#define UIP_LITTLE_ENDIAN  3412
-#endif /* UIP_LITTLE_ENDIAN */
-#ifndef UIP_BIG_ENDIAN
-#define UIP_BIG_ENDIAN     1234
-#endif /* UIP_BIG_ENDIAN */
-
-#include "uip-conf.h"
-
-/*------------------------------------------------------------------------------*/
-
-/**
- * \name Static configuration options
- * @{
- *
- * These configuration options can be used for setting the IP address
- * settings statically, but only if UIP_FIXEDADDR is set to 1. The
- * configuration options for a specific node includes IP address,
- * netmask and default router as well as the Ethernet address. The
- * netmask, default router and Ethernet address are appliciable only
- * if uIP should be run over Ethernet.
- *
- * All of these should be changed to suit your project.
-*/
-
-/**
- * Determines if uIP should use a fixed IP address or not.
- *
- * If uIP should use a fixed IP address, the settings are set in the
- * uipopt.h file. If not, the macros uip_sethostaddr(),
- * uip_setdraddr() and uip_setnetmask() should be used instead.
- *
- * \hideinitializer
- */
-#define UIP_FIXEDADDR    0
-
-/**
- * Ping IP address asignment.
- *
- * uIP uses a "ping" packets for setting its own IP address if this
- * option is set. If so, uIP will start with an empty IP address and
- * the destination IP address of the first incoming "ping" (ICMP echo)
- * packet will be used for setting the hosts IP address.
- *
- * \note This works only if UIP_FIXEDADDR is 0.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_PINGADDRCONF
-#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF
-#else /* UIP_CONF_PINGADDRCONF */
-#define UIP_PINGADDRCONF 0
-#endif /* UIP_CONF_PINGADDRCONF */
-
-
-/**
- * Specifies if the uIP ARP module should be compiled with a fixed
- * Ethernet MAC address or not.
- *
- * If this configuration option is 0, the macro uip_setethaddr() can
- * be used to specify the Ethernet address at run-time.
- *
- * \hideinitializer
- */
-#define UIP_FIXEDETHADDR 0
-
-/** @} */
-/*------------------------------------------------------------------------------*/
-/**
- * \name IP configuration options
- * @{
- *
- */
-/**
- * The IP TTL (time to live) of IP packets sent by uIP.
- *
- * This should normally not be changed.
- */
-#define UIP_TTL         64
-
-/**
- * Turn on support for IP packet reassembly.
- *
- * uIP supports reassembly of fragmented IP packets. This features
- * requires an additonal amount of RAM to hold the reassembly buffer
- * and the reassembly code size is approximately 700 bytes.  The
- * reassembly buffer is of the same size as the uip_buf buffer
- * (configured by UIP_BUFSIZE).
- *
- * \note IP packet reassembly is not heavily tested.
- *
- * \hideinitializer
- */
-#define UIP_REASSEMBLY 0
-
-/**
- * The maximum time an IP fragment should wait in the reassembly
- * buffer before it is dropped.
- *
- */
-#define UIP_REASS_MAXAGE 40
-
-/** @} */
-
-/*------------------------------------------------------------------------------*/
-/**
- * \name UDP configuration options
- * @{
- */
-
-/**
- * Toggles wether UDP support should be compiled in or not.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_UDP
-#define UIP_UDP UIP_CONF_UDP
-#else /* UIP_CONF_UDP */
-#define UIP_UDP           0
-#endif /* UIP_CONF_UDP */
-
-/**
- * Toggles if UDP checksums should be used or not.
- *
- * \note Support for UDP checksums is currently not included in uIP,
- * so this option has no function.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_UDP_CHECKSUMS
-#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS
-#else
-#define UIP_UDP_CHECKSUMS 0
-#endif
-
-/**
- * The maximum amount of concurrent UDP connections.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_UDP_CONNS
-#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS
-#else /* UIP_CONF_UDP_CONNS */
-#define UIP_UDP_CONNS    10
-#endif /* UIP_CONF_UDP_CONNS */
-
-/**
- * The name of the function that should be called when UDP datagrams arrive.
- *
- * \hideinitializer
- */
-
-
-/** @} */
-/*------------------------------------------------------------------------------*/
-/**
- * \name TCP configuration options
- * @{
- */
-
-/**
- * Determines if support for opening connections from uIP should be
- * compiled in.
- *
- * If the applications that are running on top of uIP for this project
- * do not need to open outgoing TCP connections, this configration
- * option can be turned off to reduce the code size of uIP.
- *
- * \hideinitializer
- */
-#define UIP_ACTIVE_OPEN 1
-
-/**
- * The maximum number of simultaneously open TCP connections.
- *
- * Since the TCP connections are statically allocated, turning this
- * configuration knob down results in less RAM used. Each TCP
- * connection requires approximatly 30 bytes of memory.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_MAX_CONNECTIONS
-#define UIP_CONNS       10
-#else /* UIP_CONF_MAX_CONNECTIONS */
-#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS
-#endif /* UIP_CONF_MAX_CONNECTIONS */
-
-
-/**
- * The maximum number of simultaneously listening TCP ports.
- *
- * Each listening TCP port requires 2 bytes of memory.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_MAX_LISTENPORTS
-#define UIP_LISTENPORTS 20
-#else /* UIP_CONF_MAX_LISTENPORTS */
-#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS
-#endif /* UIP_CONF_MAX_LISTENPORTS */
-
-/**
- * Determines if support for TCP urgent data notification should be
- * compiled in.
- *
- * Urgent data (out-of-band data) is a rarely used TCP feature that
- * very seldom would be required.
- *
- * \hideinitializer
- */
-#define UIP_URGDATA      0
-
-/**
- * The initial retransmission timeout counted in timer pulses.
- *
- * This should not be changed.
- */
-#define UIP_RTO         3
-
-/**
- * The maximum number of times a segment should be retransmitted
- * before the connection should be aborted.
- *
- * This should not be changed.
- */
-#define UIP_MAXRTX      8
-
-/**
- * The maximum number of times a SYN segment should be retransmitted
- * before a connection request should be deemed to have been
- * unsuccessful.
- *
- * This should not need to be changed.
- */
-#define UIP_MAXSYNRTX      5
-
-/**
- * The TCP maximum segment size.
- *
- * This is should not be to set to more than
- * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
- */
-#define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
-
-/**
- * The size of the advertised receiver's window.
- *
- * Should be set low (i.e., to the size of the uip_buf buffer) is the
- * application is slow to process incoming data, or high (32768 bytes)
- * if the application processes data quickly.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_RECEIVE_WINDOW
-#define UIP_RECEIVE_WINDOW UIP_TCP_MSS
-#else
-#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW
-#endif
-
-/**
- * How long a connection should stay in the TIME_WAIT state.
- *
- * This configiration option has no real implication, and it should be
- * left untouched.
- */
-#define UIP_TIME_WAIT_TIMEOUT 120
-
-
-/** @} */
-/*------------------------------------------------------------------------------*/
-/**
- * \name ARP configuration options
- * @{
- */
-
-/**
- * The size of the ARP table.
- *
- * This option should be set to a larger value if this uIP node will
- * have many connections from the local network.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_ARPTAB_SIZE
-#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE
-#else
-#define UIP_ARPTAB_SIZE 8
-#endif
-
-/**
- * The maxium age of ARP table entries measured in 10ths of seconds.
- *
- * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
- * default).
- */
-#define UIP_ARP_MAXAGE 120
-
-/** @} */
-
-/*------------------------------------------------------------------------------*/
-
-/**
- * \name General configuration options
- * @{
- */
-
-/**
- * The size of the uIP packet buffer.
- *
- * The uIP packet buffer should not be smaller than 60 bytes, and does
- * not need to be larger than 1500 bytes. Lower size results in lower
- * TCP throughput, larger size results in higher TCP throughput.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_BUFFER_SIZE
-#define UIP_BUFSIZE     400
-#else /* UIP_CONF_BUFFER_SIZE */
-#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE
-#endif /* UIP_CONF_BUFFER_SIZE */
-
-
-/**
- * Determines if statistics support should be compiled in.
- *
- * The statistics is useful for debugging and to show the user.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_STATISTICS
-#define UIP_STATISTICS  0
-#else /* UIP_CONF_STATISTICS */
-#define UIP_STATISTICS UIP_CONF_STATISTICS
-#endif /* UIP_CONF_STATISTICS */
-
-/**
- * Determines if logging of certain events should be compiled in.
- *
- * This is useful mostly for debugging. The function uip_log()
- * must be implemented to suit the architecture of the project, if
- * logging is turned on.
- *
- * \hideinitializer
- */
-#ifndef UIP_CONF_LOGGING
-#define UIP_LOGGING     0
-#else /* UIP_CONF_LOGGING */
-#define UIP_LOGGING     UIP_CONF_LOGGING
-#endif /* UIP_CONF_LOGGING */
-
-/**
- * Broadcast support.
- *
- * This flag configures IP broadcast support. This is useful only
- * together with UDP.
- *
- * \hideinitializer
- *
- */
-#ifndef UIP_CONF_BROADCAST
-#define UIP_BROADCAST 0
-#else /* UIP_CONF_BROADCAST */
-#define UIP_BROADCAST UIP_CONF_BROADCAST
-#endif /* UIP_CONF_BROADCAST */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Print out a uIP log message.
- *
- * This function must be implemented by the module that uses uIP, and
- * is called by uIP whenever a log message is generated.
- */
-void uip_log(char *msg);
-
-#ifdef __cplusplus
-}
-#endif
-/**
- * The link level header length.
- *
- * This is the offset into the uip_buf where the IP header can be
- * found. For Ethernet, this should be set to 14. For SLIP, this
- * should be set to 0.
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_LLH_LEN
-#define UIP_LLH_LEN UIP_CONF_LLH_LEN
-#else /* UIP_CONF_LLH_LEN */
-#define UIP_LLH_LEN     14
-#endif /* UIP_CONF_LLH_LEN */
-
-/** @} */
-/*------------------------------------------------------------------------------*/
-/**
- * \name CPU architecture configuration
- * @{
- *
- * The CPU architecture configuration is where the endianess of the
- * CPU on which uIP is to be run is specified. Most CPUs today are
- * little endian, and the most notable exception are the Motorolas
- * which are big endian. The BYTE_ORDER macro should be changed to
- * reflect the CPU architecture on which uIP is to be run.
- */
-
-/**
- * The byte order of the CPU architecture on which uIP is to be run.
- *
- * This option can be either BIG_ENDIAN (Motorola byte order) or
- * LITTLE_ENDIAN (Intel byte order).
- *
- * \hideinitializer
- */
-#ifdef UIP_CONF_BYTE_ORDER
-#define UIP_BYTE_ORDER     UIP_CONF_BYTE_ORDER
-#else /* UIP_CONF_BYTE_ORDER */
-#define UIP_BYTE_ORDER     UIP_LITTLE_ENDIAN
-#endif /* UIP_CONF_BYTE_ORDER */
-
-/** @} */
-/*------------------------------------------------------------------------------*/
-
-/**
- * \name Appication specific configurations
- * @{
- *
- * An uIP application is implemented using a single application
- * function that is called by uIP whenever a TCP/IP event occurs. The
- * name of this function must be registered with uIP at compile time
- * using the UIP_APPCALL definition.
- *
- * uIP applications can store the application state within the
- * uip_conn structure by specifying the type of the application
- * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.
- *
- * The file containing the definitions must be included in the
- * uipopt.h file.
- *
- * The following example illustrates how this can look.
- \code
-
-void httpd_appcall(void);
-#define UIP_APPCALL     httpd_appcall
-
-struct httpd_state {
-  u8_t state;
-  u16_t count;
-  char *dataptr;
-  char *script;
-};
-typedef struct httpd_state uip_tcp_appstate_t
- \endcode
- */
-
-/**
- * \var #define UIP_APPCALL
- *
- * The name of the application function that uIP should call in
- * response to TCP/IP events.
- *
- */
-
-/**
- * \var typedef uip_tcp_appstate_t
- *
- * The type of the application state that is to be stored in the
- * uip_conn structure. This usually is typedef:ed to a struct holding
- * application state information.
- */
-
-/**
- * \var typedef uip_udp_appstate_t
- *
- * The type of the application state that is to be stored in the
- * uip_conn structure. This usually is typedef:ed to a struct holding
- * application state information.
- */
-/** @} */
-/** @} */
-
-#endif /* __UIPOPT_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/http-strings
--- a/libs/Network/uip/webserver/http-strings	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-http_http "http://"
-http_200 "200 "
-http_301 "301 "
-http_302 "302 "
-http_get "GET "
-http_post "POST "
-http_10 "HTTP/1.0"
-http_11 "HTTP/1.1"
-http_content_type "content-type: "
-http_content_length "Content-Length: "
-http_cache_control "Cache-Control: "
-http_no_cache "no-cache"
-http_texthtml "text/html"
-http_location "location: "
-http_host "host: "
-http_crnl "\r\n"
-http_index_html "/index.html"
-http_404_html "/404.html"
-http_referer "Referer:"
-http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0\r\nConnection: close\r\n"
-http_header_304 "HTTP/1.0 304 Not Modified\r\nServer: uIP/1.0\r\nConnection: close\r\nExpires: Thu, 31 Dec 2037 23:55:55 GMT\r\nCache-Control: max-age=315360000\r\nX-Cache: HIT\r\n"
-http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0\r\nConnection: close\r\n"
-http_header_503 "HTTP/1.0 503 Failed\r\nServer: uIP/1.0\r\nConnection: close\r\n"
-http_content_type_plain "Content-type: text/plain\r\n\r\n"
-http_content_type_html "Content-type: text/html\r\n\r\n"
-http_content_type_css  "Content-type: text/css\r\n\r\n"
-http_content_type_text "Content-type: text/text\r\n\r\n"
-http_content_type_png  "Content-type: image/png\r\n\r\n"
-http_content_type_gif  "Content-type: image/gif\r\n\r\n"
-http_content_type_jpg  "Content-type: image/jpeg\r\n\r\n"
-http_content_type_binary "Content-type: application/octet-stream\r\n\r\n"
-http_html ".html"
-http_shtml ".shtml"
-http_htm ".htm"
-http_css ".css"
-http_png ".png"
-http_gif ".gif"
-http_jpg ".jpg"
-http_text ".txt"
-http_txt ".txt"
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/http-strings.c
--- a/libs/Network/uip/webserver/http-strings.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-const char http_http[8] = 
-/* "http://" */
-{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, };
-const char http_200[5] = 
-/* "200 " */
-{0x32, 0x30, 0x30, 0x20, };
-const char http_301[5] = 
-/* "301 " */
-{0x33, 0x30, 0x31, 0x20, };
-const char http_302[5] = 
-/* "302 " */
-{0x33, 0x30, 0x32, 0x20, };
-const char http_get[5] = 
-/* "GET " */
-{0x47, 0x45, 0x54, 0x20, };
-const char http_post[6] = 
-/* "POST " */
-{0x50, 0x4f, 0x53, 0x54, 0x20, };
-const char http_10[9] = 
-/* "HTTP/1.0" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, };
-const char http_11[9] = 
-/* "HTTP/1.1" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, };
-const char http_content_type[15] = 
-/* "content-type: " */
-{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, };
-const char http_content_length[17] = 
-/* "Content-Length: " */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, };
-const char http_cache_control[16] = 
-/* "Cache-Control: " */
-{0x43, 0x61, 0x63, 0x68, 0x65, 0x2d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x20, };
-const char http_no_cache[9] = 
-/* "no-cache" */
-{0x6e, 0x6f, 0x2d, 0x63, 0x61, 0x63, 0x68, 0x65, };
-const char http_texthtml[10] = 
-/* "text/html" */
-{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, };
-const char http_location[11] = 
-/* "location: " */
-{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };
-const char http_host[7] = 
-/* "host: " */
-{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, };
-const char http_crnl[3] = 
-/* "\r\n" */
-{0xd, 0xa, };
-const char http_index_html[12] = 
-/* "/index.html" */
-{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
-const char http_404_html[10] = 
-/* "/404.html" */
-{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
-const char http_referer[9] = 
-/* "Referer:" */
-{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, };
-const char http_header_200[54] = 
-/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0\r\nConnection: close\r\n" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
-const char http_header_304[152] = 
-/* "HTTP/1.0 304 Not Modified\r\nServer: uIP/1.0\r\nConnection: close\r\nExpires: Thu, 31 Dec 2037 23:55:55 GMT\r\nCache-Control: max-age=315360000\r\nX-Cache: HIT\r\n" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x33, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x33, 0x31, 0x20, 0x44, 0x65, 0x63, 0x20, 0x32, 0x30, 0x33, 0x37, 0x20, 0x32, 0x33, 0x3a, 0x35, 0x35, 0x3a, 0x35, 0x35, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x61, 0x63, 0x68, 0x65, 0x2d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, 0x3d, 0x33, 0x31, 0x35, 0x33, 0x36, 0x30, 0x30, 0x30, 0x30, 0xd, 0xa, 0x58, 0x2d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x3a, 0x20, 0x48, 0x49, 0x54, 0xd, 0xa, };
-const char http_header_404[61] = 
-/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0\r\nConnection: close\r\n" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
-const char http_header_503[58] = 
-/* "HTTP/1.0 503 Failed\r\nServer: uIP/1.0\r\nConnection: close\r\n" */
-{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x35, 0x30, 0x33, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
-const char http_content_type_plain[29] = 
-/* "Content-type: text/plain\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_html[28] = 
-/* "Content-type: text/html\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_css [27] = 
-/* "Content-type: text/css\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_text[28] = 
-/* "Content-type: text/text\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_png [28] = 
-/* "Content-type: image/png\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_gif [28] = 
-/* "Content-type: image/gif\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_jpg [29] = 
-/* "Content-type: image/jpeg\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, };
-const char http_content_type_binary[43] = 
-/* "Content-type: application/octet-stream\r\n\r\n" */
-{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, };
-const char http_html[6] = 
-/* ".html" */
-{0x2e, 0x68, 0x74, 0x6d, 0x6c, };
-const char http_shtml[7] = 
-/* ".shtml" */
-{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, };
-const char http_htm[5] = 
-/* ".htm" */
-{0x2e, 0x68, 0x74, 0x6d, };
-const char http_css[5] = 
-/* ".css" */
-{0x2e, 0x63, 0x73, 0x73, };
-const char http_png[5] = 
-/* ".png" */
-{0x2e, 0x70, 0x6e, 0x67, };
-const char http_gif[5] = 
-/* ".gif" */
-{0x2e, 0x67, 0x69, 0x66, };
-const char http_jpg[5] = 
-/* ".jpg" */
-{0x2e, 0x6a, 0x70, 0x67, };
-const char http_text[5] = 
-/* ".txt" */
-{0x2e, 0x74, 0x78, 0x74, };
-const char http_txt[5] = 
-/* ".txt" */
-{0x2e, 0x74, 0x78, 0x74, };
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/http-strings.h
--- a/libs/Network/uip/webserver/http-strings.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-extern const char http_http[8];
-extern const char http_200[5];
-extern const char http_301[5];
-extern const char http_302[5];
-extern const char http_get[5];
-extern const char http_post[6];
-extern const char http_10[9];
-extern const char http_11[9];
-extern const char http_content_type[15];
-extern const char http_content_length[17];
-extern const char http_cache_control[16];
-extern const char http_no_cache[9];
-extern const char http_texthtml[10];
-extern const char http_location[11];
-extern const char http_host[7];
-extern const char http_crnl[3];
-extern const char http_index_html[12];
-extern const char http_404_html[10];
-extern const char http_referer[9];
-extern const char http_header_200[54];
-extern const char http_header_304[152];
-extern const char http_header_404[61];
-extern const char http_header_503[58];
-extern const char http_content_type_plain[29];
-extern const char http_content_type_html[28];
-extern const char http_content_type_css [27];
-extern const char http_content_type_text[28];
-extern const char http_content_type_png [28];
-extern const char http_content_type_gif [28];
-extern const char http_content_type_jpg [29];
-extern const char http_content_type_binary[43];
-extern const char http_html[6];
-extern const char http_shtml[7];
-extern const char http_htm[5];
-extern const char http_css[5];
-extern const char http_png[5];
-extern const char http_gif[5];
-extern const char http_jpg[5];
-extern const char http_text[5];
-extern const char http_txt[5];
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs.c
--- a/libs/Network/uip/webserver/httpd-fs.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-
-/*
- * Copyright (c) 2001, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $
- */
-
-#include "httpd.h"
-#include "httpd-fs.h"
-#include "httpd-fsdata.h"
-
-#ifndef NULL
-#define NULL 0
-#endif /* NULL */
-
-#include "httpd-fsdata2.h"
-
-#if HTTPD_FS_STATISTICS
-static u16_t count[HTTPD_FS_NUMFILES];
-#endif /* HTTPD_FS_STATISTICS */
-
-/*-----------------------------------------------------------------------------------*/
-static u8_t
-httpd_fs_strcmp(const char *str1, const char *str2)
-{
-  u8_t i;
-  i = 0;
- loop:
-
-  if(str2[i] == 0 ||
-     str1[i] == '\r' ||
-     str1[i] == '\n') {
-    return 0;
-  }
-
-  if(str1[i] != str2[i]) {
-    return 1;
-  }
-
-
-  ++i;
-  goto loop;
-}
-/*-----------------------------------------------------------------------------------*/
-int
-httpd_fs_open(const char *name, struct httpd_fs_file *file)
-{
-#if HTTPD_FS_STATISTICS
-  u16_t i = 0;
-#endif /* HTTPD_FS_STATISTICS */
-  struct httpd_fsdata_file_noconst *f;
-
-  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
-      f != NULL;
-      f = (struct httpd_fsdata_file_noconst *)f->next) {
-
-    if(httpd_fs_strcmp(name, f->name) == 0) {
-      file->data = f->data;
-      file->len = f->len;
-#if HTTPD_FS_STATISTICS
-      ++count[i];
-#endif /* HTTPD_FS_STATISTICS */
-      return 1;
-    }
-#if HTTPD_FS_STATISTICS
-    ++i;
-#endif /* HTTPD_FS_STATISTICS */
-
-  }
-  return 0;
-}
-/*-----------------------------------------------------------------------------------*/
-void
-httpd_fs_init(void)
-{
-#if HTTPD_FS_STATISTICS
-  u16_t i;
-  for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
-    count[i] = 0;
-  }
-#endif /* HTTPD_FS_STATISTICS */
-}
-/*-----------------------------------------------------------------------------------*/
-#if HTTPD_FS_STATISTICS
-u16_t httpd_fs_count
-(char *name)
-{
-  struct httpd_fsdata_file_noconst *f;
-  u16_t i;
-
-  i = 0;
-  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
-      f != NULL;
-      f = (struct httpd_fsdata_file_noconst *)f->next) {
-
-    if(httpd_fs_strcmp(name, f->name) == 0) {
-      return count[i];
-    }
-    ++i;
-  }
-  return 0;
-}
-#endif /* HTTPD_FS_STATISTICS */
-/*-----------------------------------------------------------------------------------*/
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs.h
--- a/libs/Network/uip/webserver/httpd-fs.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2001, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $
- */
-#ifndef __HTTPD_FS_H__
-#define __HTTPD_FS_H__
-
-#define HTTPD_FS_STATISTICS 1
-
-struct httpd_fs_file {
-  char *data;
-  int len;
-};
-
-/* file must be allocated by caller and will be filled in
-   by the function. */
-int httpd_fs_open(const char *name, struct httpd_fs_file *file);
-
-#ifdef HTTPD_FS_STATISTICS
-#if HTTPD_FS_STATISTICS == 1
-u16_t httpd_fs_count(char *name);
-#endif /* HTTPD_FS_STATISTICS */
-#endif /* HTTPD_FS_STATISTICS */
-
-void httpd_fs_init(void);
-
-#endif /* __HTTPD_FS_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs/404.html
--- a/libs/Network/uip/webserver/httpd-fs/404.html	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<html>
-  <body bgcolor="white">
-    <center>
-      <h1>404 - file not found</h1>
-      <h3>Go <a href="/">here</a> instead.</h3>
-    </center>
-  </body>
-</html>
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs/img/control_xy.png
Binary file libs/Network/uip/webserver/httpd-fs/img/control_xy.png has changed
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs/img/control_z.png
Binary file libs/Network/uip/webserver/httpd-fs/img/control_z.png has changed
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fs/index.html
--- a/libs/Network/uip/webserver/httpd-fs/index.html	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-<!doctype html>
-<head>
-	<meta charset="utf-8">
-	<title>Single Command</title>
-	<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
-	<script type=text/javascript language=JavaScript>
-  var concentric_circle_radii = [11, 45, 69, 94, 115];
-  var center = [124, 121];
-  var spacer = 7;
-  var zbutton_ydistances = [7, 30, 55, 83];
-  var zcenter = [30, 118];
-
-function runCommand(cmd) {
-  // Get some values from elements on the page:
-  var $form = $( "#commandForm" );
-  cmd += "\n";
-  url = "/command_silent"; // $form.attr( "action" );
-  // Send the data using post
-  var posting = $.post( url, cmd );
-  // Put the results in a div
-  // posting.done(function( data ) {
-  //   $( "#result" ).empty();
-  //   $.each(data.split('\n'), function(index) {
-  //     $( "#result" ).append( this + '<br/>' );
-  //   });
-  // });
-}
-
-function lookupConcentric(radius){
-  var length = concentric_circle_radii.length;
-  for (i=0;i<=length;i++) {
-    if (radius < concentric_circle_radii[i]) return(i);
-  }
-  return(length);
-}
-
-function getQuadrantConcentricFromPosition(x,y) {
-  var rel_x = x - center[0]
-  var rel_y = y - center[1]
-  var radius = Math.sqrt(Math.pow(Math.abs(rel_x),2) + Math.pow(Math.abs(rel_y),2))
-  if (rel_x > rel_y && rel_x > -rel_y) {
-    quadrant = 0; // Right
-  } else if (rel_x <= rel_y && rel_x > -rel_y) {
-    quadrant = 3; // Down
-  } else if (rel_x > rel_y && rel_x < -rel_y) {
-    quadrant = 1; // Up
-  } else {
-    quadrant = 2; // Left
-  }
-  var idx = lookupConcentric(radius);
-  return [quadrant, idx]
-}
-
-function clickXY(event){
-  var pos_x = event.offsetX?(event.offsetX):event.pageX-document.getElementById("control_xy").offsetLeft;
-  var pos_y = event.offsetY?(event.offsetY):event.pageY-document.getElementById("control_xy").offsetTop;
-  var codes = getQuadrantConcentricFromPosition(pos_x,pos_y);
-  var quadrant = codes[0], concentric = codes[1];
-  if (concentric < 5) { // movement button pressed
-    var xdir = [1, 0, -1, 0, 0, 0][quadrant];
-    var ydir = [0, 1, 0, -1, 0, 0][quadrant];
-    var magnitude = Math.pow(10, concentric - 2);
-    if (xdir != 0) {
-      command = "G1 X" + (magnitude * xdir) + " F" + document.getElementById("xy_velocity").value;
-    } else {
-      command = "G1 Y" + (magnitude * ydir) + " F" + document.getElementById("xy_velocity").value;
-    }
-    runCommand("G91 " + command + " G90");
-  } else { // home button pressed
-    if (pos_x < 49 && pos_y < 49) { // home x button
-      command = "G28 X0";
-    } else if (pos_x > 200 && pos_y < 49) { //home y button
-      command = "G28 Y0";
-    } else if (pos_x < 49 && pos_y > 200) { // home all button
-      command = "G28";
-    } else { // home z button
-      command = "G28 Z0";
-    }
-    runCommand(command);
-  }
-}
-
-function lookupRange(ydist) {
-  var length = zbutton_ydistances.length;
-  for (i=0;i<length;i++) {
-    if (ydist < zbutton_ydistances[i]) return i;
-  }
-}
-
-function clickZ(event){
-  //var pos_x = event.offsetX?(event.offsetX):event.pageX-document.getElementById("control_z").offsetLeft;
-  var pos_y = event.offsetY?(event.offsetY):event.pageY-document.getElementById("control_z").offsetTop;
-  var ydelta = zcenter[1] - pos_y;
-  var range = lookupRange(Math.abs(ydelta));
-  var direction = (ydelta > 0)?1:-1;
-  if (range < 4) {
-    runCommand("G91 G1 Z" + (Math.pow(10,range-2) * direction) + " F" + document.getElementById("z_velocity").value + " G90");
-  }
-}
-
-function extrude(event,a,b) {
-  var length = document.getElementById("extrude_length").value;
-  var velocity = document.getElementById("extrude_velocity").value;
-  var direction = (event.currentTarget.id=='extrude')?1:-1;
-  runCommand("G91 G1 E" + (length * direction) + " F" + velocity + " G90");
-}
-
-function motorsOff(event) {
-  runCommand("M18");
-}
-
-function heatSet(event) {
-  var type = (event.currentTarget.id=='heat_set')?104:140;
-  var temperature = (type==104)?document.getElementById("heat_value").value:document.getElementById("bed_value").value;
-  runCommand("M" + type + " S" + temperature);
-}
-
-function heatOff(event) {
-  var type = (event.currentTarget.id=='heat_off')?104:140;
-  runCommand("M" + type + " S0");
-}
-
-</script>
-</head>
-
-<body>
-    <h1>Welcome to Smoothie web interface</h1>
-
-<button id=motors_off onclick=motorsOff(event)>Motors Off</button>
-XY:<input type=text id=xy_velocity size=4 value=3000 style=width:50px>mm/min
-Z:<input type=text id=z_velocity size=3 value=200 style=width:40px>
-<br>
-<img id=control_xy src=img/control_xy.png onclick=clickXY(event)>
-<img id=control_z src=img/control_z.png onclick=clickZ(event)>
-<br>
-<table><tr><td>
-<table>
-<tr>
-<td style=text-align:right>Heat:</td>
-<td><button id=heat_off onclick=heatOff(event)>Off</button></td>
-<td><input type=text id=heat_value size=3 style=width:40px value=0></td>
-<td><button id=heat_set onclick=heatSet(event)>Set</button></td>
-</tr>
-<tr>
-<td style=text-align:right>Bed:</td>
-<td><button id=bed_off onclick=heatOff(event)>Off</button></td>
-<td><input type=text id=bed_value size=3 style=width:40px value=0></td>
-<td><button id=bed_set onclick=heatSet(event)>Set</button></td>
-</tr>
-</table>
-</td><td valign=top>
-<button id=get_temperature onclick=runCommand("M105")>Get Temperature</button>
-</td></tr></table>
-<br>
-<button id=extrude onclick=extrude(event)>Extrude</button>
-<button id=reverse onclick=extrude(event)>Reverse</button><br>
-<input type=text id=extrude_length value=5 size=3 style=width:35px>
-mm @
-<input type=text id=extrude_velocity value=100 size=3 style=width:40px>
-mm/min
-
-    <h2>Commands</h2>
-	<form action="/command" id="commandForm">
-		<input type="text" name="commandText" placeholder="Send Command...">
-		<input type="submit" value="Send">
-	</form>
-	<!-- the result of the command will be rendered inside this div -->
-	<div id="result"></div>
-	<script>
-		// Attach a submit handler to the form
-		$( "#commandForm" ).submit(function( event ) {
-			// Stop form from submitting normally
-			event.preventDefault();
-			// Get some values from elements on the page:
-			var $form = $( this );
-			command = $form.find( "input[name='commandText']" ).val();
-			command += "\n";
-			url = $form.attr( "action" );
-			// Send the data using post
-			var posting = $.post( url, command );
-			// Put the results in a div
-			posting.done(function( data ) {
-				$( "#result" ).empty();
-                $.each(data.split('\n'), function(index) {
-                    $( "#result" ).append( this + '<br/>' );
-                });
-			});
-		});
-	</script>
-
-	<h2> Upload File </h2>
-	<input type="file" id="files" name="files[]" onchange="upload();" />
-
-	<h3>Uploading file(s)</h3>
-	<output id="list"></output>
-    <div id="progress"></div>
-    <div id="uploadresult"></div>
-	<script>
-	function handleFileSelect(evt) {
-	    var files = evt.target.files; // handleFileSelectist object
-
-	    // files is a FileList of File objects. List some properties.
-	    var output = [];
-	    for (var i = 0, f; f = files[i]; i++) {
-	    	output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
-	    		f.size, ' bytes, last modified: ',
-	    		f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
-	    		'</li>');
-	    }
-	    document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
-	}
-
-	document.getElementById('files').addEventListener('change', handleFileSelect, false);
-
-
-	function upload() {
-        // take the file from the input
-        var file = document.getElementById('files').files[0];
-        var reader = new FileReader();
-        reader.readAsBinaryString(file); // alternatively you can use readAsDataURL
-        reader.onloadend  = function(evt)
-        {
-            // create XHR instance
-            xhr = new XMLHttpRequest();
-
-            // send the file through POST
-            xhr.open("POST", 'upload', true);
-			xhr.setRequestHeader('X-Filename', file.name);
-
-            // make sure we have the sendAsBinary method on all browsers
-            XMLHttpRequest.prototype.mySendAsBinary = function(text){
-                var data = new ArrayBuffer(text.length);
-                var ui8a = new Uint8Array(data, 0);
-                for (var i = 0; i < text.length; i++) ui8a[i] = (text.charCodeAt(i) & 0xff);
-
-                if(typeof window.Blob == "function")
-                {
-                     var blob = new Blob([data]);
-                }else{
-                     var bb = new (window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)();
-                     bb.append(data);
-                     var blob = bb.getBlob();
-                }
-
-                this.send(blob);
-            }
-
-            // let's track upload progress
-            var eventSource = xhr.upload || xhr;
-            eventSource.addEventListener("progress", function(e) {
-                // get percentage of how much of the current file has been sent
-                var position = e.position || e.loaded;
-                var total = e.totalSize || e.total;
-                var percentage = Math.round((position/total)*100);
-
-                // here you should write your own code how you wish to proces this
-                $( "#progress" ).empty().append('uploaded ' + percentage + '%');
-            });
-
-            // state change observer - we need to know when and if the file was successfully uploaded
-            xhr.onreadystatechange = function()
-            {
-                if(xhr.readyState == 4)
-                {
-                    if(xhr.status == 200)
-                    {
-                        // process success
-                        $( "#uploadresult" ).empty().append( 'Uploaded Ok');
-                    }else{
-                        // process error
-                        $( "#uploadresult" ).empty().append( 'Uploaded Failed');
-                    }
-                }
-            };
-
-            // start sending
-            xhr.mySendAsBinary(evt.target.result);
-        };
-	}
-	</script>
-
-</body>
-</html>
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fsdata.h
--- a/libs/Network/uip/webserver/httpd-fsdata.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2001, Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $
- */
-#ifndef __HTTPD_FSDATA_H__
-#define __HTTPD_FSDATA_H__
-
-#undef HTTPD_FS_STATISTICS
-
-#include "uip.h"
-
-
-struct httpd_fsdata_file {
-  const struct httpd_fsdata_file *next;
-//  const char *name;
-//  const char *data;
-  const unsigned char *name;
-  const unsigned char *data;
-  const int len;
-#ifdef HTTPD_FS_STATISTICS
-#if HTTPD_FS_STATISTICS == 1
-  u16_t count;
-#endif /* HTTPD_FS_STATISTICS */
-#endif /* HTTPD_FS_STATISTICS */
-};
-
-struct httpd_fsdata_file_noconst {
-  struct httpd_fsdata_file *next;
-  char *name;
-  char *data;
-  int len;
-#ifdef HTTPD_FS_STATISTICS
-#if HTTPD_FS_STATISTICS == 1
-  u16_t count;
-#endif /* HTTPD_FS_STATISTICS */
-#endif /* HTTPD_FS_STATISTICS */
-};
-
-#endif /* __HTTPD_FSDATA_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd-fsdata2.h
--- a/libs/Network/uip/webserver/httpd-fsdata2.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8225 +0,0 @@
-static const unsigned char data_index_html[] = {
-	/* /index.html */
-	0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
-	0x3c, 0x21, 0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 
-	0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x3c, 0x68, 0x65, 0x61, 
-	0x64, 0x3e, 0xa, 0x9, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 
-	0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x75, 
-	0x74, 0x66, 0x2d, 0x38, 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x74, 
-	0x69, 0x74, 0x6c, 0x65, 0x3e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 
-	0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3c, 
-	0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x9, 0x3c, 
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x72, 0x63, 
-	0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 
-	0x6f, 0x64, 0x65, 0x2e, 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 
-	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x71, 0x75, 0x65, 0x72, 
-	0x79, 0x2d, 0x31, 0x2e, 0x39, 0x2e, 0x31, 0x2e, 0x6a, 0x73, 
-	0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 
-	0x3e, 0xa, 0x9, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 
-	0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x74, 0x65, 0x78, 0x74, 
-	0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 
-	0x74, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 
-	0x3d, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 
-	0x74, 0x3e, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x63, 
-	0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x5f, 
-	0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x64, 
-	0x69, 0x69, 0x20, 0x3d, 0x20, 0x5b, 0x31, 0x31, 0x2c, 0x20, 
-	0x34, 0x35, 0x2c, 0x20, 0x36, 0x39, 0x2c, 0x20, 0x39, 0x34, 
-	0x2c, 0x20, 0x31, 0x31, 0x35, 0x5d, 0x3b, 0xa, 0x20, 0x20, 
-	0x76, 0x61, 0x72, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 
-	0x20, 0x3d, 0x20, 0x5b, 0x31, 0x32, 0x34, 0x2c, 0x20, 0x31, 
-	0x32, 0x31, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x20, 0x3d, 0x20, 
-	0x37, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x7a, 
-	0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x79, 0x64, 0x69, 
-	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x3d, 0x20, 
-	0x5b, 0x37, 0x2c, 0x20, 0x33, 0x30, 0x2c, 0x20, 0x35, 0x35, 
-	0x2c, 0x20, 0x38, 0x33, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x76, 
-	0x61, 0x72, 0x20, 0x7a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 
-	0x20, 0x3d, 0x20, 0x5b, 0x33, 0x30, 0x2c, 0x20, 0x31, 0x31, 
-	0x38, 0x5d, 0x3b, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 
-	0x69, 0x6f, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x43, 0x6f, 0x6d, 
-	0x6d, 0x61, 0x6e, 0x64, 0x28, 0x63, 0x6d, 0x64, 0x29, 0x20, 
-	0x7b, 0xa, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x65, 0x74, 
-	0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 
-	0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x65, 0x6c, 
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x6e, 0x20, 
-	0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3a, 0xa, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x24, 0x66, 0x6f, 0x72, 
-	0x6d, 0x20, 0x3d, 0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x63, 
-	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x46, 0x6f, 0x72, 0x6d, 
-	0x22, 0x20, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6d, 0x64, 
-	0x20, 0x2b, 0x3d, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x3b, 0xa, 
-	0x20, 0x20, 0x75, 0x72, 0x6c, 0x20, 0x3d, 0x20, 0x22, 0x2f, 
-	0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x69, 
-	0x6c, 0x65, 0x6e, 0x74, 0x22, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 
-	0x24, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x74, 0x74, 0x72, 
-	0x28, 0x20, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 
-	0x20, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x53, 
-	0x65, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 
-	0x74, 0x61, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x70, 
-	0x6f, 0x73, 0x74, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 
-	0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 
-	0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x75, 0x72, 
-	0x6c, 0x2c, 0x20, 0x63, 0x6d, 0x64, 0x20, 0x29, 0x3b, 0xa, 
-	0x20, 0x20, 0x2f, 0x2f, 0x20, 0x50, 0x75, 0x74, 0x20, 0x74, 
-	0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 
-	0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x64, 0x69, 0x76, 0xa, 
-	0x20, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x69, 
-	0x6e, 0x67, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 
-	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 
-	0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x2f, 
-	0x2f, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x72, 
-	0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 0x29, 0x2e, 0x65, 
-	0x6d, 0x70, 0x74, 0x79, 0x28, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x2f, 0x2f, 0x20, 0x20, 0x20, 0x24, 0x2e, 0x65, 0x61, 0x63, 
-	0x68, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x70, 0x6c, 
-	0x69, 0x74, 0x28, 0x27, 0x5c, 0x6e, 0x27, 0x29, 0x2c, 0x20, 
-	0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x69, 
-	0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 
-	0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 
-	0x22, 0x23, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 
-	0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x28, 0x20, 
-	0x74, 0x68, 0x69, 0x73, 0x20, 0x2b, 0x20, 0x27, 0x3c, 0x62, 
-	0x72, 0x2f, 0x3e, 0x27, 0x20, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x2f, 0x2f, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x20, 
-	0x20, 0x2f, 0x2f, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x7d, 0xa, 
-	0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 
-	0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x63, 
-	0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x28, 0x72, 0x61, 0x64, 
-	0x69, 0x75, 0x73, 0x29, 0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 
-	0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 
-	0x20, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 
-	0x63, 0x5f, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x5f, 0x72, 
-	0x61, 0x64, 0x69, 0x69, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 
-	0x68, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 
-	0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, 0x3d, 0x6c, 0x65, 0x6e, 
-	0x67, 0x74, 0x68, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 
-	0x61, 0x64, 0x69, 0x75, 0x73, 0x20, 0x3c, 0x20, 0x63, 0x6f, 
-	0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x63, 
-	0x69, 0x72, 0x63, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x64, 0x69, 
-	0x69, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 
-	0x72, 0x6e, 0x28, 0x69, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 
-	0xa, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x28, 
-	0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0xa, 0x7d, 
-	0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 
-	0x20, 0x67, 0x65, 0x74, 0x51, 0x75, 0x61, 0x64, 0x72, 0x61, 
-	0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 
-	0x69, 0x63, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x6f, 0x73, 0x69, 
-	0x74, 0x69, 0x6f, 0x6e, 0x28, 0x78, 0x2c, 0x79, 0x29, 0x20, 
-	0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 
-	0x6c, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2d, 0x20, 
-	0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5b, 0x30, 0x5d, 0xa, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x6c, 0x5f, 
-	0x79, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2d, 0x20, 0x63, 0x65, 
-	0x6e, 0x74, 0x65, 0x72, 0x5b, 0x31, 0x5d, 0xa, 0x20, 0x20, 
-	0x76, 0x61, 0x72, 0x20, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 
-	0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x71, 
-	0x72, 0x74, 0x28, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, 
-	0x77, 0x28, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x61, 0x62, 0x73, 
-	0x28, 0x72, 0x65, 0x6c, 0x5f, 0x78, 0x29, 0x2c, 0x32, 0x29, 
-	0x20, 0x2b, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, 
-	0x77, 0x28, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x61, 0x62, 0x73, 
-	0x28, 0x72, 0x65, 0x6c, 0x5f, 0x79, 0x29, 0x2c, 0x32, 0x29, 
-	0x29, 0xa, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x65, 
-	0x6c, 0x5f, 0x78, 0x20, 0x3e, 0x20, 0x72, 0x65, 0x6c, 0x5f, 
-	0x79, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x6c, 0x5f, 0x78, 
-	0x20, 0x3e, 0x20, 0x2d, 0x72, 0x65, 0x6c, 0x5f, 0x79, 0x29, 
-	0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x71, 0x75, 0x61, 
-	0x64, 0x72, 0x61, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 
-	0x20, 0x2f, 0x2f, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0xa, 
-	0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 
-	0x66, 0x20, 0x28, 0x72, 0x65, 0x6c, 0x5f, 0x78, 0x20, 0x3c, 
-	0x3d, 0x20, 0x72, 0x65, 0x6c, 0x5f, 0x79, 0x20, 0x26, 0x26, 
-	0x20, 0x72, 0x65, 0x6c, 0x5f, 0x78, 0x20, 0x3e, 0x20, 0x2d, 
-	0x72, 0x65, 0x6c, 0x5f, 0x79, 0x29, 0x20, 0x7b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x71, 0x75, 0x61, 0x64, 0x72, 0x61, 0x6e, 
-	0x74, 0x20, 0x3d, 0x20, 0x33, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 
-	0x44, 0x6f, 0x77, 0x6e, 0xa, 0x20, 0x20, 0x7d, 0x20, 0x65, 
-	0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x65, 
-	0x6c, 0x5f, 0x78, 0x20, 0x3e, 0x20, 0x72, 0x65, 0x6c, 0x5f, 
-	0x79, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x6c, 0x5f, 0x78, 
-	0x20, 0x3c, 0x20, 0x2d, 0x72, 0x65, 0x6c, 0x5f, 0x79, 0x29, 
-	0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x71, 0x75, 0x61, 
-	0x64, 0x72, 0x61, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x31, 0x3b, 
-	0x20, 0x2f, 0x2f, 0x20, 0x55, 0x70, 0xa, 0x20, 0x20, 0x7d, 
-	0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x71, 0x75, 0x61, 0x64, 0x72, 0x61, 0x6e, 0x74, 
-	0x20, 0x3d, 0x20, 0x32, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x4c, 
-	0x65, 0x66, 0x74, 0xa, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 
-	0x76, 0x61, 0x72, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 
-	0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x63, 
-	0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x28, 0x72, 0x61, 0x64, 
-	0x69, 0x75, 0x73, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x72, 0x65, 
-	0x74, 0x75, 0x72, 0x6e, 0x20, 0x5b, 0x71, 0x75, 0x61, 0x64, 
-	0x72, 0x61, 0x6e, 0x74, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5d, 
-	0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 
-	0x6f, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x59, 
-	0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x7b, 0xa, 0x20, 
-	0x20, 0x76, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x73, 0x5f, 0x78, 
-	0x20, 0x3d, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x6f, 
-	0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x3f, 0x28, 0x65, 0x76, 
-	0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 
-	0x58, 0x29, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 
-	0x61, 0x67, 0x65, 0x58, 0x2d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 
-	0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 
-	0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 
-	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x78, 0x79, 
-	0x22, 0x29, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x4c, 
-	0x65, 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x65, 
-	0x76, 0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 
-	0x74, 0x59, 0x3f, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 
-	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x29, 0x3a, 0x65, 
-	0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x61, 0x67, 0x65, 0x59, 
-	0x2d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 
-	0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 
-	0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x63, 0x6f, 0x6e, 0x74, 
-	0x72, 0x6f, 0x6c, 0x5f, 0x78, 0x79, 0x22, 0x29, 0x2e, 0x6f, 
-	0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x3b, 0xa, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 
-	0x73, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x51, 0x75, 0x61, 
-	0x64, 0x72, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x65, 
-	0x6e, 0x74, 0x72, 0x69, 0x63, 0x46, 0x72, 0x6f, 0x6d, 0x50, 
-	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x70, 0x6f, 
-	0x73, 0x5f, 0x78, 0x2c, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x29, 
-	0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x71, 0x75, 
-	0x61, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x63, 
-	0x6f, 0x64, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x63, 
-	0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x20, 
-	0x3d, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x5b, 0x31, 0x5d, 
-	0x3b, 0xa, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x6f, 
-	0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x20, 0x3c, 
-	0x20, 0x35, 0x29, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, 0x6d, 
-	0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x62, 0x75, 
-	0x74, 0x74, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 
-	0x65, 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x78, 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x5b, 0x31, 
-	0x2c, 0x20, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x30, 
-	0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x5d, 0x5b, 0x71, 0x75, 
-	0x61, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x5d, 0x3b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x79, 0x64, 0x69, 
-	0x72, 0x20, 0x3d, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x31, 0x2c, 
-	0x20, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x30, 0x2c, 
-	0x20, 0x30, 0x5d, 0x5b, 0x71, 0x75, 0x61, 0x64, 0x72, 0x61, 
-	0x6e, 0x74, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x76, 
-	0x61, 0x72, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 
-	0x64, 0x65, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 
-	0x70, 0x6f, 0x77, 0x28, 0x31, 0x30, 0x2c, 0x20, 0x63, 0x6f, 
-	0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x63, 0x20, 0x2d, 
-	0x20, 0x32, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 
-	0x66, 0x20, 0x28, 0x78, 0x64, 0x69, 0x72, 0x20, 0x21, 0x3d, 
-	0x20, 0x30, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 
-	0x3d, 0x20, 0x22, 0x47, 0x31, 0x20, 0x58, 0x22, 0x20, 0x2b, 
-	0x20, 0x28, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 
-	0x65, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x69, 0x72, 0x29, 0x20, 
-	0x2b, 0x20, 0x22, 0x20, 0x46, 0x22, 0x20, 0x2b, 0x20, 0x64, 
-	0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 
-	0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 
-	0x49, 0x64, 0x28, 0x22, 0x78, 0x79, 0x5f, 0x76, 0x65, 0x6c, 
-	0x6f, 0x63, 0x69, 0x74, 0x79, 0x22, 0x29, 0x2e, 0x76, 0x61, 
-	0x6c, 0x75, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 
-	0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 
-	0x64, 0x20, 0x3d, 0x20, 0x22, 0x47, 0x31, 0x20, 0x59, 0x22, 
-	0x20, 0x2b, 0x20, 0x28, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 
-	0x75, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x79, 0x64, 0x69, 0x72, 
-	0x29, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x46, 0x22, 0x20, 0x2b, 
-	0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 
-	0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 
-	0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x78, 0x79, 0x5f, 0x76, 
-	0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x22, 0x29, 0x2e, 
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 
-	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x22, 0x47, 
-	0x39, 0x31, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x6d, 
-	0x6d, 0x61, 0x6e, 0x64, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x47, 
-	0x39, 0x30, 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x20, 
-	0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, 
-	0x68, 0x6f, 0x6d, 0x65, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 
-	0x6e, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x70, 0x6f, 
-	0x73, 0x5f, 0x78, 0x20, 0x3c, 0x20, 0x34, 0x39, 0x20, 0x26, 
-	0x26, 0x20, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x20, 0x3c, 0x20, 
-	0x34, 0x39, 0x29, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, 0x68, 
-	0x6f, 0x6d, 0x65, 0x20, 0x78, 0x20, 0x62, 0x75, 0x74, 0x74, 
-	0x6f, 0x6e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 
-	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x22, 
-	0x47, 0x32, 0x38, 0x20, 0x58, 0x30, 0x22, 0x3b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 
-	0x69, 0x66, 0x20, 0x28, 0x70, 0x6f, 0x73, 0x5f, 0x78, 0x20, 
-	0x3e, 0x20, 0x32, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, 0x70, 
-	0x6f, 0x73, 0x5f, 0x79, 0x20, 0x3c, 0x20, 0x34, 0x39, 0x29, 
-	0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x20, 
-	0x79, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 
-	0x6e, 0x64, 0x20, 0x3d, 0x20, 0x22, 0x47, 0x32, 0x38, 0x20, 
-	0x59, 0x30, 0x22, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 
-	0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x28, 
-	0x70, 0x6f, 0x73, 0x5f, 0x78, 0x20, 0x3c, 0x20, 0x34, 0x39, 
-	0x20, 0x26, 0x26, 0x20, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x20, 
-	0x3e, 0x20, 0x32, 0x30, 0x30, 0x29, 0x20, 0x7b, 0x20, 0x2f, 
-	0x2f, 0x20, 0x68, 0x6f, 0x6d, 0x65, 0x20, 0x61, 0x6c, 0x6c, 
-	0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 
-	0x64, 0x20, 0x3d, 0x20, 0x22, 0x47, 0x32, 0x38, 0x22, 0x3b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 
-	0x65, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, 0x68, 0x6f, 0x6d, 
-	0x65, 0x20, 0x7a, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 
-	0x6d, 0x61, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x22, 0x47, 0x32, 
-	0x38, 0x20, 0x5a, 0x30, 0x22, 0x3b, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 
-	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x63, 0x6f, 
-	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 
-	0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 
-	0x52, 0x61, 0x6e, 0x67, 0x65, 0x28, 0x79, 0x64, 0x69, 0x73, 
-	0x74, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 0x20, 
-	0x7a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x79, 0x64, 
-	0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x6c, 
-	0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0xa, 0x20, 0x20, 0x66, 
-	0x6f, 0x72, 0x20, 0x28, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, 
-	0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x69, 0x2b, 0x2b, 
-	0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 
-	0x20, 0x28, 0x79, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3c, 0x20, 
-	0x7a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x79, 0x64, 
-	0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x5b, 0x69, 
-	0x5d, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 
-	0x69, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa, 0xa, 
-	0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 
-	0x6c, 0x69, 0x63, 0x6b, 0x5a, 0x28, 0x65, 0x76, 0x65, 0x6e, 
-	0x74, 0x29, 0x7b, 0xa, 0x20, 0x20, 0x2f, 0x2f, 0x76, 0x61, 
-	0x72, 0x20, 0x70, 0x6f, 0x73, 0x5f, 0x78, 0x20, 0x3d, 0x20, 
-	0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x66, 0x66, 0x73, 
-	0x65, 0x74, 0x58, 0x3f, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x29, 0x3a, 
-	0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x61, 0x67, 0x65, 
-	0x58, 0x2d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 
-	0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 
-	0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x63, 0x6f, 0x6e, 
-	0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x7a, 0x22, 0x29, 0x2e, 0x6f, 
-	0x66, 0x66, 0x73, 0x65, 0x74, 0x4c, 0x65, 0x66, 0x74, 0x3b, 
-	0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x73, 
-	0x5f, 0x79, 0x20, 0x3d, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x3f, 0x28, 
-	0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x66, 0x66, 0x73, 
-	0x65, 0x74, 0x59, 0x29, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x2e, 0x70, 0x61, 0x67, 0x65, 0x59, 0x2d, 0x64, 0x6f, 0x63, 
-	0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 
-	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 
-	0x28, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 
-	0x7a, 0x22, 0x29, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 
-	0x54, 0x6f, 0x70, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x79, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x3d, 0x20, 
-	0x7a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5b, 0x31, 0x5d, 
-	0x20, 0x2d, 0x20, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x3b, 0xa, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x67, 
-	0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 
-	0x52, 0x61, 0x6e, 0x67, 0x65, 0x28, 0x4d, 0x61, 0x74, 0x68, 
-	0x2e, 0x61, 0x62, 0x73, 0x28, 0x79, 0x64, 0x65, 0x6c, 0x74, 
-	0x61, 0x29, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 
-	0x20, 0x3d, 0x20, 0x28, 0x79, 0x64, 0x65, 0x6c, 0x74, 0x61, 
-	0x20, 0x3e, 0x20, 0x30, 0x29, 0x3f, 0x31, 0x3a, 0x2d, 0x31, 
-	0x3b, 0xa, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x61, 
-	0x6e, 0x67, 0x65, 0x20, 0x3c, 0x20, 0x34, 0x29, 0x20, 0x7b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x43, 0x6f, 
-	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x22, 0x47, 0x39, 0x31, 
-	0x20, 0x47, 0x31, 0x20, 0x5a, 0x22, 0x20, 0x2b, 0x20, 0x28, 
-	0x4d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, 0x77, 0x28, 0x31, 
-	0x30, 0x2c, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2d, 0x32, 0x29, 
-	0x20, 0x2a, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 
-	0x6f, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x46, 0x22, 
-	0x20, 0x2b, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 
-	0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 
-	0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x7a, 0x5f, 
-	0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x22, 0x29, 
-	0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x2b, 0x20, 0x22, 
-	0x20, 0x47, 0x39, 0x30, 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 
-	0x69, 0x6f, 0x6e, 0x20, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 
-	0x65, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x2c, 
-	0x62, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 0x20, 
-	0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 
-	0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 
-	0x79, 0x49, 0x64, 0x28, 0x22, 0x65, 0x78, 0x74, 0x72, 0x75, 
-	0x64, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 
-	0x29, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0xa, 0x20, 
-	0x20, 0x76, 0x61, 0x72, 0x20, 0x76, 0x65, 0x6c, 0x6f, 0x63, 
-	0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 
-	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 
-	0x22, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 0x5f, 0x76, 
-	0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x22, 0x29, 0x2e, 
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x76, 
-	0x61, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 
-	0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 
-	0x74, 0x2e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 
-	0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x69, 0x64, 0x3d, 0x3d, 
-	0x27, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 0x27, 0x29, 
-	0x3f, 0x31, 0x3a, 0x2d, 0x31, 0x3b, 0xa, 0x20, 0x20, 0x72, 
-	0x75, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 
-	0x22, 0x47, 0x39, 0x31, 0x20, 0x47, 0x31, 0x20, 0x45, 0x22, 
-	0x20, 0x2b, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 
-	0x20, 0x2a, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 
-	0x6f, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x46, 0x22, 
-	0x20, 0x2b, 0x20, 0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 
-	0x79, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x47, 0x39, 0x30, 0x22, 
-	0x29, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 
-	0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x74, 0x6f, 0x72, 
-	0x73, 0x4f, 0x66, 0x66, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x43, 
-	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x22, 0x4d, 0x31, 
-	0x38, 0x22, 0x29, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 
-	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x65, 0x61, 
-	0x74, 0x53, 0x65, 0x74, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 
-	0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x65, 0x76, 
-	0x65, 0x6e, 0x74, 0x2e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 
-	0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x69, 0x64, 
-	0x3d, 0x3d, 0x27, 0x68, 0x65, 0x61, 0x74, 0x5f, 0x73, 0x65, 
-	0x74, 0x27, 0x29, 0x3f, 0x31, 0x30, 0x34, 0x3a, 0x31, 0x34, 
-	0x30, 0x3b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x74, 
-	0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 
-	0x20, 0x3d, 0x20, 0x28, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x3d, 
-	0x31, 0x30, 0x34, 0x29, 0x3f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 
-	0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 
-	0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 
-	0x68, 0x65, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 
-	0x22, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x64, 
-	0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 
-	0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 
-	0x49, 0x64, 0x28, 0x22, 0x62, 0x65, 0x64, 0x5f, 0x76, 0x61, 
-	0x6c, 0x75, 0x65, 0x22, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x75, 
-	0x65, 0x3b, 0xa, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x43, 0x6f, 
-	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x22, 0x4d, 0x22, 0x20, 
-	0x2b, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x2b, 0x20, 0x22, 
-	0x20, 0x53, 0x22, 0x20, 0x2b, 0x20, 0x74, 0x65, 0x6d, 0x70, 
-	0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x29, 0x3b, 0xa, 
-	0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 
-	0x6e, 0x20, 0x68, 0x65, 0x61, 0x74, 0x4f, 0x66, 0x66, 0x28, 
-	0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x20, 
-	0x20, 0x76, 0x61, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
-	0x3d, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x63, 
-	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x72, 0x67, 
-	0x65, 0x74, 0x2e, 0x69, 0x64, 0x3d, 0x3d, 0x27, 0x68, 0x65, 
-	0x61, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x27, 0x29, 0x3f, 0x31, 
-	0x30, 0x34, 0x3a, 0x31, 0x34, 0x30, 0x3b, 0xa, 0x20, 0x20, 
-	0x72, 0x75, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 
-	0x28, 0x22, 0x4d, 0x22, 0x20, 0x2b, 0x20, 0x74, 0x79, 0x70, 
-	0x65, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x53, 0x30, 0x22, 0x29, 
-	0x3b, 0xa, 0x7d, 0xa, 0xa, 0x3c, 0x2f, 0x73, 0x63, 0x72, 
-	0x69, 0x70, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 
-	0x64, 0x3e, 0xa, 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x57, 
-	0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 
-	0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x65, 0x20, 0x77, 
-	0x65, 0x62, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 
-	0x63, 0x65, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0xa, 0x3c, 
-	0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x3d, 
-	0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x66, 0x66, 
-	0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x6d, 
-	0x6f, 0x74, 0x6f, 0x72, 0x73, 0x4f, 0x66, 0x66, 0x28, 0x65, 
-	0x76, 0x65, 0x6e, 0x74, 0x29, 0x3e, 0x4d, 0x6f, 0x74, 0x6f, 
-	0x72, 0x73, 0x20, 0x4f, 0x66, 0x66, 0x3c, 0x2f, 0x62, 0x75, 
-	0x74, 0x74, 0x6f, 0x6e, 0x3e, 0xa, 0x58, 0x59, 0x3a, 0x3c, 
-	0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 
-	0x3d, 0x74, 0x65, 0x78, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x78, 
-	0x79, 0x5f, 0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 
-	0x20, 0x73, 0x69, 0x7a, 0x65, 0x3d, 0x34, 0x20, 0x76, 0x61, 
-	0x6c, 0x75, 0x65, 0x3d, 0x33, 0x30, 0x30, 0x30, 0x20, 0x73, 
-	0x74, 0x79, 0x6c, 0x65, 0x3d, 0x77, 0x69, 0x64, 0x74, 0x68, 
-	0x3a, 0x35, 0x30, 0x70, 0x78, 0x3e, 0x6d, 0x6d, 0x2f, 0x6d, 
-	0x69, 0x6e, 0xa, 0x5a, 0x3a, 0x3c, 0x69, 0x6e, 0x70, 0x75, 
-	0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x74, 0x65, 0x78, 
-	0x74, 0x20, 0x69, 0x64, 0x3d, 0x7a, 0x5f, 0x76, 0x65, 0x6c, 
-	0x6f, 0x63, 0x69, 0x74, 0x79, 0x20, 0x73, 0x69, 0x7a, 0x65, 
-	0x3d, 0x33, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x32, 
-	0x30, 0x30, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x77, 
-	0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 0x70, 0x78, 0x3e, 
-	0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x69, 0x6d, 0x67, 
-	0x20, 0x69, 0x64, 0x3d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 
-	0x6c, 0x5f, 0x78, 0x79, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x69, 
-	0x6d, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 
-	0x5f, 0x78, 0x79, 0x2e, 0x70, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 
-	0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x63, 0x6c, 0x69, 0x63, 
-	0x6b, 0x58, 0x59, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 
-	0x3e, 0xa, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x69, 0x64, 0x3d, 
-	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x7a, 0x20, 
-	0x73, 0x72, 0x63, 0x3d, 0x69, 0x6d, 0x67, 0x2f, 0x63, 0x6f, 
-	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x7a, 0x2e, 0x70, 0x6e, 
-	0x67, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 
-	0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5a, 0x28, 0x65, 0x76, 0x65, 
-	0x6e, 0x74, 0x29, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 
-	0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x3c, 0x74, 0x72, 
-	0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 
-	0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x3c, 
-	0x74, 0x64, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x74, 
-	0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 
-	0x72, 0x69, 0x67, 0x68, 0x74, 0x3e, 0x48, 0x65, 0x61, 0x74, 
-	0x3a, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 
-	0x3e, 0x3c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x69, 
-	0x64, 0x3d, 0x68, 0x65, 0x61, 0x74, 0x5f, 0x6f, 0x66, 0x66, 
-	0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x68, 
-	0x65, 0x61, 0x74, 0x4f, 0x66, 0x66, 0x28, 0x65, 0x76, 0x65, 
-	0x6e, 0x74, 0x29, 0x3e, 0x4f, 0x66, 0x66, 0x3c, 0x2f, 0x62, 
-	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 
-	0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 
-	0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x74, 0x65, 
-	0x78, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x68, 0x65, 0x61, 0x74, 
-	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x73, 0x69, 0x7a, 
-	0x65, 0x3d, 0x33, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 
-	0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 0x70, 0x78, 
-	0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x30, 0x3e, 0x3c, 
-	0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 
-	0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x3d, 
-	0x68, 0x65, 0x61, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x20, 0x6f, 
-	0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x68, 0x65, 0x61, 
-	0x74, 0x53, 0x65, 0x74, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 
-	0x29, 0x3e, 0x53, 0x65, 0x74, 0x3c, 0x2f, 0x62, 0x75, 0x74, 
-	0x74, 0x6f, 0x6e, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 
-	0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 
-	0xa, 0x3c, 0x74, 0x64, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 
-	0x3d, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 
-	0x6e, 0x3a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3e, 0x42, 0x65, 
-	0x64, 0x3a, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 
-	0x64, 0x3e, 0x3c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 
-	0x69, 0x64, 0x3d, 0x62, 0x65, 0x64, 0x5f, 0x6f, 0x66, 0x66, 
-	0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x68, 
-	0x65, 0x61, 0x74, 0x4f, 0x66, 0x66, 0x28, 0x65, 0x76, 0x65, 
-	0x6e, 0x74, 0x29, 0x3e, 0x4f, 0x66, 0x66, 0x3c, 0x2f, 0x62, 
-	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 
-	0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 
-	0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x74, 0x65, 
-	0x78, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x62, 0x65, 0x64, 0x5f, 
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x73, 0x69, 0x7a, 0x65, 
-	0x3d, 0x33, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x77, 
-	0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 0x70, 0x78, 0x20, 
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x30, 0x3e, 0x3c, 0x2f, 
-	0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x62, 
-	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x62, 
-	0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x6e, 0x63, 
-	0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x68, 0x65, 0x61, 0x74, 0x53, 
-	0x65, 0x74, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x3e, 
-	0x53, 0x65, 0x74, 0x3c, 0x2f, 0x62, 0x75, 0x74, 0x74, 0x6f, 
-	0x6e, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 
-	0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 
-	0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 
-	0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x74, 
-	0x6f, 0x70, 0x3e, 0xa, 0x3c, 0x62, 0x75, 0x74, 0x74, 0x6f, 
-	0x6e, 0x20, 0x69, 0x64, 0x3d, 0x67, 0x65, 0x74, 0x5f, 0x74, 
-	0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 
-	0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x72, 
-	0x75, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 
-	0x22, 0x4d, 0x31, 0x30, 0x35, 0x22, 0x29, 0x3e, 0x47, 0x65, 
-	0x74, 0x20, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 
-	0x75, 0x72, 0x65, 0x3c, 0x2f, 0x62, 0x75, 0x74, 0x74, 0x6f, 
-	0x6e, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 
-	0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 
-	0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x75, 
-	0x74, 0x74, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x65, 0x78, 
-	0x74, 0x72, 0x75, 0x64, 0x65, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 
-	0x69, 0x63, 0x6b, 0x3d, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 
-	0x65, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x3e, 0x45, 
-	0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 0x3c, 0x2f, 0x62, 0x75, 
-	0x74, 0x74, 0x6f, 0x6e, 0x3e, 0xa, 0x3c, 0x62, 0x75, 0x74, 
-	0x74, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x72, 0x65, 0x76, 
-	0x65, 0x72, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 
-	0x63, 0x6b, 0x3d, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 
-	0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x3e, 0x52, 0x65, 
-	0x76, 0x65, 0x72, 0x73, 0x65, 0x3c, 0x2f, 0x62, 0x75, 0x74, 
-	0x74, 0x6f, 0x6e, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 
-	0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 
-	0x3d, 0x74, 0x65, 0x78, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x65, 
-	0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 
-	0x67, 0x74, 0x68, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 
-	0x35, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x3d, 0x33, 0x20, 0x73, 
-	0x74, 0x79, 0x6c, 0x65, 0x3d, 0x77, 0x69, 0x64, 0x74, 0x68, 
-	0x3a, 0x33, 0x35, 0x70, 0x78, 0x3e, 0xa, 0x6d, 0x6d, 0x20, 
-	0x40, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 
-	0x79, 0x70, 0x65, 0x3d, 0x74, 0x65, 0x78, 0x74, 0x20, 0x69, 
-	0x64, 0x3d, 0x65, 0x78, 0x74, 0x72, 0x75, 0x64, 0x65, 0x5f, 
-	0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x20, 0x76, 
-	0x61, 0x6c, 0x75, 0x65, 0x3d, 0x31, 0x30, 0x30, 0x20, 0x73, 
-	0x69, 0x7a, 0x65, 0x3d, 0x33, 0x20, 0x73, 0x74, 0x79, 0x6c, 
-	0x65, 0x3d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 
-	0x70, 0x78, 0x3e, 0xa, 0x6d, 0x6d, 0x2f, 0x6d, 0x69, 0x6e, 
-	0xa, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x32, 0x3e, 
-	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x3c, 0x2f, 
-	0x68, 0x32, 0x3e, 0xa, 0x9, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 
-	0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 
-	0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x69, 
-	0x64, 0x3d, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 
-	0x46, 0x6f, 0x72, 0x6d, 0x22, 0x3e, 0xa, 0x9, 0x9, 0x3c, 
-	0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 
-	0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x6e, 0x61, 
-	0x6d, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 
-	0x64, 0x54, 0x65, 0x78, 0x74, 0x22, 0x20, 0x70, 0x6c, 0x61, 
-	0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x22, 
-	0x53, 0x65, 0x6e, 0x64, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 
-	0x6e, 0x64, 0x2e, 0x2e, 0x2e, 0x22, 0x3e, 0xa, 0x9, 0x9, 
-	0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 
-	0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 
-	0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x53, 0x65, 
-	0x6e, 0x64, 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x2f, 0x66, 0x6f, 
-	0x72, 0x6d, 0x3e, 0xa, 0x9, 0x3c, 0x21, 0x2d, 0x2d, 0x20, 
-	0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 
-	0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 
-	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, 
-	0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 
-	0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x20, 
-	0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x69, 0x76, 0x20, 0x2d, 
-	0x2d, 0x3e, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 
-	0x64, 0x3d, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 
-	0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c, 
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0xa, 0x9, 0x9, 
-	0x2f, 0x2f, 0x20, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x20, 
-	0x61, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x68, 
-	0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 
-	0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0xa, 0x9, 
-	0x9, 0x24, 0x28, 0x20, 0x22, 0x23, 0x63, 0x6f, 0x6d, 0x6d, 
-	0x61, 0x6e, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x29, 
-	0x2e, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x28, 0x66, 0x75, 
-	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x65, 0x76, 
-	0x65, 0x6e, 0x74, 0x20, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 
-	0x9, 0x2f, 0x2f, 0x20, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x66, 
-	0x6f, 0x72, 0x6d, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 
-	0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 
-	0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0xa, 0x9, 
-	0x9, 0x9, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 
-	0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 
-	0x6c, 0x74, 0x28, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x2f, 
-	0x2f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x73, 0x6f, 0x6d, 0x65, 
-	0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 
-	0x6f, 0x6d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 
-	0x73, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
-	0x61, 0x67, 0x65, 0x3a, 0xa, 0x9, 0x9, 0x9, 0x76, 0x61, 
-	0x72, 0x20, 0x24, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3d, 0x20, 
-	0x24, 0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x29, 0x3b, 
-	0xa, 0x9, 0x9, 0x9, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 
-	0x64, 0x20, 0x3d, 0x20, 0x24, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 
-	0x66, 0x69, 0x6e, 0x64, 0x28, 0x20, 0x22, 0x69, 0x6e, 0x70, 
-	0x75, 0x74, 0x5b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x27, 0x63, 
-	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x65, 0x78, 0x74, 
-	0x27, 0x5d, 0x22, 0x20, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 
-	0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x63, 0x6f, 0x6d, 0x6d, 
-	0x61, 0x6e, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x22, 0x5c, 0x6e, 
-	0x22, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x75, 0x72, 0x6c, 0x20, 
-	0x3d, 0x20, 0x24, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x74, 
-	0x74, 0x72, 0x28, 0x20, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 
-	0x6e, 0x22, 0x20, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x2f, 
-	0x2f, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 
-	0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x73, 0x69, 0x6e, 
-	0x67, 0x20, 0x70, 0x6f, 0x73, 0x74, 0xa, 0x9, 0x9, 0x9, 
-	0x76, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 
-	0x67, 0x20, 0x3d, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 
-	0x28, 0x20, 0x75, 0x72, 0x6c, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 
-	0x6d, 0x61, 0x6e, 0x64, 0x20, 0x29, 0x3b, 0xa, 0x9, 0x9, 
-	0x9, 0x2f, 0x2f, 0x20, 0x50, 0x75, 0x74, 0x20, 0x74, 0x68, 
-	0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 
-	0x69, 0x6e, 0x20, 0x61, 0x20, 0x64, 0x69, 0x76, 0xa, 0x9, 
-	0x9, 0x9, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 
-	0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 
-	0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
-	0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x24, 0x28, 
-	0x20, 0x22, 0x23, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 
-	0x20, 0x29, 0x2e, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x29, 
-	0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x2e, 
-	0x65, 0x61, 0x63, 0x68, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2e, 
-	0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x27, 0x5c, 0x6e, 0x27, 
-	0x29, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 
-	0x6e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x7b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x72, 0x65, 0x73, 0x75, 
-	0x6c, 0x74, 0x22, 0x20, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 
-	0x6e, 0x64, 0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x2b, 
-	0x20, 0x27, 0x3c, 0x62, 0x72, 0x2f, 0x3e, 0x27, 0x20, 0x29, 
-	0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 
-	0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d, 0x29, 0x3b, 0xa, 0x9, 
-	0x9, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x3c, 0x2f, 0x73, 0x63, 
-	0x72, 0x69, 0x70, 0x74, 0x3e, 0xa, 0xa, 0x9, 0x3c, 0x68, 
-	0x32, 0x3e, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 
-	0x46, 0x69, 0x6c, 0x65, 0x20, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 
-	0xa, 0x9, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 
-	0x79, 0x70, 0x65, 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x22, 
-	0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 
-	0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x66, 0x69, 
-	0x6c, 0x65, 0x73, 0x5b, 0x5d, 0x22, 0x20, 0x6f, 0x6e, 0x63, 
-	0x68, 0x61, 0x6e, 0x67, 0x65, 0x3d, 0x22, 0x75, 0x70, 0x6c, 
-	0x6f, 0x61, 0x64, 0x28, 0x29, 0x3b, 0x22, 0x20, 0x2f, 0x3e, 
-	0xa, 0xa, 0x9, 0x3c, 0x68, 0x33, 0x3e, 0x55, 0x70, 0x6c, 
-	0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x6c, 
-	0x65, 0x28, 0x73, 0x29, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 
-	0x9, 0x3c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 
-	0x64, 0x3d, 0x22, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x3e, 0x3c, 
-	0x2f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3e, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 
-	0x3d, 0x22, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 
-	0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 
-	0x3d, 0x22, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x72, 0x65, 
-	0x73, 0x75, 0x6c, 0x74, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 
-	0x76, 0x3e, 0xa, 0x9, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 
-	0x74, 0x3e, 0xa, 0x9, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 
-	0x6f, 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x46, 
-	0x69, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 
-	0x65, 0x76, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x20, 0x20, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x65, 
-	0x73, 0x20, 0x3d, 0x20, 0x65, 0x76, 0x74, 0x2e, 0x74, 0x61, 
-	0x72, 0x67, 0x65, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 
-	0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 
-	0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 
-	0x74, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 
-	0x74, 0xa, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 
-	0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 
-	0x61, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 
-	0x20, 0x6f, 0x66, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x6f, 
-	0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x20, 0x4c, 0x69, 
-	0x73, 0x74, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x70, 0x72, 
-	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x2e, 0xa, 
-	0x9, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x6f, 
-	0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x5b, 0x5d, 
-	0x3b, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 
-	0x20, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 
-	0x30, 0x2c, 0x20, 0x66, 0x3b, 0x20, 0x66, 0x20, 0x3d, 0x20, 
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x20, 
-	0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x20, 0x20, 
-	0x20, 0x20, 0x9, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 
-	0x70, 0x75, 0x73, 0x68, 0x28, 0x27, 0x3c, 0x6c, 0x69, 0x3e, 
-	0x3c, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x27, 0x2c, 
-	0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x28, 0x66, 0x2e, 
-	0x6e, 0x61, 0x6d, 0x65, 0x29, 0x2c, 0x20, 0x27, 0x3c, 0x2f, 
-	0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x20, 0x28, 0x27, 
-	0x2c, 0x20, 0x66, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7c, 
-	0x7c, 0x20, 0x27, 0x6e, 0x2f, 0x61, 0x27, 0x2c, 0x20, 0x27, 
-	0x29, 0x20, 0x2d, 0x20, 0x27, 0x2c, 0xa, 0x9, 0x20, 0x20, 
-	0x20, 0x20, 0x9, 0x9, 0x66, 0x2e, 0x73, 0x69, 0x7a, 0x65, 
-	0x2c, 0x20, 0x27, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2c, 
-	0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x6d, 0x6f, 0x64, 0x69, 
-	0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x27, 0x2c, 0xa, 0x9, 
-	0x20, 0x20, 0x20, 0x20, 0x9, 0x9, 0x66, 0x2e, 0x6c, 0x61, 
-	0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
-	0x44, 0x61, 0x74, 0x65, 0x20, 0x3f, 0x20, 0x66, 0x2e, 0x6c, 
-	0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 
-	0x64, 0x44, 0x61, 0x74, 0x65, 0x2e, 0x74, 0x6f, 0x4c, 0x6f, 
-	0x63, 0x61, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 
-	0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x20, 0x3a, 0x20, 0x27, 
-	0x6e, 0x2f, 0x61, 0x27, 0x2c, 0xa, 0x9, 0x20, 0x20, 0x20, 
-	0x20, 0x9, 0x9, 0x27, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x27, 
-	0x29, 0x3b, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 
-	0x9, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 
-	0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 
-	0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x27, 
-	0x6c, 0x69, 0x73, 0x74, 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e, 
-	0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x27, 
-	0x3c, 0x75, 0x6c, 0x3e, 0x27, 0x20, 0x2b, 0x20, 0x6f, 0x75, 
-	0x74, 0x70, 0x75, 0x74, 0x2e, 0x6a, 0x6f, 0x69, 0x6e, 0x28, 
-	0x27, 0x27, 0x29, 0x20, 0x2b, 0x20, 0x27, 0x3c, 0x2f, 0x75, 
-	0x6c, 0x3e, 0x27, 0x3b, 0xa, 0x9, 0x7d, 0xa, 0xa, 0x9, 
-	0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 
-	0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 
-	0x79, 0x49, 0x64, 0x28, 0x27, 0x66, 0x69, 0x6c, 0x65, 0x73, 
-	0x27, 0x29, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 
-	0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 
-	0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 
-	0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 
-	0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x66, 0x61, 
-	0x6c, 0x73, 0x65, 0x29, 0x3b, 0xa, 0xa, 0xa, 0x9, 0x66, 
-	0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 
-	0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 
-	0x74, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
-	0x69, 0x6c, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 
-	0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x6f, 
-	0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 
-	0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 
-	0x64, 0x28, 0x27, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x27, 0x29, 
-	0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x3b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 
-	0x61, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 
-	0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x46, 0x69, 0x6c, 0x65, 
-	0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x28, 0x29, 0x3b, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 
-	0x61, 0x64, 0x65, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x41, 
-	0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 
-	0x69, 0x6e, 0x67, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x29, 0x3b, 
-	0x20, 0x2f, 0x2f, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 
-	0x61, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x79, 0x6f, 
-	0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x20, 
-	0x72, 0x65, 0x61, 0x64, 0x41, 0x73, 0x44, 0x61, 0x74, 0x61, 
-	0x55, 0x52, 0x4c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x6f, 
-	0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x6e, 0x64, 0x20, 0x20, 
-	0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 
-	0x28, 0x65, 0x76, 0x74, 0x29, 0xa, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 
-	0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x58, 0x48, 
-	0x52, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x78, 0x68, 0x72, 0x20, 0x3d, 0x20, 0x6e, 
-	0x65, 0x77, 0x20, 0x58, 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 
-	0xa, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x65, 0x6e, 
-	0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 
-	0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x50, 
-	0x4f, 0x53, 0x54, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x78, 0x68, 0x72, 0x2e, 
-	0x6f, 0x70, 0x65, 0x6e, 0x28, 0x22, 0x50, 0x4f, 0x53, 0x54, 
-	0x22, 0x2c, 0x20, 0x27, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 
-	0x27, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0xa, 
-	0x9, 0x9, 0x9, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x65, 0x74, 
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 
-	0x64, 0x65, 0x72, 0x28, 0x27, 0x58, 0x2d, 0x46, 0x69, 0x6c, 
-	0x65, 0x6e, 0x61, 0x6d, 0x65, 0x27, 0x2c, 0x20, 0x66, 0x69, 
-	0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x3b, 0xa, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6d, 0x61, 0x6b, 0x65, 
-	0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x77, 0x65, 0x20, 0x68, 
-	0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 
-	0x6e, 0x64, 0x41, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 
-	0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x6f, 0x6e, 
-	0x20, 0x61, 0x6c, 0x6c, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 
-	0x65, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x4d, 0x4c, 0x48, 
-	0x74, 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 
-	0x2e, 0x6d, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x73, 0x42, 
-	0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x66, 0x75, 
-	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x74, 0x65, 0x78, 
-	0x74, 0x29, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x76, 0x61, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, 
-	0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 
-	0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x74, 0x65, 0x78, 
-	0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 
-	0x20, 0x75, 0x69, 0x38, 0x61, 0x20, 0x3d, 0x20, 0x6e, 0x65, 
-	0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 
-	0x61, 0x79, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x30, 
-	0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 
-	0x6f, 0x72, 0x20, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x20, 
-	0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x74, 
-	0x65, 0x78, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 
-	0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x75, 0x69, 0x38, 
-	0x61, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 
-	0x78, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x72, 0x43, 0x6f, 0x64, 
-	0x65, 0x41, 0x74, 0x28, 0x69, 0x29, 0x20, 0x26, 0x20, 0x30, 
-	0x78, 0x66, 0x66, 0x29, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x74, 0x79, 0x70, 0x65, 
-	0x6f, 0x66, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 
-	0x42, 0x6c, 0x6f, 0x62, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x66, 
-	0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 
-	0x61, 0x72, 0x20, 0x62, 0x6c, 0x6f, 0x62, 0x20, 0x3d, 0x20, 
-	0x6e, 0x65, 0x77, 0x20, 0x42, 0x6c, 0x6f, 0x62, 0x28, 0x5b, 
-	0x64, 0x61, 0x74, 0x61, 0x5d, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x7d, 0x65, 0x6c, 0x73, 0x65, 0x7b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x62, 0x62, 0x20, 0x3d, 
-	0x20, 0x6e, 0x65, 0x77, 0x20, 0x28, 0x77, 0x69, 0x6e, 0x64, 
-	0x6f, 0x77, 0x2e, 0x4d, 0x6f, 0x7a, 0x42, 0x6c, 0x6f, 0x62, 
-	0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x20, 0x7c, 0x7c, 
-	0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, 0x65, 
-	0x62, 0x4b, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x75, 
-	0x69, 0x6c, 0x64, 0x65, 0x72, 0x20, 0x7c, 0x7c, 0x20, 0x77, 
-	0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 
-	0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x29, 0x28, 0x29, 
-	0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x62, 0x62, 0x2e, 0x61, 0x70, 0x70, 0x65, 
-	0x6e, 0x64, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x76, 0x61, 0x72, 0x20, 0x62, 0x6c, 0x6f, 0x62, 0x20, 
-	0x3d, 0x20, 0x62, 0x62, 0x2e, 0x67, 0x65, 0x74, 0x42, 0x6c, 
-	0x6f, 0x62, 0x28, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x7d, 0xa, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x65, 0x6e, 0x64, 
-	0x28, 0x62, 0x6c, 0x6f, 0x62, 0x29, 0x3b, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x7d, 0xa, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6c, 0x65, 
-	0x74, 0x27, 0x73, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x20, 
-	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x70, 0x72, 0x6f, 
-	0x67, 0x72, 0x65, 0x73, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 
-	0x72, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 
-	0x72, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x78, 0x68, 0x72, 0x2e, 
-	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x7c, 0x7c, 0x20, 
-	0x78, 0x68, 0x72, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x76, 0x65, 
-	0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x61, 
-	0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 
-	0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x70, 0x72, 0x6f, 
-	0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x20, 0x66, 0x75, 
-	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x65, 0x29, 0x20, 
-	0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 
-	0x20, 0x67, 0x65, 0x74, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 
-	0x6e, 0x74, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x68, 
-	0x6f, 0x77, 0x20, 0x6d, 0x75, 0x63, 0x68, 0x20, 0x6f, 0x66, 
-	0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
-	0x6e, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x68, 0x61, 
-	0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x73, 0x65, 0x6e, 
-	0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 
-	0x72, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 
-	0x20, 0x3d, 0x20, 0x65, 0x2e, 0x70, 0x6f, 0x73, 0x69, 0x74, 
-	0x69, 0x6f, 0x6e, 0x20, 0x7c, 0x7c, 0x20, 0x65, 0x2e, 0x6c, 
-	0x6f, 0x61, 0x64, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x74, 
-	0x61, 0x6c, 0x20, 0x3d, 0x20, 0x65, 0x2e, 0x74, 0x6f, 0x74, 
-	0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x7c, 0x7c, 0x20, 
-	0x65, 0x2e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x3b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x70, 
-	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x20, 
-	0x3d, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x6f, 0x75, 
-	0x6e, 0x64, 0x28, 0x28, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 
-	0x6f, 0x6e, 0x2f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x29, 0x2a, 
-	0x31, 0x30, 0x30, 0x29, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x68, 0x65, 0x72, 0x65, 
-	0x20, 0x79, 0x6f, 0x75, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 
-	0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x79, 0x6f, 
-	0x75, 0x72, 0x20, 0x6f, 0x77, 0x6e, 0x20, 0x63, 0x6f, 0x64, 
-	0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x79, 0x6f, 0x75, 0x20, 
-	0x77, 0x69, 0x73, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 
-	0x6f, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x69, 0x73, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x22, 
-	0x23, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 
-	0x20, 0x29, 0x2e, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x29, 
-	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x28, 0x27, 0x75, 
-	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x27, 0x20, 
-	0x2b, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 
-	0x67, 0x65, 0x20, 0x2b, 0x20, 0x27, 0x25, 0x27, 0x29, 0x3b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x2f, 0x2f, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x63, 
-	0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x6f, 0x62, 0x73, 0x65, 
-	0x72, 0x76, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x77, 0x65, 0x20, 
-	0x6e, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6b, 0x6e, 
-	0x6f, 0x77, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6e, 
-	0x64, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
-	0x69, 0x6c, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x73, 0x75, 
-	0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 
-	0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x78, 0x68, 0x72, 0x2e, 0x6f, 0x6e, 0x72, 0x65, 
-	0x61, 0x64, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 
-	0x61, 0x6e, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 
-	0x28, 0x78, 0x68, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 
-	0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x34, 
-	0x29, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x69, 0x66, 0x28, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x74, 0x61, 
-	0x74, 0x75, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x30, 0x30, 
-	0x29, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 
-	0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, 0x73, 
-	0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0xa, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x75, 0x70, 0x6c, 0x6f, 
-	0x61, 0x64, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 
-	0x29, 0x2e, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x29, 0x2e, 
-	0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x28, 0x20, 0x27, 0x55, 
-	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x4f, 0x6b, 
-	0x27, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x7d, 0x65, 0x6c, 0x73, 0x65, 0x7b, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x72, 
-	0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 
-	0x72, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x22, 
-	0x23, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x72, 0x65, 0x73, 
-	0x75, 0x6c, 0x74, 0x22, 0x20, 0x29, 0x2e, 0x65, 0x6d, 0x70, 
-	0x74, 0x79, 0x28, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 
-	0x64, 0x28, 0x20, 0x27, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 
-	0x65, 0x64, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x27, 
-	0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x2f, 0x2f, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 
-	0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0xa, 0x20, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x78, 0x68, 0x72, 0x2e, 0x6d, 0x79, 0x53, 0x65, 0x6e, 0x64, 
-	0x41, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x28, 0x65, 
-	0x76, 0x74, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 
-	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x29, 0x3b, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0xa, 
-	0x9, 0x7d, 0xa, 0x9, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 
-	0x70, 0x74, 0x3e, 0xa, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 
-	0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 
-	0xa, 0};
-
-static const unsigned char data_404_html[] = {
-	/* /404.html */
-	0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
-	0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 
-	0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 
-	0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 
-	0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, 
-	0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 
-	0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, 
-	0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 
-	0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 
-	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, 
-	0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 
-	0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 
-	0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 
-	0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, 
-	0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 
-	0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 
-	0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 
-	0xa, 0};
-
-static const unsigned char data_img_control_xy_png[] = {
-	/* /img/control_xy.png */
-	0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x78, 0x79, 0x2e, 0x70, 0x6e, 0x67, 0,
-	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00, 
-	00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0xf7, 
-	00, 00, 00, 0xf8, 0x8, 0x6, 00, 00, 00, 0x30, 
-	0xda, 0x70, 0x86, 00, 00, 00, 0x9, 0x70, 0x48, 0x59, 
-	0x73, 00, 00, 0xb, 0x13, 00, 00, 0xb, 0x13, 0x1, 
-	00, 0x9a, 0x9c, 0x18, 00, 00, 0x20, 00, 0x49, 0x44, 
-	0x41, 0x54, 0x78, 0x1, 0xec, 0x7d, 0x7, 0x74, 0x1c, 0xc7, 
-	0x95, 0x6d, 0xf5, 0xcc, 0x60, 0x90, 0x41, 0x80, 00, 0x48, 
-	0x80, 00, 0x49, 0x80, 0x4, 0x73, 0x4e, 0x62, 0x14, 0x49, 
-	0xe5, 0x1c, 0x2c, 0x59, 0x72, 0x90, 0x6c, 0xc9, 0xb2, 0xec, 
-	0xd5, 0xfa, 0xcb, 0xd9, 0xc7, 0xeb, 0xb0, 0x6b, 0xcb, 0xb6, 
-	0x1c, 0xcf, 0xdf, 0xf5, 0x7a, 0x77, 0x9d, 0xbe, 0x2c, 0x59, 
-	0xb6, 0x15, 0xad, 0x68, 0x5, 0x4a, 0x94, 0x28, 0x91, 0x12, 
-	0x73, 0xe, 0x20, 0x41, 0x90, 0x44, 0x24, 0x72, 0x22, 0x72, 
-	0x9c, 0xd0, 0xff, 0xde, 0x9a, 0x79, 0xc3, 0xc6, 0x60, 0x6, 
-	0xc4, 0x80, 0x60, 0xb0, 0x97, 0xf, 0xa7, 0x50, 0xd5, 0xdd, 
-	0xd5, 0x55, 0xd5, 0xaf, 0xde, 0xad, 0xf7, 0x2a, 0x8e, 0x61, 
-	0x9a, 0xa6, 0xba, 0x44, 0x97, 0x38, 0x70, 0x89, 0x3, 0xff, 
-	0x78, 0x1c, 0xb0, 0xfd, 0xe3, 0x7d, 0xd2, 0xa5, 0x2f, 0xba, 
-	0xc4, 0x81, 0x4b, 0x1c, 0x20, 0x7, 0x2e, 0x81, 0xfb, 0x92, 
-	0x1c, 0x5c, 0xe2, 0xc0, 0x3f, 0x28, 0x7, 0x2e, 0x81, 0xfb, 
-	0x1f, 0xb4, 0x62, 0x2f, 0x7d, 0xd6, 0x25, 0xe, 0x38, 0x86, 
-	0xca, 0x2, 0x3, 0x14, 0x26, 0x6e, 0xb8, 0xfb, 0x61, 0xa2, 
-	0x9f, 0xb7, 0xdb, 0x61, 0x7, 0x13, 0x30, 0xce, 0x10, 0xf6, 
-	0xd9, 0x79, 0x2b, 0xdd, 0x8, 0x64, 0x14, 0xa2, 0x4e, 0xc2, 
-	0xd5, 0x45, 0xb8, 0xfb, 0x67, 0xe2, 0x83, 0x7e, 0xfe, 0x8f, 
-	0xc0, 0xaf, 0x10, 0xbc, 0xb2, 0xd6, 0x40, 0x38, 0xfe, 0x58, 
-	0xe3, 0x5c, 0x88, 0x70, 0xc8, 0xfa, 0x19, 0x6a, 0x7d, 0x18, 
-	0x83, 0xc9, 0x79, 0x8, 0x86, 0x50, 0xd3, 0x7, 0x33, 0x22, 
-	0xf8, 0xfa, 0x42, 0x30, 0x21, 0x54, 0x9e, 0xc1, 0x8c, 0xe1, 
-	0xb5, 0x38, 0x1d, 0x7f, 0xa8, 0x4c, 0xa, 0x95, 0xf8, 0xf9, 
-	0xb8, 0x17, 0xc4, 0x7f, 0xe1, 0xb3, 0xd5, 0x97, 0xb0, 0x14, 
-	0x87, 0xd7, 0xd6, 0x7b, 0xd6, 0xb0, 0xc4, 0x39, 0x93, 0xef, 
-	0xb5, 0x44, 0x10, 0x1e, 0x8a, 0xcf, 0x47, 0xd6, 0xe7, 0xbc, 
-	0x26, 0x1b, 0xad, 0xcf, 0x79, 0xef, 0xa2, 0xa1, 0x10, 0x3c, 
-	0x14, 0x9e, 0x88, 0xcf, 0xb2, 0x5a, 0xc3, 0x17, 0x4d, 0xd9, 
-	0x51, 0x90, 0x60, 0xbe, 0xf2, 0x3a, 0xc0, 0xff, 0x33, 0xf1, 
-	0x3d, 0x2c, 0xb8, 0x83, 0x98, 0x22, 0xa0, 0x16, 0x33, 0x5e, 
-	0x98, 0x21, 0xd7, 0xc2, 0x10, 0xde, 0x97, 0x67, 0x72, 0xef, 
-	0x7c, 0xf9, 0xc2, 0x8, 0xf1, 0x25, 0x5f, 0x32, 0x43, 0xee, 
-	0x9, 0x63, 0x2, 0x4c, 0x3a, 0x13, 0x83, 0x24, 0x91, 0x73, 
-	0xed, 0x5b, 0xf8, 0x2d, 0xfc, 0x13, 0x5f, 0x78, 0x2c, 0xbe, 
-	0x95, 0xc7, 0x72, 0x8f, 0xc5, 0x93, 0xb0, 0xbc, 0x27, 0x3e, 
-	0x9f, 0x49, 0x58, 0x7c, 0xe1, 0x7, 0x9f, 0x91, 0x78, 0x1d, 
-	0x7c, 0xcf, 0xca, 0x2b, 0x79, 0x26, 0xf7, 0xf8, 0x8e, 0x84, 
-	0x83, 0x7d, 0x3e, 0x23, 0xe2, 0xe5, 0xbe, 0xbe, 0xbe, 0x10, 
-	0xff, 0x2c, 0x3c, 0xb5, 0xf2, 0x86, 0x61, 0xe1, 0x3, 0x7d, 
-	0x9, 0xb3, 0x88, 0xc1, 0xd7, 0xbc, 0x77, 0x3e, 0x29, 0x54, 
-	0x3d, 0xc8, 0x3d, 0xfa, 0x56, 0x9e, 0x7a, 0xa4, 0x60, 0xe1, 
-	0x64, 0x38, 0x24, 0xb8, 0x83, 0x98, 0x22, 0x1f, 0xfc, 0x9, 
-	0x24, 0x36, 0xd5, 0x9f, 0xa0, 0xdc, 0x93, 0xf4, 0xad, 0xc, 
-	0x92, 0x7b, 0x17, 0xda, 0x17, 0x81, 0x64, 0x39, 0x18, 0x2e, 
-	0x82, 0x7b, 0x16, 0x8e, 0xc, 0xa2, 0xb, 0x30, 0x2b, 0x1c, 
-	0x73, 0x10, 0xe7, 0x9c, 0x91, 0x85, 0xc7, 0x56, 0x5e, 0x8a, 
-	0x10, 0x8a, 00, 0xf2, 0x99, 0xf5, 0x9e, 0x35, 0xcc, 0xb2, 
-	0x59, 0xe3, 0x59, 0xd3, 0x9, 0xe, 0xf, 0xe5, 0x3b, 0xac, 
-	0x82, 0x43, 0xde, 0x4, 0xf8, 0xe3, 0xf, 0x5b, 0xaf, 0x25, 
-	0xae, 0x95, 0x97, 0xf2, 0x4e, 0xa8, 0x78, 0xe7, 0x1d, 0xec, 
-	0x7e, 0xfe, 0x5a, 0xf9, 0x60, 0xc7, 0x77, 0x50, 0x86, 0xa7, 
-	0xc0, 0xf1, 0x3e, 0x29, 0xd8, 0xf7, 0xdd, 0xbd, 0x38, 0xfe, 
-	0x93, 0x8f, 0x42, 0xc2, 0x5b, 0xab, 0xc, 0xb, 0x9f, 0x29, 
-	0xbe, 0xd6, 0xb8, 0xf2, 0x8e, 0x1a, 0xac, 0xcf, 0x2d, 0x8c, 
-	0xa1, 00, 0xd1, 0x4d, 0x5d, 0xb9, 0x7c, 0xfa, 0xcc, 0xb4, 
-	0xf4, 0xa4, 0x34, 0x24, 0xe5, 0x67, 0x8a, 0x29, 0xcc, 0x9, 
-	0x24, 0x78, 0xf1, 0x5, 0xc, 0xfd, 0xe1, 0x47, 0xe, 0x97, 
-	0x8f, 0x29, 0x2e, 0xad, 0xfb, 0xab, 0xff, 0x5b, 0xdc, 0xf0, 
-	0x85, 0x21, 0x5e, 0xa, 0x42, 0x38, 0x6, 0x8d, 0xd4, 0xf7, 
-	0x84, 00, 0xb3, 0xf0, 0x57, 0x7c, 0xe1, 0x33, 0xaf, 0x43, 
-	0x85, 0x79, 0x2f, 0x54, 0x5c, 0x63, 0xdc, 0xb8, 0x71, 0xa3, 
-	0x63, 0x63, 0x63, 0xe3, 0x1c, 0xe, 0x47, 0xa2, 0xcd, 0x66, 
-	0x8b, 0xb5, 0xdb, 0xed, 0xf1, 0x8, 0xc7, 0x21, 0x7e, 0x1c, 
-	0xae, 0xe3, 0x79, 0xcf, 0x1f, 0x8e, 0xf3, 0x7a, 0xbd, 0x5d, 
-	0x8, 0x77, 0xd3, 0x87, 0xeb, 0xc4, 0x77, 0x77, 0xbb, 0xdd, 
-	0xee, 0x6e, 0x8f, 0xc7, 0xc3, 0x70, 0x67, 0x6f, 0x6f, 0x6f, 
-	0x77, 0x5f, 0x5f, 0x5f, 0x7b, 0x75, 0x75, 0x75, 0xb, 0xe2, 
-	0x85, 0x3, 0xb1, 0x15, 0xd4, 0xc, 0x8b, 0xa0, 0xc9, 0x7d, 
-	0xb9, 0x27, 0xf7, 0x4d, 0x7c, 0x3f, 0xcb, 0xcf, 0xfb, 0x9a, 
-	0x90, 0x57, 0x20, 0x2c, 0xf7, 0x46, 0xca, 0xf, 0xc1, 0x6b, 
-	0xe6, 0x6d, 0xb7, 0xd9, 0x9c, 0x33, 0x93, 0xd3, 0x16, 0x2c, 
-	0x47, 0x98, 0x7c, 0x14, 0xb2, 0x86, 0xe5, 0xde, 0xc5, 0xe4, 
-	0x6b, 0x39, 0x35, 0x4c, 0xaf, 0xbb, 0xa9, 0x61, 0x37, 0xcb, 
-	0x4a, 0xcc, 0x52, 0x6b, 0xd3, 0x69, 0x9e, 0xe2, 0x7b, 0x75, 
-	0xdf, 0x8, 0xd7, 0xfd, 0x68, 00, 0xb8, 0xc3, 0x30, 0x46, 
-	0x33, 0xc7, 0xf4, 0x9a, 0xc6, 0xff, 0xfc, 0xdf, 0x7, 0xb7, 
-	0x7b, 0x3c, 0x5e, 0x9b, 0x17, 0x61, 0xa6, 0x84, 0x4a, 0x32, 
-	0x24, 0xdc, 0x2f, 0xe5, 0xb, 0x7c, 0x61, 0xb3, 0x19, 0x14, 
-	0x28, 0x93, 0xfe, 0x97, 0xbe, 0xf1, 0xf8, 0x72, 0x34, 0x48, 
-	0x6c, 0xb9, 0x9d, 0x70, 0x2e, 0x38, 0x7e, 0x37, 0x1, 0xce, 
-	0xef, 0x22, 0x8d, 0xb8, 0xa0, 0x59, 0xf8, 0xc8, 0xf4, 0x25, 
-	0x1f, 0xfa, 0xe4, 0x1b, 0x1d, 0xcb, 0x43, 0x9f, 0xf7, 0xac, 
-	0xce, 0x7a, 0x9f, 0x61, 0x5b, 0x52, 0x52, 0x92, 0x33, 0x3d, 
-	0x3d, 0x7d, 0x42, 0x5c, 0x5c, 0xdc, 0x84, 0xa8, 0xa8, 0xa8, 
-	0x89, 0xd1, 0xd1, 0xd1, 0x93, 0x9c, 0x4e, 0xe7, 0x14, 0x80, 
-	0x76, 0x3c, 0x40, 0x39, 0x6, 0x60, 0xf6, 0x22, 0xec, 0x5, 
-	0xa0, 0xe9, 0x4c, 0x38, 0x85, 0xe7, 0xa, 0x71, 0x6d, 0x8, 
-	0xdb, 0x62, 0x62, 0x62, 0x6c, 0x8, 0x23, 0xe8, 0xb0, 0x3, 
-	0xc8, 0x1e, 0x97, 0xcb, 0xe5, 0xee, 0xe9, 0xe9, 0xf1, 0x22, 
-	0xec, 0x45, 0xd8, 0xb, 0x30, 0x2b, 0x84, 0xe9, 0xc, 0xa4, 
-	0x67, 0xa3, 0xcb, 0xcb, 0xcb, 0xb3, 0x21, 0xdd, 0x6, 0x34, 
-	00, 0x15, 00, 0x7c, 0x11, 0x5c, 0x9, 0xe2, 0x9e, 0xec, 
-	0xec, 0xec, 0x3c, 0xd9, 0xd8, 0xd8, 0x58, 0xd1, 0xde, 0xde, 
-	0xde, 0x87, 0xb2, 0x91, 0x6f, 0x74, 0x14, 0x34, 0xfa, 0x14, 
-	0x44, 0x9, 0xcb, 0x33, 0xeb, 0x7d, 0x1, 0x3b, 0x1b, 0x54, 
-	0x7e, 0x33, 0x9f, 0x91, 0x20, 0x46, 0xa1, 0xb5, 0x8f, 0xef, 
-	0xf1, 0xb0, 0xfe, 0xb, 0xaf, 0x35, 0xf, 0x91, 0x2, 0x7c, 
-	0x53, 0xf3, 0x76, 0xca, 0x9c, 0x87, 0xb6, 0x23, 0x47, 0xf0, 
-	0xde, 0x64, 0xa3, 0xe, 0xdf, 0xcb, 0x7a, 0xb8, 0xc8, 0xc8, 
-	0xe6, 0x3, 0x35, 0x64, 0x18, 0x62, 0x62, 0x16, 0xe5, 0xff, 
-	0x76, 0x9, 0xa, 0xc8, 0xf2, 0xd3, 0x9, 0x9, 0xc0, 0xe9, 
-	0xf, 0xa0, 0x1, 0xe0, 0xf6, 0xc7, 0xb0, 0xa, 0x1b, 0xc3, 
-	0x51, 0x70, 0xf0, 0xbd, 0xb6, 0x9e, 0xbe, 0x1e, 0x7, 0xc1, 
-	0x4c, 0xa6, 0xf4, 0x7, 0x79, 0xbf, 0xd6, 0x70, 0x40, 0x46, 
-	0xe7, 0xf3, 0x6, 0x1b, 0x32, 0x2b, 0xb8, 0x4d, 0x5c, 0xd2, 
-	0xa1, 0xc, 0xf2, 0xbd, 0x56, 0x80, 0x8f, 0x58, 0xd1, 0x2c, 
-	0x80, 0xa6, 0xb0, 0x58, 0x9d, 0x95, 0x9f, 0xbc, 0xcf, 0xa, 
-	0xe2, 0x3d, 0xf1, 0xa5, 0x6c, 0xb6, 0xb1, 0x63, 0xc7, 0x8e, 
-	0xca, 0xc8, 0xc8, 0x58, 0xc, 0x4d, 0x7c, 0x19, 0x40, 0xb9, 
-	0x12, 0x71, 0xb2, 0x1, 0xb6, 0x24, 00, 0xba, 0x37, 0x21, 
-	0x21, 0xc1, 0x93, 0x92, 0x92, 0x12, 0x95, 0x9c, 0x9c, 0x1c, 
-	0x93, 0x98, 0x98, 0xa8, 0xe8, 00, 0x7c, 0xd, 0x64, 0xc4, 
-	0x1b, 0x2a, 0x5, 0xb, 0x48, 0xc8, 0xf7, 0x8, 0xf8, 0xb6, 
-	0xb6, 0xb6, 0x2c, 0x80, 0x98, 0x6e, 0x59, 0x4b, 0x4b, 0x4b, 
-	0x4f, 0x73, 0x73, 0xb3, 0xab, 0xa3, 0xa3, 0xc3, 0x9e, 0x9d, 
-	0x9d, 0x1d, 0xd, 0xe0, 0xb7, 0xe3, 0xc5, 0xca, 0xee, 0xee, 
-	0xee, 0xed, 0x5d, 0x5d, 0x5d, 0xbb, 0x6b, 0x6a, 0x6a, 0xf6, 
-	0x2, 0xf4, 0xad, 0xb8, 0x47, 0xc0, 0x52, 0xd8, 0x4, 0xe4, 
-	0xd6, 0xb0, 00, 0x9e, 0xf7, 0x4, 0xe8, 0xda, 0x7, 0xef, 
-	0x4, 0xe8, 0x44, 0x7a, 0x20, 0x8c, 0x78, 0x11, 0x91, 0xbf, 
-	0xe, 0x4, 0xac, 0xc2, 0x77, 0x7e, 0x33, 0xeb, 0xde, 0xc6, 
-	0x46, 0xc5, 0x6e, 0x53, 0x76, 0xe4, 0x61, 0x23, 0xc0, 0xf9, 
-	0x87, 0x92, 0xf8, 0xe3, 0xfb, 0x14, 0x56, 0x44, 0x19, 0x9e, 
-	0xab, 0xc8, 0x50, 0xd5, 0x4c, 0x1a, 0x5, 0x63, 0xe9, 0x50, 
-	0x52, 0xdd, 0x18, 0xf2, 0x3b, 0x88, 0x45, 0xf9, 0x3e, 0x46, 
-	0x21, 0x2f, 0xf9, 0x5d, 0x5e, 0x7c, 0x93, 0x6e, 0x10, 0x78, 
-	0x93, 0x24, 0xc2, 0xee, 0xbb, 0xea, 0xff, 0x9f, 0x9, 0x8, 
-	0x53, 0xe8, 0xdb, 0xa8, 0xfd, 0x5c, 0xae, 0x3e, 0x3b, 0x41, 
-	0xed, 0xf1, 0x7a, 0x6d, 0xd4, 0xe4, 0x3e, 0xdf, 0x97, 0x19, 
-	0xd2, 0x26, 0x6f, 0xfb, 0x65, 0xd0, 0x3f, 0xc9, 0x73, 0x77, 
-	0xc5, 0xbc, 0x99, 0xba, 0xe4, 0x6f, 0xb7, 0x1b, 0xd4, 0xe, 
-	0xa6, 0xdd, 0x6e, 0xf3, 0x2a, 0xd3, 0x8b, 0x8a, 0xf4, 0xf2, 
-	0x1b, 0xa8, 0xb9, 0x49, 0x2c, 0xa3, 0x68, 0x6e, 0x86, 0x59, 
-	0x70, 0xa, 0xd5, 0xb0, 0xca, 0x8e, 0x77, 0x85, 0xd9, 0x14, 
-	0x26, 0x86, 0xe9, 0x44, 0xb0, 0xc4, 0xd7, 0x3c, 0xc4, 0x7d, 
-	0x2d, 0x64, 0xe2, 0x4f, 0x5, 0x1, 0xa4, 0x4, 0xf3, 0x4a, 
-	0x68, 0xd7, 0xc5, 0xd0, 0x94, 0xa9, 00, 0x70, 0x4f, 0x56, 
-	0x56, 0x56, 0x5c, 0x66, 0x66, 0xa6, 0x9d, 00, 0x6, 0xa8, 
-	0x15, 0x34, 0x33, 0xcd, 0xec, 0xf3, 0x46, 0xd4, 0xfc, 0x69, 
-	0x69, 0x69, 0xda, 0xf9, 0x33, 0x8d, 0x81, 0x4f, 0x47, 0x3e, 
-	0x29, 00, 0x3e, 0x99, 0xe, 0xa0, 0x9e, 0x51, 0x55, 0x55, 
-	0xf5, 0x89, 0xd1, 0xa3, 0x47, 0x47, 0xa3, 0x8c, 0xa7, 0xa0, 
-	0xdd, 0xf7, 0x40, 0xbb, 0xef, 0x40, 0xc3, 0xb0, 0xa7, 0xb2, 
-	0xb2, 0xb2, 0x18, 0x1a, 0x9f, 0x7c, 0xa6, 0xa0, 0x86, 0xf3, 
-	0xf9, 0x4c, 0x1c, 0xf9, 0xcf, 0x7a, 0x83, 0xa7, 0xf3, 0xd1, 
-	0x2, 0xae, 0x2f, 0x22, 0xfb, 0x17, 0x5c, 0x7, 0xe4, 0x39, 
-	0xeb, 0xde, 0x6, 0x41, 0xb0, 0x29, 0xaf, 0xdb, 0x41, 0x99, 
-	0x40, 0x1b, 0x82, 0xba, 0x21, 0xb8, 0x1, 0x71, 0xfa, 0x24, 
-	0xca, 0xd1, 0x5, 0x92, 0x61, 0x9d, 0xbf, 0xff, 0x1f, 0xa, 
-	0x1, 0x50, 0x43, 0x87, 0xc2, 0x7, 0xae, 0x29, 0xc0, 0x94, 
-	0x23, 0xab, 0xc, 0x93, 0x37, 0x9a, 0x5f, 0xf0, 0x7d, 0x65, 
-	0xf7, 0xbf, 0x2b, 0x5e, 0x28, 0x70, 0x33, 0x22, 0x13, 0x12, 
-	0x9f, 0x61, 0xb6, 0x16, 0x76, 0x34, 0xd, 0xb6, 0xee, 0x6e, 
-	0xb7, 0x3, 0x96, 0x1d, 0x5a, 0x3e, 0xa5, 0x35, 0x37, 0x41, 
-	0x45, 0x87, 0x67, 0xba, 0x24, 0x88, 0xa7, 0xde, 0xdd, 0x70, 
-	0x30, 0xf3, 0xc3, 0x6d, 0x85, 0xe3, 0xaf, 0xbe, 0x62, 0x76, 
-	0xd9, 0x9a, 0xcb, 0x67, 0xd5, 0xf3, 0xde, 0xf9, 0x22, 0xad, 
-	0xb5, 0xc1, 0x14, 0x8, 0x88, 0x89, 0x26, 0xda, 0x6b, 0x43, 
-	0xc9, 0x3c, 0x5e, 0x13, 0x8, 0xef, 0xc7, 0x18, 0xd, 0x68, 
-	0x94, 0x49, 0x84, 0x8a, 0xdf, 0x1a, 0x11, 0xb0, 0x83, 00, 
-	0xcd, 0xcf, 0x23, 0x9f, 0xac, 0x4e, 0xc0, 0xcc, 0x7b, 0xe4, 
-	0x33, 0x9d, 0x3d, 0x17, 0x4, 0x13, 0xfb, 0x66, 0x98, 0xd8, 
-	0x57, 00, 0xc8, 0xb3, 0xa0, 0x91, 0x4d, 0x68, 0x6b, 0x5, 
-	0x20, 0xc7, 0xd1, 0x7, 0x48, 0xd8, 0x40, 0x91, 0xdf, 0x17, 
-	0x2d, 0x11, 0x7c, 0xb4, 0x18, 0xe8, 0xd0, 0x8, 0xd9, 0x17, 
-	0x2f, 0x5e, 0x9c, 0x40, 0xc0, 0x43, 0xb3, 0x8f, 0xad, 0xad, 
-	0xad, 0xbd, 0x9, 0x80, 0xbf, 0xa2, 0xae, 0xae, 0x8e, 0xcf, 
-	0xa8, 0x51, 0xa, 00, 0xf6, 0xf, 0xea, 0xeb, 0xeb, 0xdf, 
-	0x3c, 0x9, 0xc2, 0x47, 0x11, 0xe4, 0xe2, 0x44, 0xab, 0x8b, 
-	0x2f, 0xf5, 0x41, 0xdf, 0x83, 0x77, 0xc9, 0x3b, 0x86, 0xd9, 
-	0xa0, 0x68, 0x9f, 0xe1, 0x21, 0x92, 0xd4, 0x5, 0xeb, 0x21, 
-	0xc0, 0x7f, 0xa4, 0x69, 0x38, 0xc, 0xd3, 0xe1, 0x55, 0x68, 
-	0xec, 0xa9, 0xb7, 0xfd, 00, 0xf7, 0x81, 0x9b, 0xc0, 0x1e, 
-	0x62, 0xea, 0x67, 0x19, 0xad, 0xbe, 0x66, 0x77, 0xe6, 0xa9, 
-	0xc6, 0xfc, 0xf1, 0x69, 0x63, 0x17, 0x95, 0xa5, 0x8d, 0x99, 
-	0x67, 0xc1, 0x88, 0x4f, 0x39, 0x12, 0xd0, 0x14, 0x49, 0xfa, 
-	0x10, 0x65, 0xe9, 0xc6, 0xf0, 0x3b, 0x28, 0x1b, 0x2, 0x6a, 
-	0x96, 0x82, 0x7c, 0xa1, 0xe3, 0xf7, 0x92, 0x8f, 0x1, 0x62, 
-	0xe4, 0x70, 0xc4, 0xc8, 0xfc, 0x54, 0x2d, 0x94, 0xf0, 0x69, 
-	0xda, 0x1a, 0x6e, 0x77, 0x1f, 0xfa, 0x6d, 0x5e, 0x3b, 0x4, 
-	0x53, 0x6b, 0x6f, 0xaf, 0x7, 0xc0, 0xf1, 0x3, 0x9c, 0x7d, 
-	0xb6, 0xff, 0xf9, 0xdd, 0xbb, 0xb3, 0xf7, 0x1d, 0x28, 0x1b, 
-	0x3f, 0x63, 0xda, 0xb8, 0x9a, 0x27, 0xfe, 0xb4, 0x71, 0xf1, 
-	0x91, 0xa3, 0x15, 0xe5, 0xf, 0xde, 0xb7, 0xf6, 0x98, 0x61, 
-	0xf3, 0x71, 0xd, 0xda, 0x5e, 0x49, 0x38, 0x5c, 0xc6, 0x67, 
-	0x7b, 0x1f, 0xf5, 0x67, 0x42, 0xaa, 00, 0x6e, 0xc3, 0x8b, 
-	0x51, 0x14, 0x68, 0x6e, 0x98, 0xe5, 0xa7, 0xfb, 0xdc, 0x64, 
-	00, 0xbf, 0x89, 0xbe, 0x7c, 0xe3, 0x90, 0xb3, 0xa4, 0x70, 
-	0xf8, 0x23, 0xcb, 0xbb, 0xf4, 0xad, 0x8e, 0x69, 0xf3, 0x9a, 
-	0xbe, 0x76, 0xe8, 0xbf, 0x4e, 0x87, 0x16, 0xbc, 0x5, 0x66, 
-	0xf6, 0x6d, 0x78, 0x3d, 0x7d, 0xd2, 0xa4, 0x49, 0xa, 0xa6, 
-	0x6d, 0xc, 0xc1, 0xc, 0x8d, 0x8d, 0x68, 0xe7, 0x9e, 0x60, 
-	0x32, 0xeb, 0x4c, 0xa8, 0x8d, 0xcf, 0x5, 0x91, 0x2d, 0x6c, 
-	0x98, 0xe8, 0x66, 0xce, 0x9c, 0xa9, 0xad, 0xc, 0x98, 0xec, 
-	0xa, 0xa0, 0x5e, 0x58, 0x51, 0x51, 0x31, 0xab, 0xa4, 0xa4, 
-	0xe4, 0xb, 0x93, 0x27, 0x4f, 0x6e, 0x4, 0xd0, 0x5f, 0x6f, 
-	0x68, 0x68, 0x58, 0x57, 0x5a, 0x5a, 0x7a, 0xc, 0xe5, 0x60, 
-	0xf7, 0x88, 0xf5, 0x60, 0x5, 0xbb, 0x68, 0x78, 0xde, 0x17, 
-	0xc1, 0x8d, 0x44, 0x9b, 0xb3, 0x7e, 0xc4, 0x21, 0x18, 0xe8, 
-	0xfa, 0xb0, 0x2e, 0xec, 0x40, 0x5, 0xe4, 0x95, 0xca, 0x89, 
-	0x4e, 0x5b, 0x74, 0x5a, 0xae, 0x29, 0x23, 0x8c, 0x7c, 0xae, 
-	0xc9, 0xeb, 0x75, 0x1b, 0xa5, 0x45, 0xaf, 0xcc, 0x6e, 0x6b, 
-	0x39, 0x3e, 0x3e, 0x3e, 0x31, 0xa7, 0xa6, 0xa2, 0xf4, 0xcd, 
-	0xc5, 0xed, 0x6d, 0xa5, 0xe5, 0x13, 0x72, 0x6e, 0x3a, 0x6, 
-	0xcb, 0x47, 0x67, 0x4f, 0xfb, 0x1a, 0x61, 0xb6, 0x34, 00, 
-	0x8b, 0xdd, 0xa3, 0x1b, 0xa1, 0xd3, 0x32, 0x46, 0x70, 0x93, 
-	0x47, 0x6c, 0xb4, 0x44, 0x86, 0xf9, 0x22, 0xc3, 0xfd, 0x88, 
-	0x1f, 0x1c, 0x8e, 0xf8, 0x82, 0x68, 0x1f, 0xc6, 0x83, 0x39, 
-	0x63, 0xda, 0x3c, 0x7d, 0x5e, 0x1b, 0x35, 0xb7, 0x17, 0xa6, 
-	0xb9, 0xdb, 0xe3, 0x65, 0xdf, 0x85, 0x3, 0x6a, 0xb6, 0xf2, 
-	0x8a, 0xc6, 0xb8, 0x5f, 0xfd, 0xfa, 0xed, 0x45, 0x6e, 0x8f, 
-	0xc7, 0xfe, 0xdd, 0x6f, 0x7c, 0x64, 0xeb, 0xe4, 0xdc, 0xf4, 
-	0xce, 0x63, 0x27, 0x6a, 0x12, 0x7f, 0xf7, 0xf8, 0x7b, 0xf3, 
-	0xbf, 0xff, 0xa3, 0x17, 0x53, 0xae, 0x5c, 0x3d, 0xab, 0xfc, 
-	0xd5, 0x37, 0xf7, 0x4c, 0xeb, 0xeb, 0x73, 0xdb, 0x6f, 0xb9, 
-	0x71, 0xd1, 0xb1, 0x6b, 0xae, 0x98, 0x5d, 0x6b, 0xcd, 0x78, 
-	0xc3, 0xc6, 0xc3, 0x19, 0xeb, 0xdf, 0x3b, 0x34, 0x99, 0xf7, 
-	0x66, 0x4d, 0xcf, 0xaa, 0xbf, 0xff, 0xde, 0x35, 0x27, 0x18, 
-	0x7e, 0xfa, 0xf9, 0xad, 0x93, 0xe, 0xe4, 0x97, 0x67, 0x32, 
-	0x7c, 0xdb, 0x8d, 0x8b, 0x8e, 0xaf, 0x5a, 0x31, 0xad, 0x81, 
-	0xe1, 0x70, 0x4, 0x21, 0xd3, 0x1a, 0x18, 0x7d, 0x6e, 0xe, 
-	0x32, 0x1, 0xe1, 0x3e, 0xcb, 0x82, 0x65, 0xc7, 0x3b, 0xd2, 
-	0x8a, 0x93, 0x39, 0xbc, 0x16, 0x21, 0x60, 0x98, 0x82, 0x14, 
-	0x92, 0x90, 0xa6, 00, 0xda, 0x1a, 0x5f, 0xd2, 0x13, 0x5f, 
-	0xd2, 0xd6, 0xfe, 0xf4, 0xe9, 0xd3, 0xe7, 0xa3, 0x6f, 0x7c, 
-	0x2b, 00, 0x7d, 0xb, 0xfa, 0xa7, 0x49, 00, 0xb4, 0x1d, 
-	0xce, 0x49, 0x40, 0x9f, 0x4e, 0x2e, 0x64, 0x76, 0x23, 0x7e, 
-	0xb3, 0xac, 0xac, 0x4c, 0xed, 0xdf, 0x7f, 0x50, 0xa7, 0xbb, 
-	0x60, 0xc1, 0x3c, 0x95, 0x93, 0x93, 0x33, 0xe2, 0x79, 0x84, 
-	0x4a, 0x90, 0xd, 0xd7, 0xc4, 0x89, 0x13, 0xe9, 0xa2, 0x57, 
-	0xae, 0x5c, 0x49, 0xa0, 0x67, 0x15, 0x17, 0x17, 0x3f, 00, 
-	0xa0, 0xdf, 0x8f, 0x7b, 0xed, 00, 0xff, 0x9b, 0x4d, 0x4d, 
-	0x4d, 0x6f, 0x16, 0x15, 0x15, 0x1d, 0xc2, 0xfb, 0x2, 0x70, 
-	0x2, 0x5e, 00, 0x4e, 0x9f, 0x42, 0x1b, 00, 0xba, 0xbf, 
-	0x2e, 0x74, 0x1d, 0x9f, 0x41, 0x9b, 0xb3, 0xae, 0x28, 0xb7, 
-	0xe2, 0xb3, 0x5e, 0x20, 0x11, 0xd0, 0x85, 0x36, 0xd3, 0x81, 
-	0xc6, 0x5e, 0x37, 0xf8, 0xf4, 0x9, 0x21, 0xfe, 0x5, 0x4c, 
-	0x73, 0x44, 0xc, 0x45, 0xc5, 0xc7, 0x5e, 0x9a, 0xd9, 0xd9, 
-	0x59, 0x95, 0xca, 0x67, 0x33, 0x67, 0x3f, 0xb8, 0xdd, 0xe1, 
-	0x8c, 0x63, 0xf9, 0x94, 0xdb, 0xd5, 0x63, 0x2f, 0xc8, 0xff, 
-	0x7f, 0x2b, 0x18, 0x4e, 0x4e, 0x99, 0x56, 0x3d, 0x21, 0xf7, 
-	0xba, 0x62, 0x86, 0x83, 0xa9, 0xab, 0xb3, 0x36, 0xae, 0xe4, 
-	0xd8, 0x8b, 0xb, 0x3d, 0x5e, 0xb7, 0x7d, 0xfa, 0xac, 0xfb, 
-	0xb7, 0xc6, 0x25, 0x8e, 0xeb, 0xec, 0x68, 0x3d, 0x99, 0x58, 
-	0x72, 0xe2, 0xd5, 0xf9, 0x27, 0x8e, 0xfe, 0x31, 0x25, 0x6d, 
-	0xcc, 0xa2, 0xf2, 0xda, 0xaa, 0xcd, 0xd3, 0x3c, 0x1e, 0x97, 
-	0x3d, 0x33, 0xfb, 0xf2, 0xc2, 0x8c, 0x71, 0xcb, 0xaa, 0x20, 
-	0x79, 0x14, 0x17, 0xf, 0xcb, 0x8d, 0xf4, 0xf8, 0xd, 0x22, 
-	0x67, 0xe4, 0x9, 0xc3, 0xba, 0xc, 0xf0, 0x7, 0x50, 0x28, 
-	0x70, 0x33, 0x11, 0xa, 0x2c, 0x49, 0xc2, 0xbc, 0xc6, 0x88, 
-	0x87, 0x69, 0xf4, 0x22, 0x63, 0x8e, 0xa6, 0x12, 0xd8, 0x4, 
-	0x35, 0x35, 0xf8, 0x86, 0xf7, 0x8f, 0x64, 0x3e, 0xf7, 0xc2, 
-	0xf6, 0x79, 0x33, 0xa7, 0x67, 0xd5, 0x3e, 0xfc, 0xd0, 0xb5, 
-	0xf9, 0xd5, 0x75, 0xcd, 0x31, 0x4f, 0x3e, 0xf3, 0xc1, 0x94, 
-	0x2b, 0xd6, 0xce, 0xac, 0xfa, 0xe1, 0xf7, 0xee, 0xd8, 0xfe, 
-	0xfb, 0xc7, 0x37, 0xce, 0xfa, 0xfd, 0x1f, 0xdf, 0x5f, 0xa2, 
-	0xfb, 0xe7, 0x68, 0xc, 0x4a, 0xca, 0xeb, 0x93, 0x5d, 0x5e, 
-	0xb7, 0xc5, 0x14, 0x51, 0x6a, 0xe9, 0xd2, 0x49, 0x8d, 0x4f, 
-	0x3e, 0xb3, 0x79, 0x51, 0x53, 0x53, 0x7b, 0xd2, 0xd1, 0x63, 
-	0xd5, 0x59, 0xcb, 0x57, 0x4c, 0xad, 0x8d, 0x89, 0x71, 0x78, 
-	0x9e, 0x7f, 0x69, 0xc7, 0x22, 0x97, 0xdb, 0xe3, 0x18, 0x97, 
-	0x99, 0xdc, 0xb4, 0x68, 0x51, 0xee, 0x29, 0xbc, 0x27, 0x65, 
-	0xd3, 0x5, 0x94, 0x7f, 0x6c, 0x64, 0x40, 0xba, 0xd2, 0xe9, 
-	0xb3, 0xc2, 0x6c, 0xd0, 0xdf, 0x76, 0x7c, 0xa, 0x9f, 0xf9, 
-	0xbf, 0xc5, 0xd7, 0x48, 0xf9, 0xbe, 0x8f, 0xe9, 0xe8, 0xef, 
-	0xf2, 0xa7, 0xc1, 0x38, 0xfa, 0x7d, 0xff, 0x35, 0xb9, 0xca, 
-	0x7b, 0x24, 0x89, 0x27, 0xfc, 0xd0, 0x82, 0x82, 0xfb, 0x4c, 
-	0x2f, 0xe0, 00, 0xe8, 0x59, 0xd0, 0x5c, 0x9f, 0x42, 0xdf, 
-	0xf9, 0x46, 0x98, 0xdb, 0xd1, 0xd0, 0xd8, 0xce, 0x9c, 0x9c, 
-	0x1c, 0x7, 0xcc, 0x70, 0xa6, 0x71, 0x41, 0xc8, 0x7, 0xec, 
-	0x43, 0xaa, 0xbb, 0x57, 0x2b, 0x53, 0xb5, 0xcf, 0xf, 0x72, 
-	0x94, 0xeb, 0xbc, 0x96, 0x87, 0xac, 0x64, 0xc3, 0x6, 0xe7, 
-	0x5c, 0xb1, 0x62, 0x85, 0x82, 0x25, 0x11, 0x3, 0xed, 0x7d, 
-	0x2f, 0x80, 0x7d, 0x37, 0xcc, 0xf7, 0x3e, 0xf4, 0xcd, 0xd7, 
-	0xe3, 0xde, 0xd3, 0xb8, 0xa6, 0x46, 0xe7, 0x48, 0x3c, 0x85, 
-	0xd6, 0xea, 0x28, 0xcc, 0xbc, 0x66, 0x23, 0xcc, 0x7a, 0x1a, 
-	0xaa, 0x36, 0x97, 0xba, 0xf3, 0xd5, 0x19, 0x45, 0x43, 0x77, 
-	0x61, 0x69, 0xcd, 0xb1, 0xdf, 0xed, 0xb1, 0x43, 0x40, 0x58, 
-	0xaf, 0x52, 0xd7, 0x8, 0x86, 0xa6, 0xa8, 0xe8, 0xf8, 0xbe, 
-	0x8e, 0xea, 0xf2, 0x6c, 0x3e, 0x6d, 0x68, 0xdc, 0x97, 0x99, 
-	0x99, 0xbd, 0xb2, 0x8a, 0xe1, 0x53, 0x4d, 0x7, 0xc7, 0x76, 
-	0xb4, 0xfa, 0xee, 0x8f, 0x19, 0xb7, 0xb4, 0x4, 0xcd, 0x6, 
-	0xf3, 0xec, 0x47, 0xf5, 0xd5, 0x7b, 0xc6, 0x56, 0x96, 0xbd, 
-	0x33, 0x2f, 0x61, 0x54, 0x6e, 0x6d, 0xde, 0x8c, 0xbb, 0xf2, 
-	0x7b, 0xba, 0x9a, 0x62, 0x4e, 0x96, 0xbd, 0x35, 0x25, 0x3d, 
-	0x63, 0x71, 0xd5, 0xcc, 0x85, 0xff, 0xb4, 0xbd, 0xec, 0xf8, 
-	0x2b, 0xb3, 0xca, 0x8a, 0x5f, 0x5b, 0xe2, 0xb3, 0x26, 0x4c, 
-	0xa3, 0xab, 0xab, 0x3a, 0x19, 0xaa, 0xb4, 0x16, 0xa5, 0xd5, 
-	0x86, 0x2e, 0x4b, 0x8d, 0x4, 0x59, 0x46, 0xca, 0x9b, 0xc8, 
-	0x1f, 0xaf, 0x5, 0xe0, 0x3, 0xca, 0xcf, 0x88, 0x83, 0x11, 
-	0x5f, 0xa0, 0x63, 0xc2, 0x40, 0x9, 0x4c, 0x1a, 0x8f, 0xcb, 
-	0x67, 0x8e, 0x3, 0xd4, 0xbd, 0x3d, 0x2e, 0xc7, 0x63, 0x7f, 
-	0xfc, 0x60, 0xc6, 0x9e, 0x7d, 0x65, 0x13, 0x6e, 0xbf, 0x65, 
-	0x41, 0xc1, 0xf5, 0xd7, 0xcd, 0xad, 0xde, 0xb8, 0xe9, 0xf0, 
-	0xb8, 0xbf, 0xbe, 0xb4, 0x6b, 0x76, 0x67, 0x57, 0x9f, 0x73, 
-	0xe7, 0xee, 0xe2, 0x9, 0x77, 0xdd, 0xb1, 0xa4, 0xe0, 0xff, 
-	0x3c, 0x74, 0x65, 0xc1, 0xdb, 0xeb, 0xf, 0xb5, 0xae, 0x5b, 
-	0x7f, 0x68, 0x4a, 0x7b, 0x47, 0x4f, 0xac, 0x13, 0x9d, 0x1e, 
-	0x4c, 0xc8, 0xb0, 0x50, 0x1, 0x72, 0x44, 0x19, 0xea, 0xa1, 
-	0x7, 0xd7, 0xec, 0xf9, 0xf1, 0xcf, 0xdf, 0xb8, 0x2, 0x3, 
-	0x76, 0xf6, 0xc7, 0x9e, 0x78, 0x7f, 0x7e, 0x6c, 0x6c, 0x14, 
-	0x26, 0x6d, 0x3c, 0xe, 0xc, 0x8a, 0x79, 0x1e, 0xfe, 0xe7, 
-	0xab, 0xf6, 0x28, 0x1b, 0x1b, 0x15, 0xd6, 0x71, 0x78, 0xa2, 
-	0x39, 0xce, 0xa7, 0xd4, 0xdc, 0x2c, 0x7a, 0x4d, 0x6d, 0x5b, 
-	0xb4, 0x9, 0x39, 0xf0, 0xb7, 0xca, 0xfc, 0xe, 0xe6, 0x2b, 
-	0xdf, 0xc5, 0xa8, 0x3, 0x28, 0x4, 0xa8, 0x7d, 0xdf, 0xef, 
-	0xe3, 0x83, 0x80, 0x99, 0xe9, 0x38, 0xa0, 0x99, 0xa3, 0x67, 
-	0xcc, 0x98, 0x71, 0xc3, 0xa8, 0x51, 0xa3, 0xbe, 00, 0x4b, 
-	0x21, 0x6f, 0xce, 0x9c, 0x39, 0x8e, 0x9, 0x13, 0x26, 0x38, 
-	0x68, 0x9e, 0x5e, 0x68, 0x22, 0xb0, 0x9, 0xe6, 0xde, 0xbe, 
-	0x38, 0x95, 0x37, 0x65, 0xb1, 0x2e, 0xce, 0x89, 0xe3, 0xbb, 
-	0xd5, 0xbe, 0x7d, 0x3e, 0x2d, 0x7e, 0xbe, 0x1, 0x6e, 0xe5, 
-	0x87, 0x7f, 0xb0, 0xce, 0xb1, 0x64, 0xc9, 0x12, 0x7, 0xfa, 
-	0xea, 0x71, 0xe5, 0xe5, 0xe5, 0x77, 0xe6, 0xe7, 0xe7, 0xdf, 
-	0xe, 0xa0, 0x17, 0x9f, 0x3a, 0x75, 0xea, 0xf, 0xc7, 0x8e, 
-	0x1d, 0x5b, 0x8f, 0x11, 0xfb, 0x5e, 0xbc, 0x23, 0x9a, 0x5c, 
-	0x7c, 0xa, 0x80, 0x38, 0x6d, 0xb6, 0x4b, 0x1b, 0x1c, 0xa4, 
-	0xc9, 0xa5, 0x8e, 0xa5, 0xee, 0xf4, 0x35, 0x15, 0x21, 0x3a, 
-	0x6a, 0x8, 0x7b, 0xed, 0x10, 0xa, 0x6a, 0x6f, 0x3a, 0x7f, 
-	0x5c, 0xd, 0x72, 0x6b, 0x31, 0xfb, 0x85, 0x33, 0x33, 0x97, 
-	0xd6, 0x54, 0x96, 0x6e, 0x40, 0x9e, 0xa6, 0xad, 0xa5, 0xa9, 
-	0x10, 0x45, 0x5d, 0xa1, 0xad, 0xcf, 0x96, 0xa6, 0x63, 0xe3, 
-	0x18, 0xd1, 0x66, 0x77, 0xf6, 0x65, 0x8c, 0x5d, 0xd0, 0x80, 
-	0x4, 0x3, 0xb2, 0xed, 0xf5, 0x7a, 0x54, 0xc9, 0x89, 0xd7, 
-	0xa6, 0x37, 0x37, 0x1e, 0xcd, 0xce, 0x9e, 0xb0, 0xf6, 0x68, 
-	0xe6, 0xf8, 0x15, 0x55, 0x75, 0x35, 0xbb, 0xc7, 0x9d, 0x2c, 
-	0xdb, 0x30, 0xdb, 0xe3, 0xea, 0x71, 0x36, 0x37, 0x1c, 0x99, 
-	0x30, 0x3e, 0xe7, 0xea, 0x82, 0xa9, 0x33, 0xee, 0x2e, 0xa8, 
-	0xa9, 0xd8, 0xd6, 0x5a, 0x53, 0xbd, 0x6d, 0x8a, 0xab, 0xaf, 
-	0x3, 0x6b, 0x15, 0x9c, 0x9c, 0xe2, 0x41, 0x67, 0x16, 0xe8, 
-	0xc6, 0x3f, 0x7e, 0x4, 0xb3, 0x80, 0x63, 0xda, 0xf4, 0xe5, 
-	0xfb, 0x10, 0xd4, 0xd7, 0xe4, 0x45, 0x3f, 0xa, 0x7, 0x6e, 
-	0xbe, 0x28, 0x9, 0x88, 0xcf, 0x29, 0x3, 0xe5, 0x72, 0xb3, 
-	0xdf, 0xed, 0xb5, 0x95, 0x9f, 0x6c, 0x8a, 0xff, 0xf5, 0xef, 
-	0xdf, 0x5d, 0x84, 0xc1, 0xd0, 0xa8, 0x6f, 0x7c, 0xf9, 0xfa, 
-	0x1d, 0x39, 0x39, 0x63, 0xba, 0x1e, 0x7b, 0xfc, 0x83, 0xe9, 
-	0xdb, 0x76, 0x9c, 0xc8, 0xc5, 0x94, 0xaa, 0x27, 0x3e, 0x2e, 
-	0xba, 0xaf, 0xa3, 0xb3, 0x37, 0xfa, 0xc9, 0xa7, 0xb6, 0x2e, 
-	0x28, 0x29, 0x69, 0x28, 0xfd, 0xd8, 0x5d, 0xcb, 0x4a, 0x72, 
-	0x72, 0xd2, 0xdb, 0xff, 0xfc, 0xf4, 0xb6, 0x59, 0x87, 0x8e, 
-	0x54, 0x8d, 0x5d, 0x5e, 0xd6, 0x54, 0x97, 0x95, 0x35, 0xba, 
-	0xdb, 0x5a, 0x9a, 0x79, 0x73, 0x72, 0x5a, 0x56, 0x2d, 0x9f, 
-	0x52, 0xb4, 0x65, 0xfb, 0x89, 0x29, 0x47, 0xa, 0xaa, 0xd8, 
-	0x42, 0x6a, 0xa0, 0x5e, 0x7b, 0xd5, 0xec, 0xa3, 0x79, 0x93, 
-	0x32, 0x3b, 0xdd, 0xae, 0x81, 0x2d, 0xa2, 0xf5, 0x7d, 0x1d, 
-	0xc6, 0x10, 0x9, 0x2a, 0xdb, 0xb4, 0x83, 0x21, 0xfb, 0xe, 
-	0x96, 0xa5, 0xee, 0xde, 0x5b, 0x32, 0x16, 0xe5, 0xe8, 0x6e, 
-	0xef, 0xe8, 0x3d, 0x89, 0xe7, 0xfc, 0x2e, 0x92, 0xf8, 0xbe, 
-	0x2b, 0xff, 0xff, 0x41, 0x40, 0x4d, 0x3e, 0x91, 0xf, 0xf4, 
-	0xd9, 0xe7, 0x71, 0xa0, 0x66, 0xd3, 0xd0, 0x6f, 0xfe, 0x14, 
-	0x4c, 0xcf, 0xcf, 0x62, 0x60, 0x29, 0x6a, 0xde, 0xbc, 0x79, 
-	0xf1, 0x4, 0xb, 00, 0x8e, 0xc7, 0x17, 0x9e, 0x7c, 0xc0, 
-	0x3e, 0xa4, 0xfa, 0x5c, 0xf1, 0x6a, 0xca, 0xd4, 0x45, 0x6a, 
-	0xc2, 0xc4, 0x99, 0x50, 0x50, 0x60, 0x28, 0xfe, 0x15, 0x1d, 
-	0xdf, 0x73, 0x51, 00, 0x5c, 0xb8, 0x84, 0xd9, 0x1, 0x5, 
-	0xe7, 0x98, 0x3b, 0x77, 0xae, 0x3, 0xe5, 0x9e, 0x79, 0xf0, 
-	0xe0, 0xc1, 0x1f, 0xa5, 0xa6, 0xa6, 0x7e, 0x1f, 0xd3, 0x6e, 
-	0x7f, 0xc1, 0x18, 0xdc, 0x33, 0x30, 0xe7, 0x9b, 0x10, 0x97, 
-	0xda, 0x9c, 00, 0xb7, 0x82, 0x5c, 0x34, 0x39, 0xc1, 0x2e, 
-	0x9a, 0x3c, 0x64, 0xdd, 0xe2, 0x39, 0xee, 0x7b, 0xfa, 0x3c, 
-	0x9e, 0xee, 0xee, 0xb2, 0xd2, 0x37, 0xa7, 0x64, 0x66, 0x2d, 
-	0xab, 0x8e, 0x8a, 0x49, 0x72, 0x73, 0xc6, 0x87, 0x60, 0xf5, 
-	0x5b, 0x77, 0x88, 0x16, 0x1e, 0xe0, 0xce, 0xb8, 0x44, 0x77, 
-	0x42, 0xd2, 0xf8, 0xba, 0x8e, 0xb6, 0x93, 0x99, 0xed, 0x2d, 
-	0x65, 0x19, 0x1e, 0x58, 0xcb, 0x50, 0x22, 0xaa, 0xad, 0xb5, 
-	0x2c, 0x3, 0x2f, 0xaa, 0x51, 0xa3, 0x27, 0x57, 0x19, 0xe, 
-	0x5a, 0xf9, 0xbe, 0x79, 0xf3, 0xae, 0xae, 0xc6, 0x98, 0x92, 
-	0x82, 0x97, 0xe6, 0xd1, 0xcc, 0x9e, 0x3e, 0xef, 0xd3, 0x3b, 
-	0x13, 0x92, 0xc6, 0x75, 0x16, 0x1f, 0x7b, 0x65, 0x7a, 0x63, 
-	0xed, 0xc1, 0x5c, 0xc3, 0x16, 0xe5, 0xb1, 0x47, 0xc5, 0xf4, 
-	0xb9, 0x5c, 0x3d, 0xd1, 0xa5, 0xc5, 0x6f, 0x2c, 0xe8, 0xe8, 
-	0xa8, 0x2e, 0x9d, 0x98, 0x77, 0x6d, 0x49, 0xdc, 0xa8, 0xac, 
-	0xf6, 0xb2, 0xa2, 0x37, 0x66, 0xb5, 0x34, 0x17, 0x8d, 0xed, 
-	0xec, 0xaa, 0xa9, 0x8e, 0x4f, 0x1a, 0xd7, 0x1, 0x70, 0xfb, 
-	0x3a, 0xe, 0xa7, 0x1, 0x2d, 0x98, 0x1c, 0x54, 0xd8, 0xec, 
-	0x8f, 0x3c, 0xf2, 0x8, 0xcb, 0x15, 0xa0, 0x1f, 0xfc, 0xe0, 
-	0x7, 0x7c, 0x81, 0xad, 0x83, 0xd6, 0x4c, 0xf0, 0x29, 0xd0, 
-	0x9c, 0x46, 0x58, 0x91, 0x99, 0x39, 0x2a, 0xed, 0xca, 0xb5, 
-	0xd3, 0xda, 0xde, 0xdb, 0x58, 0x90, 0xf5, 0xeb, 0xdf, 0xbd, 
-	0xbb, 0x6c, 0x42, 0xf6, 0xe8, 0x96, 0x7f, 0xf9, 0xfa, 0xf5, 
-	0x7b, 0xfb, 0x5c, 0x1e, 0xfb, 0x2f, 0xff, 0xeb, 0xed, 0x85, 
-	0xf9, 0x5, 0x95, 0x59, 0x31, 0xd1, 0x4e, 0x17, 0xc1, 0x85, 
-	0xf8, 0xba, 0xb3, 0x40, 0x4e, 0x97, 0x94, 0xd6, 0xa7, 0x1e, 
-	0x47, 0xff, 0x7b, 0xf9, 0xf2, 0x49, 0xb5, 0x57, 0xae, 0x99, 
-	0x5e, 0x79, 0xa2, 0xa8, 0x6e, 0xd4, 0xba, 0xf5, 0x7, 0xf3, 
-	0x52, 0x92, 0x63, 0x3a, 0xb2, 0xc6, 0x25, 0x3, 0xe0, 0x8c, 
-	0xee, 0x73, 0x73, 0xe6, 0x66, 0x37, 0x7e, 0xf0, 0xe1, 0xb1, 
-	0xec, 0x9e, 0x1e, 0x17, 0xf3, 0x34, 0x90, 0xe7, 0xa9, 0x6f, 
-	0x7e, 0xed, 0x86, 0xbd, 0x3e, 0xcc, 0xf8, 0xe2, 0xc0, 0x74, 
-	0x41, 0xb2, 0xa1, 0x1d, 0xf9, 0xd0, 0xd5, 0xd9, 0x6d, 0x7f, 
-	0xeb, 0xdd, 0x83, 0xd9, 0x47, 0x8f, 0x55, 0x8d, 0x3e, 0x59, 
-	0xd1, 0xd8, 0x90, 0x7f, 0xb8, 0x72, 0x43, 0x57, 0x57, 0xdf, 
-	0x7a, 0xa4, 0x47, 0x4d, 0x60, 0x35, 0xf9, 0xac, 0x1a, 0x80, 
-	0x89, 0xf3, 0xdb, 0xad, 0xdf, 0x4f, 0x20, 0x8b, 0x8b, 0x46, 
-	0x38, 0x6, 0x83, 0x45, 0xf3, 0xa7, 0x4d, 0x9b, 0xf6, 0x3, 
-	0x8, 0xdf, 0xcf, 0xa6, 0x4c, 0x99, 0xb2, 0xe4, 0xf2, 0xcb, 
-	0x2f, 0x4f, 0x58, 0xb8, 0x70, 0xa1, 0x93, 0x2, 0x2a, 0x1a, 
-	0x4, 0xf1, 0x2e, 0x28, 0x9d, 0x6, 0x76, 0x9c, 0x9a, 0x32, 
-	0x6d, 0x89, 0xca, 0xc9, 0xf1, 0x1, 0x9b, 0x85, 0x4a, 0x1a, 
-	0x95, 0xa6, 0xec, 0xe, 0xa7, 0xaa, 0xab, 0x6d, 0x80, 0x69, 
-	0x59, 0xa9, 0xe2, 0x62, 0x63, 0x14, 0xc6, 0x6, 0x2e, 0x68, 
-	0x79, 0x25, 0x73, 0xf2, 0x8f, 0x7c, 0x84, 0x25, 0xe4, 0x1c, 
-	0x3f, 0x7e, 0x7c, 0xc, 00, 0x37, 0x17, 0xb, 0x6f, 0x3e, 
-	0x83, 0x46, 0x74, 0x3a, 0x2c, 0xa4, 0x5a, 0x68, 0x74, 0xae, 
-	0x9a, 0x13, 0xd9, 0x94, 0xba, 0xa2, 0x88, 0xd1, 0xf1, 0x5a, 
-	0xc2, 0xf4, 0x45, 0xc3, 0x51, 0x7e, 0xb5, 0xc, 0x23, 0xbd, 
-	0xa6, 0xae, 0xce, 0xfa, 0x4, 0xd3, 0xe3, 0x4a, 0xec, 0xee, 
-	0x6c, 0x18, 0x4f, 0x2b, 0x2f, 0x2e, 0x36, 0xb5, 0x17, 0x91, 
-	0x21, 0x5e, 0xd0, 0xe8, 0xd0, 0x94, 0x36, 0xe8, 0x48, 0xf8, 
-	0xf8, 0x8f, 0x6b, 0x3a, 0x5e, 0x23, 0x59, 0x71, 0x1e, 0x77, 
-	0x8f, 0xd1, 0x7c, 0xea, 0x78, 0x16, 0x6, 0xc6, 0xa2, 0x52, 
-	0x52, 0x26, 0x55, 0x2b, 0x8f, 0xdb, 0x56, 0x51, 0xbe, 0x71, 
-	0x16, 0xf2, 0x50, 0xb9, 0x93, 0xaf, 0x3b, 0x9c, 0x90, 0x90, 
-	0xd9, 0xc5, 0xb8, 0xd, 0x35, 0xfb, 0xd3, 0x8b, 0xb, 0x5f, 
-	0x5c, 0x14, 0x97, 0x90, 0xd9, 0x32, 0x6b, 0xde, 0x7d, 0xfb, 
-	0xc, 0xaf, 0xc7, 0x28, 0xcc, 0x7f, 0x6a, 0x61, 0xcb, 0xa9, 
-	0xa2, 0x2c, 0xbb, 0x23, 0xba, 0x1f, 0x46, 0x58, 0xec, 0xce, 
-	0xf6, 0xaa, 0x54, 0x98, 0xf6, 0x49, 0xd0, 0xfc, 0x35, 0x19, 
-	0xe3, 0x96, 0x56, 0x32, 0x5c, 0x53, 0xb1, 0x65, 0xaa, 0x33, 
-	0x2a, 0xb1, 0x23, 0x11, 0x7d, 0xf3, 0xc6, 0xba, 0xfc, 0xf4, 
-	0x8e, 0xf6, 0x2a, 0x5a, 0xa, 0xbb, 0xe0, 0xd8, 0xa8, 0xd1, 
-	0x51, 0x7e, 0xe9, 0x53, 0x76, 0xbd, 0xc0, 0x72, 0x3f, 0xed, 
-	0xcd, 0x8f, 0x3e, 0x13, 0x91, 0x69, 0x9a, 0x98, 0xc2, 0x6b, 
-	0xaf, 0x1f, 0x18, 0xff, 0xc2, 0x2b, 0xbb, 0x17, 0xde, 0x76, 
-	0xd3, 0x82, 0x23, 0xd7, 0x5f, 0x3b, 0xb7, 0x7a, 0xfb, 0xce, 
-	0x13, 0x63, 0x9e, 0x7b, 0x71, 0xd7, 0x9c, 0xae, 0xae, 0x5e, 
-	0x27, 0x80, 0x4d, 0xe0, 0xc, 0x20, 0x2c, 0x8c, 0xf2, 0x1c, 
-	0x2f, 0xaa, 0x1b, 0xf3, 0x8b, 0x7f, 0x7f, 0x3b, 0xe1, 0x63, 
-	0x77, 0x5c, 0x56, 0xf0, 0x4f, 0x9f, 0xbd, 0xa2, 0xe0, 0xad, 
-	0x77, 0xe, 0x65, 0x3d, 0xf3, 0xfc, 0xae, 0x39, 0x7d, 0xbd, 
-	0xde, 0x23, 0xcb, 0x97, 0xe6, 0xf9, 0x86, 0x72, 0xf1, 0xa6, 
-	0xd3, 0xe6, 0x30, 0xe3, 0xe3, 0xa3, 0x7b, 0x9b, 0x5b, 0xba, 
-	0x12, 0x98, 0x50, 0x2c, 0x1a, 0xb, 0x34, 0xa6, 0x86, 0xc7, 
-	0xcd, 0xdc, 0xcf, 0x4c, 0xe5, 0x27, 0x1b, 0xe3, 0xb7, 0x6c, 
-	0x3b, 0x96, 0x79, 0xaa, 0xb9, 0xd3, 0x75, 0xf4, 0x78, 0x6d, 
-	0x61, 0x73, 0x73, 0xe7, 0x7b, 0x78, 0xab, 0x8, 0x8e, 0x2d, 
-	0xbe, 0x24, 0x42, 0x26, 0x30, 0x2c, 0xe, 0x41, 0x2d, 0xc, 
-	0x22, 0x24, 0xd2, 0xb0, 0xd1, 0x27, 0xb8, 0x9d, 0xf3, 0xe7, 
-	0xcf, 0xbf, 0x1, 0x20, 0xf8, 0xa, 0x9a, 0xea, 0x5c, 0x98, 
-	0xde, 0x51, 0x10, 0x40, 0x3b, 0xba, 0xd5, 0x7c, 0xef, 0xa2, 
-	0x22, 0x1, 0xb6, 0xcb, 0x9d, 0xa0, 0xa6, 0x4e, 0x5b, 0xa4, 
-	0x72, 0x72, 0x67, 0x29, 0x8c, 0x8b, 0xf4, 0x2b, 0xe3, 0x84, 
-	0x89, 0x33, 0x30, 0xcd, 0x6b, 0xaa, 0x13, 0x27, 0xf6, 0xa8, 
-	0xbd, 0x7b, 0x2f, 0xbc, 0x89, 0xde, 0xaf, 0x70, 0xfe, 0xb, 
-	0x34, 0x9e, 0x6a, 0xed, 0xda, 0xb5, 0x31, 0xcb, 0x97, 0x2f, 
-	0x57, 0x47, 0x8f, 0x1e, 0xbd, 0x6, 0x26, 0xfb, 0x5a, 0x2c, 
-	0xb3, 0x3d, 0x89, 0x1, 0xb8, 0x5f, 0x1f, 0x3e, 0x7c, 0xf8, 
-	0x1d, 0x44, 0xa3, 0xac, 0xd1, 0x89, 0x26, 0x17, 0x81, 0x97, 
-	0x8f, 0x15, 0xa0, 0x33, 0x45, 0xd6, 0x33, 0xef, 0x57, 0xc2, 
-	0x7b, 0x11, 0x9a, 0x76, 0x4d, 0x4f, 0x77, 0xe3, 0x3c, 0x97, 
-	0xbb, 0x73, 0x42, 0x47, 0x47, 0x65, 0x72, 0xe6, 0xb8, 0xcb, 
-	0x6a, 0xd0, 0x9f, 0xf6, 0xf8, 0xa4, 0x23, 0x58, 0x73, 0xf7, 
-	0xbf, 0xce, 0xc8, 0x5e, 0x5c, 0x53, 0x5a, 0xf4, 0x96, 0x87, 
-	0x7d, 0xf5, 0xa6, 0x86, 0xfc, 0x4c, 0x67, 0x74, 0x52, 0xf, 
-	0x33, 0x70, 0x38, 0x62, 0x7b, 0xd2, 0x33, 0xe6, 0x34, 0xa2, 
-	0xbd, 0x30, 0xaa, 0x2b, 0x76, 0x64, 0x9e, 0x2c, 0x7d, 0x7f, 
-	0xe6, 0xf8, 0xdc, 0x35, 0x85, 0x59, 0xe3, 0x57, 0x56, 0x35, 
-	0xd4, 0x1f, 0x4e, 0x2d, 0x3b, 0xb1, 0x6e, 0xb6, 0xcb, 0xd5, 
-	0xeb, 0x8c, 0x82, 0xb6, 0x3e, 0x2d, 0x86, 0x7c, 0xd3, 0x4f, 
-	0x76, 0xbb, 0xa7, 0xad, 0xf5, 0x64, 0xfa, 0xe1, 0x43, 0x4f, 
-	0x5e, 0x36, 0x69, 0xca, 0x75, 0x47, 0xa6, 0xcf, 0xfd, 0x58, 
-	0x41, 0x55, 0xf9, 0xe6, 0x71, 0x65, 0xc5, 0xeb, 0xe6, 0x63, 
-	0xb4, 0xeb, 00, 0xda, 0x3d, 0x12, 0xff, 0x53, 0x26, 0x49, 
-	0xbe, 0x3b, 0xa7, 0x7d, 0xdf, 0x5d, 0xcb, 0x7f, 0x18, 0xb1, 
-	0x22, 0xef, 0x88, 0xe5, 0x53, 0x3d, 0x22, 0xd8, 0xd4, 0x9c, 
-	0x74, 0x9c, 0xab, 0xa1, 0xfb, 0xea, 0xc2, 0x5, 0x13, 0xa7, 
-	0x7e, 0xfa, 0x93, 0x2b, 0x9a, 0xfb, 0x5c, 0xee, 0xa8, 0x49, 
-	0x13, 0xd3, 0xbb, 0x5f, 0x7f, 0xfb, 0xe0, 0x84, 0x57, 0xff, 
-	0xb6, 0x97, 0xad, 0xab, 0x7, 0xfd, 0x62, 0x61, 0x2a, 0xa2, 
-	0x86, 0x26, 0xe, 0xbe, 0xa1, 0x29, 0x34, 0x3f, 0x7a, 0xfb, 
-	0xe2, 0xc3, 0x97, 0xaf, 0x9c, 0x5a, 0x5f, 0x54, 0x52, 0x9f, 
-	0x10, 0x1b, 0x13, 0xe5, 0xc9, 0x1a, 0x97, 0x12, 0x30, 0xcf, 
-	0x9f, 0xfd, 0xeb, 0xce, 0xc9, 0xaf, 0xaf, 0x3b, 0x30, 0xd7, 
-	0x9a, 0xc2, 0xdd, 0x77, 0x2c, 0xde, 0x77, 0xfb, 0xad, 0x8b, 
-	0xca, 0xad, 0xf7, 0x82, 0xc3, 0x14, 0xe0, 0x1d, 0xbb, 0x4a, 
-	0xd2, 0xa, 0x8e, 0x56, 0xa7, 0x56, 0x54, 0x9d, 0x6a, 0x28, 
-	0x2e, 0x69, 0x38, 0x82, 0x7b, 0x1f, 0x22, 0x1e, 0x5b, 0x7b, 
-	0x56, 00, 0xf3, 0xa0, 0xe3, 0xda, 0x6a, 0x5e, 0xd3, 0x51, 
-	0x38, 0xb4, 0x49, 0x7, 0x9f, 0xc4, 0x86, 0x4c, 0x5a, 0x7a, 
-	0xd, 0xea, 0xd9, 0xb3, 0x67, 0x2f, 0x47, 0xff, 0xf0, 0x87, 
-	0xf1, 0xf1, 0xf1, 0xd9, 0x8b, 0x16, 0x2d, 0xd2, 0xa6, 0xb7, 
-	0x8f, 0x4d, 0x3a, 0xfe, 0x45, 0xf5, 0x8f, 0xc0, 0xde, 0xbf, 
-	0x3f, 0x5f, 0x9b, 0xe2, 0x53, 0xa7, 0x2f, 0x6, 0xb0, 0x7d, 
-	0x1a, 0x9b, 0xbc, 0xc1, 0xe0, 0xa7, 0x36, 0xcb, 0x19, 0x26, 
-	0x11, 0xdc, 0xa5, 0x65, 0x47, 0x54, 0xf1, 0x89, 0x7d, 0xd0, 
-	0xde, 0x3d, 0x6a, 0xf1, 0xa2, 0xf3, 0x37, 0x8a, 0x3e, 0x1c, 
-	0xa6, 0x51, 0x4e, 0xd1, 0x2f, 0x57, 0x7b, 0xf6, 0xec, 0xe9, 
-	0x82, 0xb9, 0x5e, 0x8d, 0x79, 0xf4, 0x47, 0xb, 0xb, 0xb, 
-	0xa9, 0xc5, 0xc4, 0x1a, 0x13, 0x93, 0xdd, 0x5a, 0x9f, 0x52, 
-	0x97, 0x94, 0x63, 0x2e, 0xc0, 0xe1, 0xa8, 0xa2, 0xc8, 0x73, 
-	0x1e, 0xaa, 0x7b, 0xd5, 0xa8, 0xe4, 0x9, 0x13, 0x13, 0x93, 
-	0xb2, 0xd3, 0xd2, 0xc7, 0xce, 0xab, 0x4d, 0x19, 0x3d, 0xb9, 
-	0xdd, 0x3f, 0xb8, 0x86, 0x68, 0xe1, 0x69, 0xff, 0x9e, 0xdf, 
-	0x2e, 0x69, 0x3e, 0x55, 0x94, 0x1d, 0x17, 0x3f, 0xf6, 0x94, 
-	0xd3, 0x99, 0xd0, 0xdd, 0xd2, 0x5c, 0x9c, 0x35, 0x66, 0xec, 
-	0xfc, 0xe2, 0xd9, 0xf3, 0x3e, 0xc5, 0x51, 0x7f, 0xd5, 0xd1, 
-	0x5e, 0x1d, 0x7, 0x8e, 0x1b, 0x49, 0x89, 0xd9, 0x9d, 0x15, 
-	0xe5, 0x9b, 0xb3, 0xca, 0x4a, 0xdf, 0x9b, 0x85, 0xa1, 0x5d, 
-	0xf, 0xd6, 0xf3, 0xe, 0x9, 0x23, 0xb4, 0x28, 0x60, 0x5, 
-	0xe4, 0x8f, 0xcb, 0x5e, 0x5a, 0xd3, 0xd6, 0x72, 0x32, 0xde, 
-	0x1e, 0x15, 0xd7, 0x57, 0x5e, 0xf2, 0xee, 0x84, 0xea, 0xaa, 
-	0x9d, 0x7, 0x90, 0xfc, 0xaf, 0x99, 0x5, 0x9c, 0xc8, 0xb4, 
-	0xb5, 0x91, 0x43, 0xa3, 0x73, 0x1a, 0xd0, 0xfc, 0xf8, 0xa1, 
-	0x13, 0x4, 0x22, 0x2f, 0x37, 0xbd, 0x3, 0x53, 0x61, 0xe, 
-	0xe, 0x7a, 0x15, 0x9d, 0xa8, 0x4d, 0xb5, 0xd9, 0xec, 0x5e, 
-	0xae, 0x6, 0x93, 0xd6, 0x8, 0x49, 0xb3, 0xc1, 0xf0, 0xb7, 
-	0x33, 0x18, 0xe2, 0xd3, 0x3d, 0x75, 0x5f, 0x16, 0x1c, 0xe4, 
-	0x72, 0xb9, 0x3c, 0x8e, 0x92, 0x92, 0xfa, 0xe4, 0xcb, 0x97, 
-	0xe7, 0xd5, 0xe7, 0xe5, 0xa4, 0xb1, 0x90, 0x68, 0x4c, 0x7d, 
-	0xdf, 0x5c, 0x56, 0xde, 0x18, 0xf, 0x8d, 0x3e, 0x93, 0xb7, 
-	0x30, 0x95, 0x56, 0xdb, 0xda, 0xd6, 0x1d, 0xd7, 0xd8, 0xd4, 
-	0x91, 0xf4, 0xea, 0x1b, 0x7, 0xe6, 0x2c, 0x5b, 0x92, 0x5b, 
-	0x97, 0x31, 0x36, 0x99, 0x1f, 0x34, 0x80, 0xba, 0xba, 0x5d, 
-	0xb6, 0xf7, 0x36, 0x15, 0x64, 0x55, 0x54, 0x36, 0x3b, 0x8f, 
-	0x14, 0x56, 0x95, 0x34, 0x37, 0x77, 0xed, 0x46, 0x24, 0x32, 
-	0x5a, 0x6, 0x64, 0xac, 0xad, 0xbb, 0xb5, 0xf2, 0xd9, 0x90, 
-	0xb1, 0x75, 0x13, 0x93, 0x8e, 0xfc, 0xa0, 0x20, 0x44, 0x61, 
-	0xa4, 0x7b, 0x26, 0xfa, 0xd5, 0x8f, 0xa0, 0xe1, 0x9a, 0xbf, 
-	0x6c, 0xd9, 0xb2, 0x58, 0x5c, 0xe3, 0xf6, 0xc5, 0x4b, 0x3e, 
-	0x8d, 0x9d, 0x8f, 0xf5, 0xe1, 0x9, 0x6a, 0x1a, 0x81, 0x3d, 
-	0x89, 0xc0, 0x3e, 0xdd, 0x70, 0x87, 0x2a, 0xf9, 0x84, 0x9, 
-	0xd3, 0xf5, 0xd7, 0x17, 0x1, 0xe0, 0x7b, 0xf6, 0x68, 0xb9, 
-	0x84, 0x9, 0x9f, 0x13, 0x2a, 0xea, 0x5, 0xbf, 0xc7, 0x6, 
-	0x95, 0x65, 0x83, 0x8b, 0xc3, 0x88, 0x7a, 0xde, 0x8e, 0x1d, 
-	0x3b, 0x7e, 0x37, 0x66, 0xcc, 0x98, 0x7c, 00, 0xfe, 0xa7, 
-	0x70, 0x85, 0x28, 0xa0, 0x15, 0xe4, 0xac, 0x63, 0x7e, 0x3c, 
-	0xe5, 0x50, 0xea, 0x98, 0x42, 0xc6, 0xfb, 0x94, 0x5, 0xd6, 
-	0x73, 0x29, 0x4, 0xaf, 0xa9, 0xb5, 0xa5, 0x6c, 0x45, 0x77, 
-	0xf7, 0xa9, 0xe9, 0x1e, 0x77, 0xd7, 0x84, 0xde, 0xde, 0xc6, 
-	0xb8, 0x8c, 0x71, 0x8b, 0xeb, 0x20, 0xd3, 0xe4, 0x9d, 0x4f, 
-	0x86, 0x11, 0x31, 0x98, 0xc6, 0x8e, 0x9b, 0x57, 0x49, 0x70, 
-	0x77, 0x75, 0xd6, 0xa5, 0xf4, 0x74, 0x37, 0x25, 0xf2, 0x79, 
-	0x46, 0xd6, 0xc2, 0x4a, 0x4c, 0xcd, 0x68, 0x4a, 0x4c, 0x1e, 
-	0x47, 0x5, 0xa2, 0xa9, 0xad, 0xbd, 0x3c, 0x5, 0x65, 0xc7, 
-	0x9a, 0xb, 0x2b, 0xb0, 0x4f, 0xef, 0xc7, 0xd0, 0xf8, 0x60, 
-	0x87, 0xc0, 0x4f, 0xb0, 0xc, 0xbd, 0xe8, 0xa3, 0x3b, 0xda, 
-	0xdb, 0x2b, 0x92, 0xd, 0xfb, 0xd2, 0x9a, 0xe4, 0xb4, 0x9c, 
-	0x76, 0x74, 0xe, 0x3c, 0x5a, 0x42, 0x25, 0x52, 0x68, 0x9f, 
-	0xe5, 0xa5, 0xb, 0xa4, 0x15, 0x19, 0xb8, 0x99, 0xa8, 0x9, 
-	0xfe, 0x60, 0x4, 0x90, 0x80, 0x74, 0x40, 0x5b, 0x1b, 0x16, 
-	0x16, 0x10, 0xd8, 0xb8, 0x36, 0x47, 0xa7, 0xc4, 0x77, 0x62, 
-	0x88, 0xdb, 0xdb, 0xd3, 0xe7, 0x72, 0xb4, 0xb6, 0x76, 0xc7, 
-	0x2, 0xd4, 0x81, 0xc, 0xf9, 0xa1, 0x76, 0x5e, 0x33, 0x1d, 
-	0xb, 0x51, 0xb3, 0xfc, 0xe6, 0xf, 0x1b, 0x17, 0x62, 0xb0, 
-	0xce, 0xc1, 0x46, 0xe0, 0xbe, 0x4f, 0x2e, 0xcb, 0xaf, 0xa9, 
-	0x6b, 0x8d, 0xfb, 0xed, 0x1f, 0x3e, 0x5c, 0x89, 0xb9, 0xf1, 
-	0xa8, 0x5f, 0x3f, 0xb6, 0x69, 0xc1, 0x8f, 0xbe, 0x7b, 0xcb, 
-	0x76, 0xcb, 0x2b, 0x3a, 0x58, 0x5b, 0xdf, 0x1e, 0xfd, 0xfe, 
-	0x7, 0x85, 0x59, 0xd5, 0x35, 0x2d, 0x3d, 0x87, 0x8f, 0x56, 
-	0x1f, 0xe9, 0xeb, 0xf3, 0x50, 0x5b, 0xb3, 0x6f, 0x62, 0x6d, 
-	0xd1, 0xa4, 0x55, 0xa7, 0xcf, 0x4a, 0x66, 0x79, 0x58, 0x72, 
-	0x56, 0x87, 0x7c, 0x1, 0x79, 0x11, 0x5, 0xe1, 0x99, 0x80, 
-	0x3e, 0xde, 0x77, 0x31, 0x9d, 0x75, 0x35, 0xfa, 0xd2, 0x51, 
-	0xe8, 0x63, 0x63, 0x1d, 0xc, 0xb1, 0x7f, 0xf1, 0x92, 0xf, 
-	0xd8, 0x87, 0x95, 0xdb, 0x93, 0xa0, 0xa6, 0xcf, 0x58, 0xac, 
-	0x26, 0xe6, 0xcc, 0xc2, 0x7, 0x6, 0x58, 0x3e, 0x68, 0xc1, 
-	0x9, 0x70, 0xb6, 0x1, 0x7f, 0xf, 00, 0x97, 0xf, 0x61, 
-	0x43, 0x8b, 0x35, 0x3, 0x31, 0x5, 0x5, 0x5, 0x8b, 0xb0, 
-	0x86, 0xe0, 0x59, 0x34, 0xc2, 0x9b, 0xc0, 0x83, 0x7f, 0xc7, 
-	0x4e, 0xb6, 0x93, 0x88, 0xc3, 0x7a, 0x67, 0x3d, 0x8b, 0x80, 
-	0x59, 0xeb, 0x99, 0xf7, 0xe8, 0x68, 0xc2, 0x33, 0x1e, 0x95, 
-	0xcb, 0xa6, 0xbe, 0xde, 0xb6, 0xda, 0xba, 0xba, 0xfc, 0xa5, 
-	0x6e, 0x77, 0xcf, 0x84, 0xde, 0x9e, 0xb6, 0x89, 0x59, 0x13, 
-	0x57, 0x54, 0xc5, 0xc4, 0x24, 0xb9, 00, 0xf0, 0x90, 0x15, 
-	0x9f, 0x99, 0xbd, 0xb4, 0xee, 0xf8, 0xd1, 0xd7, 0x5c, 0x98, 
-	0x39, 0x8a, 0x62, 0xdf, 0x3b, 0xca, 0x99, 0xd8, 0x99, 0x9e, 
-	0x39, 0xfb, 0x14, 0xfb, 0xe7, 0xc1, 0x64, 0xb7, 0x45, 0x61, 
-	0x70, 0xe8, 0xb4, 0xfc, 0xe3, 0x39, 0xca, 0x63, 0x98, 0xb1, 
-	0x71, 0x29, 0x9d, 0x88, 0xef, 0x75, 0x7b, 0xfb, 0x1c, 0xae, 
-	0xde, 0x76, 0x58, 0x13, 0xa7, 0xe3, 0xe8, 0x11, 0x72, 0xbb, 
-	0x83, 0xd, 0x2, 0x6e, 0xa3, 0xcf, 0xf, 0x47, 0x60, 0x45, 
-	0x4a, 0x11, 0x81, 0x9b, 0xe2, 0x62, 0xe5, 0xe, 0xaf, 0xc5, 
-	0x31, 0x63, 00, 0xd4, 0x58, 0xb5, 0x22, 0xaf, 0xf4, 0xd6, 
-	0x9b, 0xe7, 0x95, 0x1, 0xf8, 0x66, 0x67, 0x57, 0xaf, 0xe3, 
-	0x89, 0x3f, 0x6f, 0x9d, 0x55, 0x5a, 0xda, 0x94, 0xc6, 0xd5, 
-	0x62, 0x8c, 0x23, 0xf1, 0x85, 0xf3, 0xbc, 0x47, 0x7a, 0xfe, 
-	0xe5, 0x3d, 0x93, 0x2b, 0xab, 0x5a, 0xd2, 0x18, 0x5e, 0xba, 
-	0x24, 0xb7, 0x24, 0x77, 0x52, 0x7a, 0x7, 0xdd, 0x86, 0xf7, 
-	0x8f, 0xd6, 0x9c, 0x28, 0x69, 0xc8, 0x84, 0x99, 0x9d, 0xf1, 
-	0xea, 0x5b, 0xf9, 0x13, 0x6e, 0xb9, 0x61, 0xe, 0x2b, 0x90, 
-	0x1f, 0x6b, 0x1e, 0x2e, 0xa8, 0x4a, 0xde, 0xb5, 0xa7, 0x6c, 
-	0x4c, 0x49, 0x69, 0x43, 0x43, 0x59, 0x79, 0xd3, 0x71, 0xdc, 
-	0xde, 0xc, 0xc7, 0xa, 0x13, 0x60, 0x7, 0xfb, 0x2c, 0x83, 
-	0x2e, 0x7, 0x7c, 0x2, 0x9b, 0xc5, 0xa1, 0xef, 0xc0, 0xfc, 
-	0x6b, 0x2a, 0x56, 0x50, 0x7d, 0x15, 0xa0, 0xfe, 0x4, 0x4c, 
-	0x71, 0x3b, 0x46, 0xbf, 0x11, 0xa4, 0x65, 0x7e, 0x71, 0x13, 
-	0x81, 0xbd, 0x7f, 0xff, 0x61, 0xe5, 0xf1, 0x3, 0x7b, 0x12, 
-	0xfa, 0xd8, 0x58, 0x6e, 0x1b, 0x51, 0xa1, 0xc7, 0x3, 0xe0, 
-	0x6c, 0x5c, 0x8b, 0x8b, 0xf6, 0x5e, 0xf4, 0x1a, 0x5c, 0x3e, 
-	0x8c, 0xd, 0x2e, 0xea, 0xc9, 0x86, 0xc1, 0xcd, 0x68, 0x8c, 
-	0xae, 0x5f, 0x85, 0xba, 0x5a, 0x8b, 0x85, 0x31, 0x2f, 0x63, 
-	0xa, 0xed, 0x7f, 0x30, 0xf0, 0xc6, 0xd1, 0x75, 0x2, 0x98, 
-	0x62, 0x26, 0xcc, 0xb0, 0x8a, 0x1e, 0xc1, 0x4f, 0x24, 0x52, 
-	0x3e, 0x48, 0x85, 00, 0xea, 0xa9, 0x86, 0xfa, 0x82, 0xcb, 
-	0x7b, 0x7a, 0xdb, 0x72, 0xdc, 0x7d, 0x1d, 0x39, 0x19, 0x59, 
-	0x8b, 0x6b, 0x93, 0x47, 0xe7, 0x60, 0x73, 0xc, 0x66, 0x98, 
-	0x39, 0x56, 0x6d, 0xa1, 0x28, 0x87, 0xd3, 0x3b, 0x3a, 0x75, 
-	0x4a, 0x75, 0x63, 0x7d, 0xc1, 0x44, 0xde, 0x4e, 0x1f, 0x33, 
-	0xbd, 0xca, 0x1e, 0x2, 0xd8, 0x96, 0x57, 0x2, 0x9, 0x60, 
-	0xad, 0x87, 0x91, 0x35, 0x7e, 0x49, 0x69, 0x6e, 0xde, 0xd5, 
-	0x65, 0x36, 0x8c, 0x2f, 0xb9, 0x5c, 0xdd, 0x8e, 0x82, 0x43, 
-	0xcf, 0xcf, 0x6a, 0x6d, 0xa9, 0x48, 0xd3, 0xab, 0x29, 0x2d, 
-	0x2f, 0x31, 0x53, 0x71, 0x96, 0xdb, 0x43, 0xe, 0x46, 0x4, 
-	0x6e, 0x74, 0xd4, 0xc0, 0x32, 0xf0, 0x8b, 0x73, 0xcd, 0x1e, 
-	0x84, 0xb5, 0xd9, 0x47, 0xdf, 0xd7, 0x62, 0x51, 0x6b, 0xcf, 
-	0x9c, 0x36, 0xe6, 0x94, 0x93, 0x33, 0xe2, 0x88, 0x9b, 0x18, 
-	0x1b, 0xe5, 0xce, 0xce, 0x48, 0x6e, 0x2b, 0x2e, 0xae, 0x1f, 
-	0x83, 0xf, 0xf1, 0x83, 0x8a, 0xf1, 0xe1, 0x82, 0xe6, 0xab, 
-	0x3f, 0xf6, 0x91, 0x85, 0xc5, 0x74, 0x81, 0x92, 0xfb, 0x9f, 
-	0x7f, 0xef, 0x5b, 0x37, 0xee, 0x8, 0xdc, 0x63, 00, 0xf7, 
-	0x21, 0x88, 0xe6, 0xe6, 0x6d, 0x45, 0x19, 0x18, 0x30, 0x8b, 
-	0x2f, 0x28, 0xac, 0x2d, 0xc7, 0xe0, 0x1b, 0x6d, 0xca, 0x7d, 
-	0x70, 0xac, 0x2c, 0x56, 0x9c, 0x80, 0x9a, 0xa6, 0x1a, 0x9d, 
-	0x54, 0x34, 0x2b, 0x9b, 0xfc, 0x62, 0x81, 0x59, 0xd9, 0x76, 
-	0x8c, 0xc2, 0x3a, 00, 0xe4, 0xcf, 0xc3, 0xff, 0x32, 0xb4, 
-	0x1, 0xd7, 0x49, 0x47, 0x63, 0xdd, 0x37, 0x1e, 0x5d, 0xfc, 
-	0x24, 0xc0, 0x76, 0x7b, 0xa1, 0xb1, 0x67, 0x2e, 0x51, 0xb9, 
-	0x93, 0x30, 0x68, 0x1b, 0x21, 0xb0, 0xe5, 0x2b, 0x9, 0x70, 
-	0x4c, 0xe1, 0xa8, 0x92, 0xa2, 0xfd, 0x6a, 0xf7, 0xee, 0x8b, 
-	0xdb, 0x44, 0x97, 0x32, 0xd3, 0x67, 0x3, 0x8c, 0x3a, 0x73, 
-	0xc0, 0xc2, 0x72, 0xa0, 0x3f, 0x7e, 0x7, 0x36, 0xbc, 0xdc, 
-	0x8e, 0x25, 0xae, 0xbf, 0x3b, 0x74, 0xe8, 0xd0, 0x93, 0x98, 
-	0x27, 0xa7, 0x2c, 0xb0, 0xee, 0xfd, 0xb2, 0xa7, 0xeb, 0x9c, 
-	0x61, 0xca, 0x1, 0x65, 0x84, 0x32, 0x40, 0x79, 0xa0, 0x5f, 
-	0x7, 0xb7, 0xae, 0xbd, 0xb5, 0x72, 0x79, 0x5f, 0x4f, 0xdb, 
-	0x34, 0x68, 0xf1, 0xf1, 0x3d, 0x3d, 0x8d, 0xb1, 0xe3, 0xb2, 
-	0x17, 0xd7, 0x6b, 0x73, 0x34, 0xc8, 0x4c, 0x4f, 0x4d, 0x9d, 
-	0xd4, 0x28, 0xe0, 0x9e, 0x90, 0xbb, 0xea, 0x24, 0xba, 0xa6, 
-	0x78, 0x7d, 0x20, 0x69, 0xcc, 0x53, 0xeb, 0xfa, 0x1f, 0xd3, 
-	0x8a, 0x4d, 0x4b, 0x9f, 0x8a, 0xbe, 0x3a, 0x96, 0x5f, 0x80, 
-	0x1c, 0x8e, 0x4, 0x77, 0x52, 0x52, 0x66, 0x5b, 0x6b, 0x73, 
-	0xf9, 0x18, 0x68, 0x69, 0x5f, 0x39, 0x11, 0x9f, 0xc9, 0x61, 
-	0x1c, 0x4b, 0x6b, 0x6c, 0x98, 0xe5, 0xd0, 0xde, 0xa1, 0xd3, 
-	0x1f, 0x98, 0xe3, 0xe9, 0x3b, 0x91, 0x81, 0x1b, 0xef, 0x1, 
-	0x5a, 0xe0, 0x96, 0x9, 0x9f, 0xa2, 0x30, 0x90, 0xdc, 0x68, 
-	0x99, 0xfc, 0xc3, 0x8e, 0xfa, 0xa1, 0xdb, 0xf4, 0x9c, 0xb6, 
-	0x37, 0xfc, 0xd1, 0xf9, 0xdc, 0x1a, 0x67, 0x60, 0x2a, 0xe1, 
-	0xef, 0xf4, 0xf6, 0xba, 0x8c, 0x77, 0x37, 0x16, 0x8e, 0x2f, 
-	0x29, 0x6d, 0x54, 0x87, 0x8f, 0x54, 0x9f, 0x80, 0x19, 0xbe, 
-	0x13, 0xb1, 0x8b, 0xe0, 0x58, 0x89, 0xac, 0x4c, 0x1, 0xb7, 
-	0xb5, 0xf, 0xc6, 0x7b, 0x2c, 0xae, 0x66, 0x28, 0x7c, 0xaa, 
-	0x64, 0x3, 0x60, 0x9e, 0x8c, 0x5, 0x27, 0xff, 0x8d, 0xe9, 
-	0x97, 0x89, 0x6b, 0xd6, 0xac, 0x89, 0xc3, 0x42, 0x14, 0xdc, 
-	0xfe, 0xfb, 0x20, 0x1, 0xb6, 0xc7, 0x4c, 0x54, 0x33, 0xfc, 
-	0xc0, 0xae, 0xa9, 0x2e, 0x53, 0xef, 0xae, 0x7f, 0x46, 0xb7, 
-	0xb9, 0x77, 0xde, 0xfd, 0x25, 0x8, 0xbe, 0x53, 0x87, 0xd9, 
-	0xf7, 0x7e, 0x6f, 0xc3, 0xb3, 0xaa, 0xe2, 0xe4, 0x31, 0xcd, 
-	0x81, 0xbb, 0x3e, 0xfe, 0x75, 0xe5, 0x8c, 0x8a, 0xc5, 0x33, 
-	0x53, 0x61, 0x69, 0x98, 0x7a, 0xf1, 0x85, 0x7f, 0xd7, 0x3, 
-	0x6c, 0x93, 0xa7, 0x2c, 0x54, 0x39, 0xb9, 0xf3, 0x55, 0x49, 
-	0xf1, 0x7e, 0xb5, 0x6b, 0xf7, 0x41, 0xfd, 0x3c, 0x37, 0x37, 
-	0xf7, 0xef, 0x82, 0x21, 0x6c, 0x90, 0x57, 0xaf, 0x5e, 0x1d, 
-	0x8d, 0x86, 0x5a, 0x7d, 0xf0, 0xc1, 0x7, 0xf, 0x61, 00, 
-	0xf4, 0x66, 0x2c, 0x75, 0xfd, 0x17, 0xee, 0x4c, 0xc3, 0x7, 
-	0x10, 0xcc, 0xd6, 0xfa, 0xe7, 0xb5, 00, 0x9b, 0x72, 0x22, 
-	0xcf, 0xe8, 0x6f, 0xea, 0xed, 0x6d, 0x6b, 0xa8, 0xad, 0x39, 
-	0xb8, 0xd8, 0xed, 0xe9, 0x9b, 0xd8, 0xd7, 0xd3, 0x99, 0x9d, 
-	0x37, 0x79, 0x55, 0x83, 0x61, 0x77, 0x7a, 0x5c, 0x5e, 0xd3, 
-	0xdb, 0xdb, 0xd3, 0x1a, 0xd5, 0xd1, 0x5e, 0x1b, 0x57, 0x59, 
-	0xb1, 0x5b, 0x33, 0x26, 0x21, 0x31, 0xa3, 0x29, 0x65, 0xf4, 
-	0x24, 0x6e, 0x7f, 0xd, 0x43, 0xa1, 0x40, 0xc9, 0xfe, 0xbc, 
-	0x4f, 0x21, 0xf2, 0x25, 0xee, 0xcd, 0x18, 0xf8, 0x32, 0x9f, 
-	0xf3, 0x36, 0xfd, 0xd3, 0x71, 0x7, 0xc6, 0xb, 0x7f, 0x27, 
-	0x42, 0x70, 0x93, 0x1f, 0xfc, 0x7e, 0x9f, 0xc3, 0x7c, 0xb3, 
-	0x3f, 0x65, 0xc1, 0xc, 0x2f, 0x25, 0x8e, 0xff, 0x51, 0xc0, 
-	0x1b, 0x4a, 0x9c, 0x40, 0xe4, 0x1, 0x1, 0x9a, 0xe1, 0x2d, 
-	0xad, 0x5d, 0x51, 0xef, 0xbe, 0x7f, 0x6c, 0x3c, 0xcc, 0xfc, 
-	0xae, 0xa3, 0xc7, 0xea, 0x4a, 0x30, 0xf2, 0xfb, 0x1, 0x22, 
-	0x72, 0xad, 0x39, 0x81, 0xcd, 0x96, 0x98, 0x3e, 0x2b, 0x8b, 
-	0x4e, 0xc0, 0x4e, 0x5f, 0xa, 0xad, 0x39, 0x86, 0x29, 0x2c, 
-	0x2e, 0x3a, 0x79, 0x10, 0x2, 0xf1, 0x45, 0xb4, 0xfa, 0x51, 
-	0xb3, 0x66, 0xcd, 0xa2, 0x69, 0x7e, 0xd1, 0x12, 0x41, 0x48, 
-	0x12, 0x9f, 0xc0, 0x3e, 0x70, 0xb0, 00, 0xd7, 0x89, 0xba, 
-	0x8f, 0xcd, 0x51, 0x71, 0x8e, 0x82, 0xb7, 0xb6, 0x36, 0xaa, 
-	0x5d, 0x3b, 0xdf, 0xd1, 0x71, 0x6f, 0xbf, 0xf3, 0x9f, 0xa1, 
-	0x15, 0xa2, 0x10, 0xc7, 0xf7, 0x5e, 0x7c, 0x5c, 0x92, 0x3a, 
-	0x7a, 0xc4, 0x67, 0x4, 0x15, 0x1d, 0xdf, 0x8f, 0x6, 0x61, 
-	0xb9, 0x4e, 0xaf, 0xac, 0x34, 0x5f, 0x1d, 0x3b, 0xca, 0xf6, 
-	0x51, 0xa9, 0xf9, 0x8b, 0xae, 0x56, 0x59, 0xd9, 0x53, 0x21, 
-	0x6c, 0x5e, 0x55, 0x5a, 0x7c, 0x40, 0xed, 0xdc, 0x79, 0x50, 
-	0xa7, 0x9b, 0x93, 0x93, 0xd3, 0xaf, 0xcf, 0x47, 0x4d, 0x46, 
-	0x12, 0x5f, 0x5f, 0x5c, 0x24, 0xff, 0xd8, 0x40, 0xdf, 0x7a, 
-	0xeb, 0xad, 0xb1, 0x47, 0x8e, 0x1c, 0x99, 0x8c, 0xf2, 0x3d, 
-	0x83, 0xee, 0xd6, 0x63, 0xd0, 0xe2, 0x7f, 0xc6, 0x56, 0x54, 
-	0x69, 0xe0, 0x45, 0x68, 0xf9, 0x11, 0xbc, 0x27, 0xc4, 0xfb, 
-	0x64, 0xb4, 0x99, 0x18, 0x1d, 0x5d, 0xf0, 0x8b, 0xb5, 0x6b, 
-	0x3e, 0xf9, 0xea, 0x89, 0x13, 0xce, 0x23, 0xa7, 0xa, 0xdb, 
-	0xe2, 0x92, 0x1d, 0xd7, 0xcd, 0xcf, 0x5b, 0xdc, 0xbd, 0xbb, 
-	0x2b, 0x6e, 0x93, 0xa7, 0x72, 0xe7, 0xca, 0x5d, 0x7b, 0x5f, 
-	0x4f, 0x91, 0x97, 0x72, 0xf3, 0xd6, 0x9c, 0x60, 0xd7, 0x38, 
-	0x1c, 0xc1, 0xa6, 0xf7, 0x31, 0xcb, 0x1f, 0x81, 0x17, 0x64, 
-	0x9f, 0xf5, 0x1d, 0x3d, 0xa4, 0xd3, 0x2f, 0x16, 0x23, 0x7b, 
-	0x75, 0x1c, 0xc6, 0xa5, 0xf6, 0xf7, 0xb3, 0xdc, 0x9f, 0xca, 
-	0xd0, 0xbc, 0x8, 0xc1, 0x8d, 0x44, 0xc5, 0x24, 0x87, 0x59, 
-	0x9e, 0x91, 0x9e, 0xd0, 0x71, 0xf8, 0x8, 0x76, 0x87, 0xf9, 
-	0xf3, 0x62, 0x9f, 0xdb, 0x2b, 0x66, 0xbb, 0xff, 0x9e, 0x7, 
-	0x3b, 0xc5, 0xdc, 0x2e, 0xac, 0xe4, 0x81, 0xa5, 0xc1, 0x5b, 
-	0xdc, 0x45, 0x96, 0x96, 0x12, 0xdf, 0x15, 0x6c, 0x96, 0xfb, 
-	0xa3, 0x87, 0xf4, 0x8, 0x6c, 0x2c, 0x23, 0x8d, 0x7d, 0x7f, 
-	0x73, 0x51, 0x76, 0x51, 0x51, 0x5d, 0x63, 0x49, 0x79, 0x33, 
-	0x5b, 0xe3, 0xf, 0xe0, 0xda, 0xe0, 0x44, 0x53, 0x8b, 0x4f, 
-	0x90, 0x33, 0x4c, 0x50, 0xb3, 0x68, 0x74, 0xac, 0x38, 0xe6, 
-	0x6f, 0xe4, 0xe4, 0xe4, 0xe4, 0xc1, 0xfd, 0x12, 0x73, 0xd6, 
-	0x13, 0xaf, 0xb8, 0xe2, 0x8a, 0x18, 0x6e, 0x5b, 0xbc, 0x98, 
-	0x48, 00, 0x2c, 0xbe, 0x94, 0x4d, 0xa6, 0xb0, 0x8, 0xec, 
-	0x83, 0x87, 0xa, 0x21, 0x85, 0x1c, 0x3c, 0x5b, 0xa4, 0x4d, 
-	0x71, 0xf6, 0x97, 0x19, 0x9f, 0xbe, 0x10, 0xd6, 0xff, 0x83, 
-	0xc5, 0xb0, 0x8f, 0x70, 0x8b, 0xef, 0xce, 0x98, 0xb9, 0x4c, 
-	0xfd, 0xed, 0x95, 0xdf, 0x20, 0xec, 0x51, 0x85, 0x47, 0x77, 
-	0x61, 0xe, 0xfc, 0x32, 0xf4, 0xac, 0x3c, 0xea, 0xc4, 0x71, 
-	0xf6, 0x66, 0x30, 0x4f, 0x14, 0x93, 0x80, 0x81, 0xb8, 0x39, 
-	0x3a, 0x6e, 0xe6, 0xb8, 0x29, 0xa8, 0x27, 00, 0xbc, 0xf4, 
-	0x90, 0xda, 0xb9, 0xeb, 0x90, 0xbe, 0x7, 0x9e, 0xe9, 0x78, 
-	0x56, 0x40, 0x33, 0x3c, 0xd8, 0xb5, 0x7e, 0xe1, 0x2, 0xfd, 
-	0x43, 0x83, 0x6d, 0xe3, 0x42, 0x98, 0x8d, 0x1b, 0x37, 0x3e, 
-	0x88, 0xfd, 0xf0, 0x37, 0x60, 0x84, 0xfd, 0x3b, 0xd8, 0x77, 
-	0x5e, 0x8a, 0xe2, 0x48, 0x63, 0x4f, 0xb9, 0x60, 0x63, 0xcf, 
-	0x6b, 0x33, 0x29, 0x36, 0xd6, 0xf9, 0xca, 0xed, 0xb7, 0xfd, 
-	0x37, 0xe6, 0x92, 0xfa, 0x8e, 0x9f, 0x6a, 0xde, 0xbc, 0x60, 
-	0xec, 0xd8, 0xb9, 0x93, 0xb0, 0xb8, 0xe7, 0x6f, 0x27, 0x4e, 
-	0x74, 0x9c, 0xea, 0xac, 0x8c, 0xda, 0x7d, 0xac, 0x2f, 0x6a, 
-	0xfe, 0xa4, 0xc5, 0x57, 0x17, 0x25, 0x8e, 0x8a, 0x4b, 0x4d, 
-	0x4c, 0x55, 0x86, 0x23, 0xba, 0xe3, 0xb2, 0xc9, 0x8b, 0xed, 
-	0xab, 0xe6, 0xad, 0xce, 0xde, 0xd6, 0xac, 0x6a, 0x90, 0x46, 
-	0x48, 0x8a, 0x4f, 0x1c, 0xdb, 0x51, 0x5f, 0x5f, 0x88, 0x21, 
-	0x70, 0x1f, 0x7a, 0x65, 0xf5, 0x9a, 0x55, 0x1b, 0xa3, 0x31, 
-	0xc5, 0xe6, 0x2b, 0x37, 0x20, 0x82, 0x61, 0x7a, 0x10, 0xd7, 
-	0x97, 0xc7, 0xc5, 0xa7, 0x63, 0xc4, 0x9d, 0x97, 0x2c, 0xa2, 
-	0x16, 0x5d, 0x3e, 0x8a, 0x88, 0x22, 0x2, 0x37, 0x11, 0x22, 
-	0x68, 0xa1, 0x7f, 0xcd, 0xd5, 0xd3, 0x4e, 0xba, 00, 0xd6, 
-	0xda, 0xfa, 0xd6, 0x44, 0x8e, 0xe8, 0x71, 0x29, 0x5f, 0x42, 
-	0x42, 0x8c, 0x8b, 0xcf, 0x84, 0x32, 0x32, 0x92, 0x3b, 0xa6, 
-	0x4d, 0x1b, 0x5b, 0x1b, 0x85, 0x85, 0x2c, 0x7c, 0x3e, 0x2e, 
-	0x73, 0x54, 0xdb, 0xe5, 0xab, 0x26, 0xd5, 0x58, 0xe3, 0x48, 
-	0xdc, 0x50, 0x3e, 0x81, 0x5d, 0x54, 0xd2, 0x90, 0xb8, 0x75, 
-	0x7b, 0x69, 0xc6, 0xd1, 0xc2, 0xda, 0xea, 0xfa, 0x86, 0x8e, 
-	0xe3, 0x88, 0xb7, 0x19, 0x8e, 0x73, 0xd6, 0xac, 0x18, 0x1, 
-	0x35, 0xb5, 0x35, 0x81, 0xcd, 0xa4, 0x79, 0x5f, 0x57, 0x1a, 
-	0x7c, 0x92, 0xd, 0x7d, 0x31, 0x6a, 0xeb, 0xcf, 0xc2, 0x5c, 
-	0x7b, 0xf8, 0x62, 0xd2, 0xd6, 0x2, 0x62, 0xf1, 0x59, 0x58, 
-	0x1, 0xb2, 0xdc, 0x93, 0x6b, 0x2, 0xfb, 0x50, 0xfe, 0x71, 
-	0xb4, 0xe4, 0xd4, 0xd8, 0x58, 0xa0, 0x92, 0x33, 0x43, 0x3, 
-	0x98, 0xa0, 0x66, 0x1c, 0x89, 0xc7, 0x34, 0x30, 0x55, 0xd9, 
-	0xf, 0xdc, 0xd1, 0x31, 0xf1, 0x6a, 0x72, 0xde, 0x7c, 0x80, 
-	0x79, 0xaf, 0x3a, 0xe, 0xc7, 0x63, 0x95, 0xa8, 0xa1, 0x8b, 
-	0xd1, 0xc7, 0x26, 0x4d, 0x9b, 0xbe, 0x14, 0xff, 0xb1, 0xfd, 
-	0x88, 0x63, 0x1a, 0x68, 0x11, 0x32, 0xc6, 0xe5, 0x61, 0x78, 
-	0xc5, 0xab, 0xca, 0xcb, 00, 0xf0, 0x9d, 0x87, 0xf4, 0x7d, 
-	0x74, 0x61, 0x34, 0x98, 0x5, 0xd4, 0xe2, 0xf3, 0xfd, 0xe0, 
-	0x70, 0xf0, 0x3d, 0x5e, 0x9f, 0x6f, 0x62, 0xc3, 0x7d, 0xdb, 
-	0x6d, 0xb7, 0xc5, 0x62, 0x54, 0x7d, 0x12, 0xca, 0xf7, 0x17, 
-	0x68, 0xf1, 0xc7, 0xb1, 0x18, 0xe6, 0x2f, 0x50, 0xe2, 0x94, 
-	0x13, 0xa2, 0xcd, 0xfb, 0xad, 0x95, 0xcb, 0xa6, 0xcf, 0x4a, 
-	0x4d, 0x5b, 0x74, 0xb8, 0xae, 0xe1, 0x50, 0x7c, 0x54, 0x94, 
-	0x5e, 0x69, 0xb6, 0x18, 0xcb, 0xc4, 0x58, 0xd6, 0x51, 0xd1, 
-	0xd1, 0xea, 0xee, 0xe9, 0xd3, 0x13, 0xde, 0x2d, 0x2b, 0x33, 
-	0xcb, 0xbb, 0xaa, 0x8d, 0x7d, 0x45, 0xdb, 0xe3, 0xe6, 0xa3, 
-	0xdb, 0xf2, 0xd3, 0x7b, 0x7f, 0xc0, 0xc7, 0x7a, 0x91, 0x15, 
-	0x52, 0x19, 0x97, 0x12, 0x6d, 0xc4, 0x65, 0xc7, 0x98, 0xe3, 
-	0xaa, 0x7a, 0x8d, 0x9a, 0x56, 0x97, 0xd9, 0xc9, 0x87, 0x42, 
-	0x79, 0x53, 0xaf, 0xa8, 0x40, 0x27, 0xd4, 0xd6, 0xd9, 0x5e, 
-	0x97, 0x60, 0x18, 0xdc, 0x44, 0xe9, 0x35, 0x62, 0xe2, 0x92, 
-	0x5c, 0x56, 0xcd, 0x3d, 0x6a, 0x54, 0x66, 0x47, 0xf7, 0x98, 
-	0x29, 0xb5, 0x76, 0x9b, 0x13, 0x6d, 0x8b, 0xd7, 0x48, 0x1c, 
-	0x95, 0xd9, 0x96, 0x9b, 0xb7, 0xaa, 0x5a, 0xf, 0x96, 0xa3, 
-	0x94, 0x5a, 0x73, 0x13, 0xe3, 0x11, 0x52, 0x44, 0xe0, 0xf6, 
-	0x5b, 0x2d, 0xc8, 0xc2, 0x67, 0xc1, 0x60, 0x63, 0x87, 0xe7, 
-	0x23, 0xb7, 0xce, 0x2e, 0x45, 0x89, 0x83, 0x46, 0x14, 0x4f, 
-	0x6b, 0x90, 0x55, 0xcb, 0x73, 0xea, 0xe8, 0x6, 0x96, 0xeb, 
-	0x74, 0x9c, 0x81, 0xcf, 0x7c, 0x77, 0xa0, 0x18, 0xcc, 0xfc, 
-	0x23, 0xd5, 0x29, 0xbb, 0x76, 0x9f, 0x4c, 0x85, 0x5f, 0xd6, 
-	0xd6, 0xde, 0x7b, 0x4, 0x4f, 0x38, 0x87, 0x2d, 0xda, 0x99, 
-	0xbe, 0x38, 0x82, 0xdc, 0xaa, 0xb1, 0x71, 0xa9, 0x89, 0x5b, 
-	0x2d, 0xf3, 0x20, 0x98, 0xff, 0x1, 0x6d, 0x3d, 0xe1, 0x62, 
-	0xd0, 0xd6, 0x4, 0x2d, 0x9d, 0x90, 0x5c, 0x5b, 0x7d, 0x3e, 
-	0x23, 0x58, 0x79, 0x8f, 0x3e, 0xcf, 0x39, 0x38, 0x7c, 0xf8, 
-	0x4, 0xb6, 0xf7, 0x8e, 0xd2, 0x2b, 0xcf, 0x26, 0xfa, 0x81, 
-	0xfd, 0x93, 0x47, 0x1f, 0x54, 0x4d, 0x8d, 0x3e, 0xc5, 0x71, 
-	0xba, 0x9b, 0xa4, 0xd4, 0x8f, 0xbe, 0xff, 0x89, 0x40, 0xf2, 
-	0xd3, 0x67, 0x2c, 0x55, 0x37, 0xdf, 0xf6, 0x7f, 0xcc, 0x69, 
-	0xd3, 0x97, 0x11, 0xdc, 0xb6, 0x8e, 0xf6, 0x66, 0x55, 0x5a, 
-	0x52, 0xe0, 0x8d, 0x72, 0xc6, 0xd8, 0x9a, 0x9a, 0xaa, 0x75, 
-	0xbc, 0x89, 0xb9, 0xb, 0x14, 0x6, 0xa2, 0xf4, 0xb4, 0x8b, 
-	0x9e, 0x82, 0xc1, 0xdd, 0x31, 0x63, 0x27, 0x69, 0x50, 0x9f, 
-	0x2c, 0xcb, 0x7, 0xc0, 0x39, 0x87, 0xee, 0x56, 0xd0, 0x86, 
-	0x81, 0xf5, 0xf3, 0x1c, 0xb1, 0x16, 0x50, 0x8b, 0x2f, 0xd3, 
-	0x86, 0x72, 0x4d, 0x9f, 0x24, 0xd7, 0xfa, 0xe2, 0x3c, 0xff, 
-	0xc3, 0x60, 0x9b, 0xd, 0xd3, 0x9b, 0xd1, 0xd0, 0xe2, 0x9f, 
-	0xc1, 0xc9, 0x36, 0xd7, 0x95, 0x94, 0x94, 0xfc, 0x2b, 0xf6, 
-	0x98, 0x97, 0xa0, 0x18, 0xae, 0x6b, 0x26, 0xe6, 0x7c, 0x3d, 
-	0xde, 0x11, 0xb5, 0x64, 0x4a, 0x72, 0x8a, 0xd6, 0x37, 0x6c, 
-	0xd8, 0x64, 0xf0, 0xea, 0xb1, 0x83, 0x7, 0xd5, 0xa7, 0x66, 
-	0xcd, 0x32, 0xcb, 0x5a, 0xdb, 0x8c, 0x2e, 0x58, 0xf5, 0xb1, 
-	0x9e, 0x3e, 0xf3, 0xcd, 0x83, 0x2d, 0xc6, 0x75, 0xb3, 0x57, 
-	0xa8, 0x9c, 0x31, 0x13, 0xb5, 0x55, 0x4, 0x11, 0xb5, 0xad, 
-	0x49, 0x51, 0xd7, 00, 0x1b, 0xb6, 0x24, 0x87, 0x91, 0xb8, 
-	0xbb, 0x55, 0xf9, 0x5a, 0x4b, 0xff, 0x37, 0xda, 0x9d, 0xd1, 
-	0xde, 0xd9, 0xb3, 0x6f, 0xa2, 0xc5, 0x10, 0x96, 0x72, 0x73, 
-	0x97, 0xd5, 0xd1, 0x49, 0x4, 0xf0, 0xa, 0xc2, 0xc1, 0xed, 
-	0x60, 0xe4, 0x1b, 0x34, 0x13, 0x1, 0x2e, 0xf, 0x23, 0xf0, 
-	0x23, 0x2, 0x37, 0xe5, 0x91, 0xad, 0xb9, 0xc7, 0x83, 0xb6, 
-	0x8, 0xbe, 0x68, 0xc, 0xde, 0xb7, 0xa, 0x6b, 0x4, 0xf9, 
-	0x87, 0x8d, 0xca, 0xf, 0x3c, 0x70, 0xa8, 0x6a, 0xf4, 0x9e, 
-	0xfd, 0x15, 0x29, 0xf9, 0xf9, 0x35, 0xa5, 0x5d, 0xdd, 0x7d, 
-	0x4, 0x35, 0xc1, 0x2d, 0x9a, 0x5a, 0x40, 0x4d, 0x5f, 0x34, 
-	0x38, 0x2b, 0x48, 0x8c, 0x2, 0xf2, 0xc3, 0x58, 0xb0, 0x60, 
-	0xc1, 0xc7, 0xd0, 0xf, 0xfb, 0x36, 0x76, 0x1f, 0x39, 0x39, 
-	0x67, 0x8d, 0x7b, 0x17, 0x84, 0x4, 0xb8, 0x92, 0xb9, 00, 
-	0x97, 0xd7, 0xa2, 0x71, 0xe5, 0x9e, 0xd5, 0x67, 0x98, 0xc0, 
-	0x2e, 0x28, 0x80, 0x2c, 0x1a, 0xf1, 0x98, 0xdf, 0x9d, 0x81, 
-	0xa9, 0x97, 0x9, 0x26, 0xce, 0x2d, 0xc3, 0x2, 0x21, 0x1b, 
-	0x4e, 0xc3, 0x71, 0xa3, 0x2e, 0xdc, 0x3, 0xea, 0x9e, 0xe6, 
-	0xb7, 0x9f, 0xc, 0x2e, 0x93, 0xc5, 0xd2, 0x4d, 0x23, 0x2d, 
-	0xf5, 0x66, 0xf5, 0xf6, 0x5b, 0x8f, 0x61, 0xff, 0x71, 0x9f, 
-	0x6a, 0x68, 0x28, 0x86, 0xe9, 0x37, 0xa, 0x35, 0xa7, 0x60, 
-	0x6d, 0xa5, 0x98, 0xb3, 0xe7, 0x2c, 0xc3, 0x4e, 0x3d, 0xf, 
-	0x6, 0xd8, 0x5c, 0x3c, 0x3a, 0x4b, 0x97, 0x9, 0x8b, 0x95, 
-	0xcc, 0xe4, 0x94, 0x6c, 0xb3, 0xa0, 0xab, 0xb4, 00, 00, 
-	0x20, 00, 0x49, 0x44, 0x41, 0x54, 0xd5, 0xdd, 0xd5, 0xad, 
-	0x2a, 0x2b, 0x8f, 0xd8, 0xb6, 0x6c, 0xdb, 0xaf, 0x96, 0x2c, 
-	0xea, 0x55, 0xdc, 0xa3, 0x2d, 0x60, 0xc5, 0x3c, 0xb3, 0xce, 
-	0x46, 0x80, 0x2e, 0x3e, 0x9f, 0x5b, 0xc3, 0xbc, 0x26, 0xc9, 
-	0x7b, 0x72, 0xad, 0x6f, 0x9e, 0x87, 0x7f, 0x16, 0x2d, 0x9e, 
-	0x8b, 0xbc, 0xff, 0xf8, 0xf0, 0xdc, 0xd9, 0x5b, 0x31, 0xef, 
-	0x7a, 00, 0x40, 0xf6, 0x69, 0x60, 0x9f, 0xed, 0xab, 0x5e, 
-	0x2b, 0x2a, 0x52, 0x45, 0xcd, 0xcd, 0xaa, 0x13, 0x3, 0xed, 
-	0x6f, 0x95, 0x94, 0xa8, 0x3f, 0xe5, 0x1f, 0x36, 0x30, 0x48, 
-	0xac, 0x4b, 0x68, 0x67, 0xa1, 0x6d, 0x51, 0xca, 0x5, 0x3e, 
-	0xa5, 0xa7, 0xd7, 0xa8, 0x95, 0x79, 0x73, 0x55, 0x76, 0xa2, 
-	0x7e, 0x9d, 0x30, 0x54, 0x51, 0x36, 0x23, 0x66, 0x46, 0x82, 
-	0x2d, 0xaf, 0xcf, 0x54, 0xbd, 0xc5, 0xdd, 0xaa, 0x62, 0xf8, 
-	0x9f, 0x5, 0x5e, 0x91, 0x5f, 0xa2, 0xb2, 0x69, 0xad, 0x33, 
-	0x1c, 0x21, 0x45, 0x4, 0x6e, 0x9f, 0xc6, 0xa6, 0xd0, 0xf0, 
-	0x63, 0xe9, 0x28, 0x1b, 0xe2, 0x10, 0x1c, 0x21, 0xc2, 0x77, 
-	0x99, 0xbb, 0xf7, 0x56, 0xa4, 0x1d, 0x38, 0x54, 0x93, 0x4, 
-	0x8d, 0x5d, 0x8a, 0xa3, 0x9d, 0xb6, 0x21, 0xe9, 0x63, 0x70, 
-	0x2, 0x62, 0x2, 0x5a, 0xcc, 0x70, 0x82, 0x9d, 0x85, 0xe2, 
-	0x33, 0x91, 0x68, 0x9a, 0xe1, 0xd1, 0x30, 0xbf, 0xbf, 0x8f, 
-	0x4a, 0xbd, 0xe9, 0x86, 0x1b, 0x6e, 0x88, 0xbd, 0x10, 0x7d, 
-	0xeb, 0x33, 0x1, 0x5a, 0xb4, 0x72, 0x30, 0x98, 0x79, 0x1f, 
-	0xe7, 0x93, 0x69, 0x4d, 0x8a, 0x1d, 0x51, 0xde, 0xca, 0xaa, 
-	0x46, 0xc3, 0xe9, 0x1c, 0xad, 0x66, 0xcd, 0xb9, 0xcc, 0x9c, 
-	0x3a, 0x6d, 0x21, 0xe, 0x44, 0x8c, 0xc2, 0x81, 0x3, 0x86, 
-	0xcd, 0x61, 0x77, 0xa8, 0x7, 0x1e, 0xfc, 0x8e, 0xea, 0xc1, 
-	0x89, 0x27, 0xb0, 0x5, 0x54, 0x65, 0x45, 0x91, 0x7a, 0xf5, 
-	0xe5, 0xc7, 0xc0, 0x6, 0xa5, 0x3e, 0xfb, 0xb9, 0xef, 0x29, 
-	0x68, 0x66, 0x5d, 0x3d, 0x29, 0xa3, 0xc7, 0xe8, 0x73, 0xd8, 
-	0xcc, 0xf8, 0x4, 0x35, 0x6f, 0xde, 0xe5, 0x6a, 0xef, 0x9e, 
-	0xf7, 0xa0, 0xc1, 0xf7, 0x60, 0xc3, 0x48, 0xba, 0x46, 0xdc, 
-	0xa2, 0x25, 0x57, 0x19, 0x63, 0xc7, 0x66, 0xe0, 0x40, 0x2a, 
-	0x1e, 0x37, 0x7, 0x4b, 0x1, 0xf9, 0xd3, 0x3c, 0xc7, 0xe2, 
-	0x21, 0x83, 0x7, 0x25, 0x8e, 0x49, 0x1f, 0x6b, 0x26, 0x26, 
-	0x25, 0x7a, 0xa1, 0xf5, 0x8d, 0xfd, 0x7, 0x8e, 0x53, 0x83, 
-	0x9b, 0xfe, 0x99, 0x5, 0x1b, 0xcf, 0x77, 0xe3, 0x79, 0x6b, 
-	0x4, 0xb2, 0x80, 0x59, 0xc2, 0xc1, 0xd7, 0xc4, 0x86, 0x38, 
-	0x96, 0x51, 0xc2, 0xf4, 0xcf, 0x17, 0x51, 0x8b, 0x4f, 0x1a, 
-	0x93, 0x1e, 0xb3, 0x20, 0x3f, 0xff, 0x2a, 0xe4, 0x49, 0xa7, 
-	0xe9, 0x99, 0x82, 0xa3, 0xa, 0x1b, 0xba, 0xd4, 0x33, 0x5, 
-	0x5, 0xaa, 0xb6, 0xe3, 0xb4, 0x65, 0x2d, 0xc0, 0x66, 0x24, 
-	0xd8, 0xcc, 0xf8, 0xd7, 0xa7, 0xf2, 0x4b, 0xf6, 0xaa, 0xf4, 
-	0xce, 0x76, 0xd5, 0xd1, 0xd7, 0xa3, 0x96, 0x1, 0xe0, 0x38, 
-	0x2d, 0x52, 0x4d, 0x1d, 0x9d, 0xa2, 0x46, 0x3b, 0xcd, 0xc, 
-	0x3a, 0x4c, 0x8b, 0x7b, 0xcb, 0xfa, 0x8c, 0xb3, 00, 0xb7, 
-	0x1f, 0xdb, 0x7e, 0x8c, 0x73, 0xc0, 0x8d, 0xda, 0x3b, 0x52, 
-	0x8a, 0xc, 0xdc, 0xc0, 0x33, 0x17, 0x96, 0x89, 0x63, 0x83, 
-	0x46, 0xe7, 0xd3, 0xdc, 0x91, 0x66, 0x1d, 0x26, 0x3e, 0x24, 
-	0x7b, 0xe7, 0xde, 0xf2, 0x31, 0xf9, 0x47, 0xea, 0xe2, 0xe, 
-	0x1d, 0xae, 0x2e, 0xc1, 0x54, 0xd7, 0x16, 0xc4, 0x2c, 0x86, 
-	0xb, 0xd6, 0xd8, 0x4, 0x37, 0xc1, 0xcc, 0xfb, 0x4, 0x36, 
-	0x5b, 0x1b, 0xb2, 0xc0, 0x8e, 0xbe, 0xd5, 0x68, 0x2c, 0x6e, 
-	0x78, 0xc, 0xfe, 0xe4, 0xab, 0xaf, 0xbe, 0x3a, 0x96, 0xc2, 
-	0x77, 0x3e, 0xc9, 0xa, 0x6a, 0x9, 0xd3, 0x27, 0x88, 0x83, 
-	0x81, 0x2c, 0xf7, 0x8, 0x66, 0xac, 0x99, 0xf6, 0x62, 0xbe, 
-	0x5d, 0x61, 0x14, 0xdf, 0xe0, 0x29, 0x26, 00, 0x87, 0x59, 
-	0x56, 0x76, 0xd2, 0x36, 0x26, 0x3d, 0x3, 0x3b, 0xb9, 0x1c, 
-	0xaa, 0xae, 0xfa, 0xb0, 0x51, 0x5b, 0x7d, 0x58, 0x7f, 0xa, 
-	0xd3, 0x13, 0xc2, 0xec, 0xa3, 0x1a, 0x9d, 0x9a, 0xa3, 0x66, 
-	0xcd, 0x5e, 0x1a, 00, 0xf7, 0x65, 0x4b, 0xaf, 0x51, 0x31, 
-	0xb1, 0xf1, 0xba, 0x6e, 0x7c, 0x79, 0xf8, 0xe2, 0x5f, 0xb6, 
-	0xf4, 0x5a, 0xd, 0xee, 0xb2, 0xd2, 0x2, 0x80, 0x32, 0x56, 
-	0x27, 0xb1, 0x68, 0xf1, 0xd5, 0xda, 0xdf, 0xb3, 0xfb, 0x1d, 
-	0xd5, 0xd9, 0x56, 0x85, 0x51, 0x5a, 0x36, 0x15, 0x20, 0x7f, 
-	0x16, 0xc8, 0xa, 0x7c, 0x35, 0x8d, 0x9, 0xe3, 0x53, 0xb4, 
-	0x85, 0xd6, 0xda, 0xda, 0x6e, 0x60, 0x1, 0x9, 0xe2, 0xd9, 
-	0xbd, 0x38, 0x8, 0x11, 0xd6, 0x83, 0x87, 0x65, 0x37, 0x71, 
-	0xe0, 0x2, 0x1b, 0x11, 0x1b, 0x2d, 0x5, 0x2, 0x9b, 0x5a, 
-	0x5d, 0x80, 0x4e, 00, 0x4b, 0x98, 0xbe, 0x15, 0xd8, 0x2, 
-	0x6e, 0xb9, 0xa7, 0xb, 0x73, 0x8e, 0xfe, 0xd9, 0xdd, 0x2e, 
-	0x95, 0x14, 0x1f, 0xaf, 0x3c, 0xe0, 0x27, 0xce, 0xb, 0x53, 
-	0x3d, 0x70, 00, 0xa7, 0xf9, 0x61, 0xc5, 0x49, 0xe3, 0x40, 
-	0x5d, 0xfd, 0x90, 0x72, 0xc5, 0xf2, 0x50, 0x55, 0x5f, 0x77, 
-	0x4c, 0xf3, 0xa2, 0xa5, 0xa7, 0x5b, 0x2d, 0x9e, 0x34, 0x17, 
-	0xe0, 0x1e, 0xad, 0xd8, 0x10, 0x60, 0x79, 0xa5, 0xea, 0xf5, 
-	0xda, 0xda, 0x93, 0x1d, 0x46, 0x7c, 0xa7, 0xc7, 0xec, 0x75, 
-	0x61, 0x87, 0xf4, 0x90, 0x12, 0xed, 0x17, 0x89, 0x62, 0x4c, 
-	0x47, 0x6d, 0x2d, 0x61, 0xfa, 0x91, 0x51, 0x64, 0xe0, 0x46, 
-	0xda, 0x30, 0xca, 0xe1, 0x7c, 0x7f, 0x14, 0x81, 0xd3, 0x7f, 
-	0x91, 0x65, 0x1c, 0x2a, 0x36, 0x4, 0xd6, 0xdc, 0xb6, 0xa3, 
-	0x3c, 0xe3, 0x48, 0x61, 0x5d, 0x74, 0xfe, 0xe1, 0xba, 0x12, 
-	0x98, 0x85, 0x1f, 0x22, 0x5e, 0x39, 0x9c, 0x15, 0xd8, 0x4, 
-	0xb5, 0x15, 0xd8, 0x4, 0x38, 0xc5, 0x90, 0x5f, 0x6f, 0xc7, 
-	0x2a, 0xb3, 0x99, 0xe8, 0x5f, 0x3d, 0x8e, 0x16, 0x3a, 0x81, 
-	0xa6, 0xb8, 0x8, 0xe, 0x9e, 0x9d, 0x53, 0x22, 0xd8, 0xfa, 
-	0x3, 0xee, 0x74, 0x7f, 0x99, 0xf7, 0x5, 0xc4, 0x56, 0x1f, 
-	0x2b, 0xa9, 0x14, 0xce, 0xf, 0x37, 0xb9, 0xe5, 0x92, 0xa0, 
-	0xa6, 0xb9, 0x8b, 0x43, 0x1e, 0x6c, 0xd4, 0x8a, 0x5c, 0x9c, 
-	0x81, 0xe5, 0x94, 0x6, 0xfa, 0x86, 0x5a, 0x8b, 0xfa, 0x58, 
-	0x10, 0xfa, 0x13, 0xdc, 0x18, 0x89, 0xad, 0xad, 0x3d, 0x89, 
-	0x23, 0x7e, 0xd2, 0x43, 0x47, 0xb0, 0xdc, 0x9d, 0x35, 0x67, 
-	0x5, 0xce, 0x6d, 0x8b, 0x57, 0xdd, 0xdd, 0x9d, 0xaa, 0xb7, 
-	0xb7, 0xb, 0x8d, 0x42, 0x86, 0xca, 0xc9, 0x9d, 0xad, 0x1b, 
-	0x81, 0xc6, 0xfa, 0x4a, 0x95, 0x96, 0x6a, 0xa8, 0x68, 0xac, 
-	0x42, 0x1a, 0x8c, 0xec, 0xf6, 0x68, 0x85, 0x75, 0xdd, 0xfa, 
-	00, 0x44, 0xc6, 0xe3, 0x2c, 0x53, 0x6b, 0x6b, 0xab, 0x81, 
-	0xef, 0x31, 0xb1, 0xa1, 0xc3, 0xa4, 0xb6, 0x47, 0x63, 0x65, 
-	0xa2, 0x81, 0xb2, 0xb1, 0x91, 0x12, 0x90, 0x8b, 0xcf, 0x3a, 
-	0x11, 0xa0, 0xf3, 0x1e, 0x49, 0x80, 0x6d, 0xf5, 0xf5, 0x83, 
-	0x11, 0xfc, 0x87, 0x63, 0x83, 0x54, 0xde, 0xf6, 0xed, 0xa, 
-	0xe7, 0x84, 0x5, 0x52, 0xfd, 0x9f, 0x7d, 0xfb, 0xd4, 0xba, 
-	0xe2, 0x12, 0xdd, 0xa7, 0xe, 0xdc, 0x1c, 0x42, 0xc0, 0x8b, 
-	0xee, 0x50, 0x3, 00, 0xce, 0x5, 0x59, 0x7b, 0x80, 0x87, 
-	0x8a, 0xf6, 0x36, 0xb5, 0x30, 0x23, 0x43, 0xcd, 0x1d, 0x93, 
-	0x8e, 0x5f, 0x82, 0x30, 0x47, 0xad, 0x4c, 0x36, 0xaf, 0xed, 
-	0x35, 0x8d, 0x8e, 0x8d, 0x2d, 0xc6, 0xbb, 0x43, 0x48, 0x2e, 
-	0x28, 0xca, 0x69, 0xb, 0x47, 0x2f, 0x60, 0x61, 0x63, 0x18, 
-	0x14, 0x63, 0x28, 0x97, 0x11, 0x83, 0x5b, 0xeb, 0x4a, 0xc2, 
-	0x89, 0x8e, 0xba, 0x92, 0x8e, 0xd0, 0xf2, 0xb7, 0xf2, 0x8, 
-	0xd, 0x8b, 0x50, 0xdf, 0xe6, 0xf6, 0x9d, 0xe5, 0x63, 0xf, 
-	0x1f, 0xa9, 0x75, 0xe6, 0x17, 0xd4, 0x15, 0xa3, 0x4f, 0xbf, 
-	0x9, 0x9, 0x55, 0xc1, 0xd1, 0x4, 0x27, 0xb8, 0x5, 0xd4, 
-	0xf4, 0x59, 0x3b, 0x74, 0x52, 0x12, 0x4a, 0xa3, 0x1d, 0x9b, 
-	0xfd, 0x6f, 0xc4, 0x82, 0x94, 0x9f, 0x62, 0x41, 0x4a, 0x74, 
-	0x6e, 0x6e, 0xee, 0x70, 0xf8, 0x81, 0x64, 0x22, 0x23, 0x2b, 
-	0xa8, 0x25, 0x6c, 0x5, 0x33, 0xc3, 0x7a, 0x4, 0x1a, 0x82, 
-	0xc5, 0x1, 0x29, 0x2, 0x1a, 0x60, 0xf0, 0x2, 0xc0, 0x6, 
-	0xbb, 0xa, 0x38, 0x9a, 0x9, 0xfd, 0xb7, 0x74, 0x83, 0x47, 
-	0x18, 0x83, 0xfa, 0x95, 0x19, 0xfd, 0x64, 0x75, 0xff, 0xfd, 
-	0xf7, 0x9f, 0xb1, 0x40, 0xbf, 0xff, 0x7f, 0x4f, 0x9c, 0x31, 
-	0x8e, 0x44, 0xe0, 0xc2, 0x96, 0x5, 0xb, 0xaf, 0x50, 0xdb, 
-	0xb6, 0xbe, 0xa1, 0x6f, 0x2d, 0x5a, 0x74, 0x95, 0x6, 0x16, 
-	0xcb, 0x29, 0xf4, 0xd9, 0xcf, 0x7e, 0x56, 0x82, 0x43, 0xf2, 
-	0xd9, 0x10, 0xf9, 0x4f, 0x56, 0x31, 0x70, 0x52, 0xb3, 0xee, 
-	0x52, 0xe0, 0x10, 0x44, 0x36, 0x4e, 0x58, 0x5e, 0xe9, 0xe2, 
-	0xa9, 0xa8, 0x26, 0xe2, 0x68, 0x13, 0x9e, 0x60, 0x16, 0x90, 
-	0xd3, 0x67, 0x63, 0x27, 0x9a, 0x5c, 0x7c, 0x2b, 0xc0, 0x19, 
-	0x1e, 0x29, 0xc2, 0xa9, 0x83, 0xca, 0x83, 0xae, 0xc, 0xc1, 
-	0xed, 0x42, 0xbe, 0x38, 0xb9, 0x41, 0xd5, 0x74, 0x74, 0x28, 
-	0xe, 0x96, 0xd, 0x87, 0x38, 0xae, 0x51, 0x5f, 0x77, 0xdc, 
-	0xa7, 0x59, 0x50, 0xce, 0x36, 0x68, 0x6f, 0xa6, 0xcb, 0xa5, 
-	0xa8, 0x34, 0xa3, 0xa1, 0xb5, 0x43, 0x6e, 0x74, 0x1a, 0x4e, 
-	0x5e, 0xc3, 0x79, 0x27, 0x42, 0x70, 0x53, 00, 0x88, 0x29, 
-	0x2b, 0xa2, 0xcf, 0x1e, 0xd9, 0x4, 0xf6, 0xee, 0xbd, 0x95, 
-	0xe9, 0x87, 0xb, 0x6b, 0x63, 0x8e, 0xf8, 0x80, 0xbd, 0x11, 
-	0x99, 0x54, 0xfa, 0x33, 0x23, 0x98, 0xa5, 0x8f, 0x2d, 0x61, 
-	0x1, 0x36, 0xb, 0xa2, 0x6d, 0x17, 0xec, 0xfb, 0xfd, 0x17, 
-	0x98, 0xb3, 0xf7, 0xdc, 0x78, 0xe3, 0x8d, 0x31, 0xe7, 0xe3, 
-	0x88, 0x23, 0x1, 0x32, 0xf2, 0xd7, 0x1a, 0x9b, 0x42, 0x4a, 
-	0xa2, 0x2f, 0x60, 0x96, 0x30, 0x4f, 0x1, 0x5, 0xa8, 0xbd, 
-	0x68, 0x78, 0xc, 0xee, 0x53, 0xe6, 0xe0, 0x16, 0x1, 0x4d, 
-	0xad, 0x36, 0x92, 0x34, 0x6b, 0xf6, 0x65, 0xea, 0x99, 0xe7, 
-	0xe, 0xea, 0xb5, 0xe5, 0xda, 0xa2, 0xb2, 00, 0xd6, 0x9a, 
-	0xcf, 0x94, 0xa9, 0xb, 0x2, 0xe0, 0x5e, 0xb6, 0xfc, 0x46, 
-	0xeb, 0xa3, 0x11, 0x9, 0xb3, 0xa1, 0x82, 0xe3, 0xa, 0x40, 
-	0x58, 0x8, 0xdd, 0x18, 0xbc, 0x6b, 0x50, 0x98, 0x63, 0x36, 
-	0x61, 0xa5, 0x90, 0xf, 0xec, 0xaf, 0xf3, 0x97, 0x50, 0x34, 
-	0xc8, 0xad, 0x40, 0x17, 0x6d, 0x7e, 0x2e, 0x40, 0xee, 00, 
-	0x80, 0x93, 0xab, 0xaa, 0x94, 0x37, 0xa, 0x22, 0xf, 0x29, 
-	0x2a, 0x6b, 0x6d, 0x55, 0x9f, 0x7a, 0xdd, 0xd7, 0xc0, 0x9d, 
-	0xcd, 0x47, 0x73, 0x86, 0xa2, 0xb1, 0xfe, 0x84, 0x6e, 0xa0, 
-	0x76, 0x16, 0x3b, 0x54, 0x71, 0x4b, 0x8b, 0xfa, 0xc4, 0xcc, 
-	0x99, 0x66, 0xc, 0xd6, 0xa3, 0x2, 0xe2, 0x6a, 0x66, 0x82, 
-	0x91, 0x57, 0xdc, 0x63, 0x94, 0xe2, 0x38, 0x2, 0x2a, 0xa2, 
-	0x21, 0x92, 0x68, 0x6e, 0x76, 0x5f, 0x38, 0x96, 0x81, 0x53, 
-	0x98, 0x87, 0xd1, 0xc8, 0x45, 0x4, 0x6e, 0xa, 0xc, 0x96, 
-	0x46, 0xe0, 0x8f, 0xc6, 0x39, 0x4c, 0x4d, 0xbf, 0xf3, 0x99, 
-	0xe6, 0x43, 0x2c, 0x77, 0x50, 0x34, 0x2, 0x1b, 0x3, 0x67, 
-	0xa9, 0x7, 0xa, 0x6a, 0x13, 0xe, 0x1f, 0xae, 0x2f, 0x71, 
-	0x79, 0xf4, 0xaa, 0x33, 0x2, 0xdb, 0x6a, 0x8a, 0xb3, 0x5, 
-	0x24, 0xc0, 0xe9, 0xf3, 0x3e, 0x19, 0x25, 0xad, 0x8a, 0x1, 
-	0x4d, 0xfd, 0x4, 00, 0xbd, 0xe4, 0xda, 0x6b, 0xaf, 0x85, 
-	0x75, 0x8b, 0x41, 0xa4, 0x73, 0x48, 0x43, 0x1, 0x35, 0xc1, 
-	0x4d, 0x47, 0x2d, 0xd, 0x6d, 0xed, 0x85, 0xd9, 0x6d, 0x60, 
-	0xc, 0x40, 0xd1, 0x9a, 0xe0, 0x32, 0xc9, 0xb, 0x45, 0x9d, 
-	0x9d, 0x6d, 0xaa, 0x1, 0xa6, 0xf7, 0x87, 0x9b, 0x5e, 0xd6, 
-	0x45, 0xc8, 0x9d, 0x34, 0x5b, 0x65, 0x64, 0xe6, 0x60, 00, 
-	0xed, 0xdc, 0x95, 0x88, 0xd, 0x18, 0xa6, 0x21, 0xd, 0xce, 
-	0x91, 0x63, 0x84, 0x1f, 0xb, 0x63, 0x4a, 0x15, 0xe, 0x5c, 
-	0x30, 0xf1, 0xb, 0x26, 0x5a, 0x9b, 0xf3, 0x79, 0x30, 0xd0, 
-	0x9, 0x6e, 0x1, 0x7d, 0xb0, 0x16, 0x1f, 0x8e, 0x90, 0xf3, 
-	0xeb, 0x52, 0x2a, 0x2b, 0x54, 0x1a, 0xd6, 0x9, 0x8, 0xa5, 
-	0x21, 0xdf, 0x77, 0xde, 0x79, 0x47, 0x77, 0x2f, 0x56, 0xe2, 
-	0x64, 0x56, 0x4e, 0x3, 0xa, 0xb1, 0x4c, 0xdf, 0xff, 0xfe, 
-	0xf7, 0xd5, 0xaa, 0x55, 0xab, 0x74, 0x77, 0x69, 0xe7, 0xce, 
-	0x9d, 0xea, 0x91, 0x47, 0x1e, 0xd1, 0x8d, 0x54, 0xa8, 0x38, 
-	0x3c, 0xa3, 0xfd, 0xf1, 0xc7, 0xff, 0xa8, 0xa, 0x8e, 0x56, 
-	0xaa, 0x18, 0x58, 0x46, 0x4e, 0xfb, 0x1c, 0x80, 0x51, 0xa9, 
-	0x44, 0xbb, 0x37, 0x2d, 0xd1, 0xae, 0xd2, 0xdc, 0xca, 0xd1, 
-	0x57, 0xd2, 0xa3, 0x4e, 0xca, 0xbb, 0x67, 0xf2, 0x5, 0xc7, 
-	0x60, 0x83, 0x4e, 0x47, 0xf, 0x94, 0x53, 0x85, 0x45, 0x48, 
-	0x11, 0x81, 0x5b, 0xc3, 0x49, 0x74, 0xe6, 0x8, 0x98, 0xe5, 
-	0x4, 0x76, 0x41, 0x61, 0x43, 0xf2, 0x81, 0x3, 0xb5, 0xa3, 
-	0xe, 0x1f, 0xa9, 0x2b, 0xe9, 0x73, 0x7b, 0x36, 0xa3, 0xfc, 
-	0x64, 0x42, 0x38, 0x60, 0x13, 0xe0, 0xcc, 0x99, 0xa5, 0x20, 
-	0xd9, 0x71, 0x42, 0xca, 0x4d, 00, 0xd2, 0xea, 0xeb, 0xae, 
-	0xbb, 0x4e, 0x9d, 0xcb, 0x93, 0x51, 0xc2, 0x81, 0x3a, 0x58, 
-	0x4b, 0x73, 0x50, 0x9, 0x9a, 0xca, 0xe4, 0x28, 0x32, 0xcd, 
-	0x6e, 0x2, 0x1a, 0x3f, 0xf, 0x64, 0x40, 0x58, 0x47, 0xce, 
-	0xbe, 0xf4, 0x7d, 0x7b, 0xc4, 0xff, 0xb7, 0x6d, 0x79, 0x43, 
-	0xfd, 0xf5, 0xb9, 0x5f, 0x6, 0xde, 0xbb, 0xe6, 0xba, 0x7b, 
-	0x2, 0xe1, 0xf3, 0x11, 0x60, 0xc3, 0x86, 0x95, 0x63, 0x7a, 
-	00, 0xe, 0x3f, 0x5e, 0x40, 0xa0, 0x9b, 0xd0, 0xec, 0x26, 
-	0xfb, 0xeb, 0xec, 0xa6, 0x10, 0xd0, 0xe2, 0xc4, 0x5c, 0x17, 
-	0xa0, 0x9f, 0x2d, 0xc8, 0x5b, 0x33, 0x32, 0xd5, 0x68, 0x8c, 
-	0x5f, 0xe0, 0x87, 0xd0, 0xd4, 0x3b, 0xa5, 0x65, 0xca, 0xb3, 
-	0x7a, 0xb5, 0x7a, 0xe4, 0x1a, 0x4c, 0x4f, 0x83, 0x98, 0xa7, 
-	0x10, 0xf3, 0x79, 0xed, 0xb5, 0xd7, 0x14, 0x6, 0x62, 0xe5, 
-	0x96, 0xc2, 0x21, 0x1d, 0xa, 0xa, 0x44, 0xf1, 0xd4, 0x56, 
-	0xc, 0x20, 0x2, 0x70, 0x3, 0xe3, 0xb0, 0x3b, 0xf2, 0xeb, 
-	0x5f, 0xff, 0x56, 0xad, 0x7b, 0x7b, 0x87, 0xfa, 0xfd, 0x8e, 
-	0x8d, 0xc6, 0x1d, 0xf3, 0x96, 0xa9, 0xcc, 0x84, 0x78, 0xd5, 
-	0xe7, 0x35, 0xba, 0x6a, 0x5c, 0xf6, 0x1a, 0x2, 0x75, 0xe8, 
-	0x14, 0xa4, 0xb9, 0xf5, 0x46, 0xf1, 0xc8, 0xc5, 0x27, 0x22, 
-	0x70, 0xd3, 0xf0, 0x1c, 0x29, 0xcd, 0x4d, 0x60, 0x9f, 0x28, 
-	0x6e, 0x4a, 0xda, 0xb5, 0xbf, 0x2a, 0xf5, 0x50, 0x41, 0x5d, 
-	0x69, 0x6f, 0x9f, 0x87, 0xd3, 0x5d, 0xc5, 0x70, 0xc1, 0xc0, 
-	0xe, 0xa7, 0xb5, 0xc9, 0x2e, 0xfb, 0x81, 0x3, 0x7, 0xde, 
-	0xc2, 0x61, 0xa, 0xbf, 0x79, 0xe5, 0x95, 0x57, 0x1e, 0xb8, 
-	0xfd, 0xf6, 0xdb, 0xcf, 0x89, 0xe6, 0x16, 0x93, 0x1b, 0xf9, 
-	0xf5, 0x1b, 0xed, 0x16, 0x60, 0xb3, 0x2f, 0xcd, 0x41, 0x24, 
-	0x80, 0x5a, 0x9b, 0xde, 0x18, 0x18, 0x33, 0x1, 0x6a, 0x1b, 
-	0xcf, 0x3, 0xbb, 0x98, 0x28, 0x2e, 0x3e, 0x51, 0xa5, 0xa6, 
-	0x8d, 0x43, 0xa3, 0x33, 0x5a, 0x2d, 0x58, 0xb0, 0x56, 0xcd, 
-	0x9b, 0xbf, 0xfa, 0xac, 0xc7, 0x4a, 0x86, 0xf3, 0x7d, 0x4, 
-	0x13, 0xf6, 0x60, 0x1b, 0x70, 0xec, 0x8f, 0x1b, 0x4, 0x39, 
-	0x40, 0xa3, 0xb5, 0x79, 0xb0, 0xc9, 0xce, 0xb8, 0xe4, 0x3f, 
-	0xfd, 0xe1, 0x9a, 0xeb, 0x1c, 0x15, 0x1f, 0x5d, 0x59, 0xc1, 
-	0xd3, 0xba, 0xd4, 0xa4, 0x7, 0x3f, 0xa7, 0xbe, 0x3e, 0x79, 
-	0xb2, 0x8a, 0xc3, 0x78, 0x46, 0x28, 0x82, 0x2c, 0x69, 0x60, 
-	0xb3, 0x6e, 0xef, 0xb8, 0xe3, 0xe, 0x9e, 0xb5, 0xae, 0xde, 
-	0x7e, 0xfb, 0x6d, 0x36, 0x4a, 0xa, 0xf2, 0xa5, 0xfe, 0xfc, 
-	0xe7, 0x3f, 0xab, 0x70, 0x71, 0x3e, 0xff, 0xf9, 0x7, 0xd5, 
-	0xf6, 0xed, 0x3b, 0x70, 0x3e, 0xdd, 0x71, 0xe5, 0x9a, 0x32, 
-	0x45, 0xd9, 00, 0x6e, 0x7, 0x5a, 0x82, 0x29, 0x31, 0xde, 
-	0x49, 0x47, 0xbb, 0x6d, 0xc7, 0x42, 0xe5, 0x17, 0xee, 0x1e, 
-	0xa1, 0x2c, 0x8e, 0x82, 0x1e, 0x39, 0xb4, 0x7d, 0xfd, 0xd5, 
-	0x70, 0xe9, 0xf, 0xbc, 0xef, 0x43, 0xb7, 0x4f, 0x77, 0x52, 
-	0x7f, 0xe, 0xd3, 0x61, 0x67, 0xb7, 0x59, 0x5d, 0xd9, 0x1e, 
-	0xbb, 0x67, 0x6f, 0xcd, 0x98, 0x23, 0x47, 0xeb, 0xcb, 0x7a, 
-	0x7b, 0x3d, 0xdc, 0xd1, 0xc0, 0x8f, 0x17, 0x60, 0xb3, 0x6f, 
-	0x4d, 0x50, 0x5b, 0x81, 0x4d, 0xad, 0x4d, 0x27, 0xb6, 0x3, 
-	0x4b, 0x43, 0xa7, 0x78, 0x2a, 0x7, 0x4c, 0xe0, 0x67, 0x5f, 
-	0x7d, 0xf5, 0x55, 0x74, 0xeb, 0xf8, 0xca, 0xc8, 0x10, 0xb5, 
-	0xb5, 00, 0x9b, 0x3e, 0x2b, 0x9c, 0x8e, 0x60, 0xe6, 0x40, 
-	0x11, 0x1d, 0xf3, 0xc3, 0xce, 0x23, 0xe, 0x1c, 0x99, 0xec, 
-	0x63, 0xa2, 0xe2, 0xd, 0x1c, 0xf2, 0x70, 0xd1, 0x1, 0x9b, 
-	0x1c, 0x59, 0xb9, 0xea, 0x16, 0xf5, 0x93, 0x9f, 0xbf, 0xa2, 
-	0xbe, 0xf5, 0xdd, 0xc7, 0xd5, 0xb5, 0xd7, 0xdf, 0x3b, 0x32, 
-	0x4c, 0x3a, 0xcb, 0x54, 0xd8, 00, 0x82, 0x5f, 0x6, 0xf9, 
-	0x86, 0x46, 0x11, 0x6b, 0xac, 0xbd, 0x26, 0xcd, 0x76, 0x5a, 
-	0x40, 0x6c, 0x30, 0xe9, 0x84, 0xdf, 0xf4, 0xa5, 0x41, 0x15, 
-	0x4b, 0x4a, 0xea, 0x67, 0xb0, 0x62, 0x24, 0xc2, 0x6c, 0x4e, 
-	0xa9, 0xac, 0xd4, 0x53, 0x5f, 0x9, 0x33, 0x67, 0xe, 00, 
-	0x36, 0xd3, 0x12, 0xc2, 0x72, 0x55, 0x1d, 0xa4, 0xc9, 0x4e, 
-	0xd, 0xe, 0xd9, 0x52, 0x4f, 0x3d, 0xf5, 0x94, 0xbe, 0x47, 
-	0x70, 0x93, 0xc2, 0xc5, 0xc1, 0x82, 0x29, 0xf5, 0xf1, 0x8f, 
-	0xdf, 0xa5, 0x2a, 0xaa, 0x8e, 0xa8, 0xbf, 0xed, 0xff, 0x40, 
-	0x95, 0x9f, 0xaa, 0xc5, 0x81, 0x26, 0xde, 0xd8, 0xec, 0x18, 
-	0xcf, 0xcc, 0xb1, 0xd1, 0x66, 0xba, 0x5e, 0x22, 0x4e, 0x23, 
-	0x61, 0x38, 0x6e, 0x18, 0xe8, 0x8e, 0xc8, 0x58, 0xf0, 0x61, 
-	0x69, 0x98, 0x88, 0xf6, 0xb7, 0x4, 0x38, 0xea, 0x50, 0xef, 
-	0xee, 0xda, 0xb6, 0xeb, 0x64, 0x76, 0xe1, 0xb1, 0x86, 0xca, 
-	0xae, 0x2e, 0x37, 0x4f, 0xe8, 0x2b, 0x80, 0x23, 0x68, 0x9, 
-	0x5e, 0x2, 0x5b, 0xc0, 0xcd, 0x6b, 0x1, 0x38, 0x81, 0x2f, 
-	0x4e, 0x9a, 0x19, 0xd6, 0xa, 0x3f, 0xdb, 0xb6, 0x7b, 0xf7, 
-	0xee, 0x3f, 0xe2, 0x50, 0xfb, 0x57, 00, 0xf0, 0xde, 0xb3, 
-	0x5, 0xb8, 0x80, 0x5a, 0x4, 0x28, 0x14, 0xa8, 0x29, 0x74, 
-	0x18, 0x24, 0xe2, 0x80, 0x91, 0x89, 0xfe, 0xa4, 0x89, 0x69, 
-	0x37, 0x3, 0x6b, 0xd7, 0xf9, 0x73, 0xb9, 0x28, 0xce, 0x25, 
-	0x8a, 0x94, 0x3, 0xe4, 0x1b, 0xf8, 0x67, 0x90, 0x8f, 0x9c, 
-	0x25, 00, 0xcf, 0x4d, 0x8e, 0x59, 0x10, 0xe4, 0x2, 0x74, 
-	0x36, 0xa6, 0x4, 0x38, 0x1d, 0x41, 0x4d, 0x67, 0xad, 0xab, 
-	0x70, 0x79, 0xb6, 0xe1, 0xc7, 0x10, 0xba, 0xfc, 0x56, 0xd4, 
-	0x8e, 0x2f, 0x7d, 0x51, 0x4d, 0x46, 0x98, 0xfd, 0xec, 0x50, 
-	0x44, 0xf3, 0x9a, 0x84, 0x35, 0xe8, 0x81, 0xc7, 0xd8, 0x61, 
-	0xa6, 0xc3, 0x38, 0xed, 0x56, 0xfb, 0x83, 0xc5, 0xb9, 0xf9, 
-	0xe6, 0x9b, 0xd1, 0xe8, 0xf7, 0xa8, 0xc2, 0xd2, 0x83, 0x6a, 
-	0xf7, 0xb1, 0xdd, 0xde, 0x8e, 0xae, 0xe, 0xd5, 0xe9, 0xb1, 
-	0xd7, 0x35, 0x7b, 0x1c, 0xd, 0xb0, 0x3d, 0x80, 0xeb, 0x48, 
-	0x1d, 0x77, 0x5c, 0x71, 0x68, 0x2e, 0x42, 0xa8, 0xa2, 0xa4, 
-	0x11, 0xbe, 0xe1, 0x9b, 0xd6, 0xf1, 0x60, 0xe7, 0x97, 0x8, 
-	0x7c, 0x24, 0x3e, 0xa6, 0xe, 0xcc, 0xce, 0xce, 0x5e, 0xfb, 
-	0x87, 0x5b, 0xcb, 0xc7, 0x9f, 0x28, 0x3e, 0x55, 0xd7, 0xdc, 
-	0xda, 0x5b, 0x88, 0x32, 0x70, 0x5b, 0x12, 0x41, 0x4b, 0x40, 
-	0xb, 0xb8, 0x5, 0xd0, 0xe2, 0xb, 0xa8, 0x45, 0x6b, 0xd3, 
-	0x27, 0xc0, 0x65, 0x50, 0x4d, 0x87, 0xf7, 0xee, 0xdd, 0xfb, 
-	0x2c, 0x6, 0x37, 0xd6, 0x1, 0xe0, 0x7d, 0xc3, 0x5, 0xb8, 
-	00, 0x1a, 0x69, 0x7, 0x4, 0x48, 0xbe, 0x51, 0xb4, 0x35, 
-	0x41, 0x8d, 0x7e, 0xa2, 0x89, 0x1f, 0xef, 0x33, 0xb1, 0xa, 
-	0xce, 0x80, 0xd3, 0xd3, 0x3c, 0x7c, 0xe7, 0x12, 0x9d, 0x1d, 
-	0x7, 0x38, 0x56, 0x41, 0x9e, 0xa2, 0x9f, 0x6b, 0x60, 0x2e, 
-	0x9d, 0x16, 0x91, 0x17, 0x83, 0x6f, 0xfd, 00, 0x2e, 0xf5, 
-	0x60, 0x5, 0xb9, 0x80, 0x3d, 0x54, 0xee, 0x51, 0xf8, 0x6d, 
-	0x3, 0x98, 0x4, 0xfa, 0x51, 0x1c, 0x46, 0xe9, 0xf3, 00, 
-	0x6e, 0xd6, 0x73, 0x28, 0x92, 0x5f, 0x87, 0x61, 0x9e, 0x42, 
-	0xa8, 0x6b, 0x1d, 0x94, 0x67, 0xe2, 0xf, 0x16, 0x67, 0x72, 
-	0x42, 0xb4, 0x8a, 0xef, 0x6d, 0xb0, 0x6d, 0x2d, 0xdc, 0xa9, 
-	0xba, 0x3c, 0x2e, 0x77, 0x8c, 0xc3, 0x88, 0x56, 0x38, 0x9d, 
-	0xc8, 0x77, 0xa, 0x3, 0xf4, 0x91, 0x3e, 0x8d, 0x61, 0x28, 
-	0x3e, 0x20, 0xca, 0xb8, 0x54, 0x61, 0x11, 0x52, 0x84, 0xe0, 
-	0x8e, 0x30, 0x75, 0x4b, 0x74, 0xf6, 0xb1, 0x31, 0x70, 0x6c, 
-	0x6c, 0xde, 0x51, 0x99, 0x55, 0x5c, 0xde, 0xd2, 0x56, 0x53, 
-	0xd7, 0xc9, 0xfe, 0xf5, 0x56, 0x38, 0x1, 0xb5, 0x68, 0x69, 
-	0xb9, 0xe, 0x5, 0x6c, 0xab, 0xc6, 0x66, 0xed, 0x8, 0xc0, 
-	0xe9, 0x13, 0xf0, 0x6e, 0xf4, 0xc1, 0x5f, 0xc0, 0x60, 0xcd, 
-	0xbb, 0x91, 0x2, 0xdc, 0xaa, 0x1, 0x18, 0x16, 0x40, 0x8b, 
-	0xa6, 0xa0, 0xa6, 0xe6, 0x60, 0xa, 0xfb, 0xd5, 0x98, 0xd3, 
-	0x35, 0x29, 0x7c, 0x4b, 0x97, 0x2e, 0xe5, 0x40, 0x10, 0xb2, 
-	0xbd, 0x44, 0x23, 0xcd, 0x1, 0xf2, 0x95, 0xfc, 0xc5, 0x80, 
-	0xa9, 0xd, 0xb3, 0xd, 0x50, 0xa, 0x9d, 0x5e, 0x8e, 0xb6, 
-	0xb3, 0xd1, 0xb6, 0x82, 0x9b, 0xf5, 0xc3, 0xba, 0x1a, 0x4c, 
-	0x8b, 0x8f, 0x29, 0x2e, 0x56, 0xb1, 0x7e, 0x80, 0xbe, 0x8f, 
-	0x13, 0x54, 0xb1, 0xcb, 0x2b, 0x6c, 0x71, 0xd9, 0xb8, 0x90, 
-	0x58, 0xdf, 0x42, 0x12, 0x96, 0x67, 0xe2, 0xcb, 0x7d, 0x6b, 
-	0x7c, 0x79, 0x76, 0xb4, 0xa9, 0x49, 0xc5, 0x79, 0xba, 0x94, 
-	0xbb, 0xad, 0x5a, 0x15, 0x1c, 0xdf, 0x9e, 0x95, 0x1b, 0xd5, 
-	0x3b, 0x15, 0xdd, 0x6f, 0xc8, 0xec, 0x80, 0xb3, 0x4b, 0x24, 
-	0x9b, 0x11, 0xf7, 0x23, 0x1a, 0x50, 0x63, 0x63, 0xe7, 0xc6, 
-	0xc4, 0x3d, 0xf6, 0x6e, 0xea, 0xb9, 0x54, 0x74, 0x8f, 0xc0, 
-	0x54, 0xdf, 0x44, 0x58, 0x98, 0x86, 0x50, 0x17, 0x98, 0xc0, 
-	0xa6, 0x8e, 0xdd, 0xb1, 0xb7, 0x66, 0x6c, 0x69, 0x59, 0x8b, 
-	0xbb, 0xb4, 0xac, 0xb5, 0x4, 0xf, 0x36, 0xc2, 0x71, 0xdb, 
-	0xa6, 0x68, 0x6d, 0x1, 0x35, 0x7d, 0x2, 0x9b, 0xf7, 0x35, 
-	0x60, 0xe1, 0xb3, 0x2f, 0x40, 00, 0xd3, 0xb1, 0xd, 0x43, 
-	0x6a, 0x1, 0xa7, 0xe3, 0x40, 0x8, 0x52, 0xd1, 0xa2, 0xe6, 
-	0xc1, 0xbc, 0x9b, 0x88, 0x16, 0xf5, 0x28, 0x84, 0x21, 0xe9, 
-	0x6f, 0x7f, 0xfb, 0xdb, 0x52, 0xf4, 0x8f, 0x9c, 0x67, 0x32, 
-	0x95, 0xc3, 0x69, 0x6b, 0xa, 0xc, 0x5, 0x87, 0xc2, 0x84, 
-	0x6, 0xc3, 0xe4, 0xfc, 0x39, 0x47, 0x7b, 0x73, 0x31, 0x2, 
-	0x8e, 0xfc, 0x2f, 0xd1, 0x79, 0xe0, 0x80, 0x2c, 0x8e, 0xc1, 
-	0xa0, 0x1b, 0x37, 0xd0, 0x70, 0xd0, 0x8d, 0xb3, 0x10, 0x7a, 
-	0xc4, 0x9d, 0x53, 0x68, 0xd6, 0x69, 0x34, 0x16, 0x87, 0x23, 
-	0xd9, 0x1c, 0x78, 0x63, 0x9d, 0xd2, 0x27, 0x35, 0xe4, 0xe4, 
-	0xaa, 0x28, 0x34, 0xa, 0xd1, 0x58, 0xb0, 0x72, 0x25, 0x56, 
-	0x1, 0x5e, 0x31, 0xa1, 0x5c, 0xb, 0x9e, 0x7e, 0x18, 0xf4, 
-	0xf, 0x5d, 0x3b, 0x7d, 0x7, 0x5b, 0x83, 0x3, 0x4f, 0x64, 
-	0xfa, 0x12, 0x63, 0x1, 0xfa, 0xde, 0x50, 0xe2, 0xdc, 0x81, 
-	0xa9, 0xcf, 0xbb, 0x67, 0x4c, 0x57, 0x7f, 0x3b, 0x7e, 0x42, 
-	0x95, 0x35, 0x94, 0xb7, 0x95, 0xb9, 0x9d, 0xad, 0xb9, 0x33, 
-	0xae, 0x82, 0xdc, 0x2, 0xa, 0x5c, 0x2f, 0x3c, 0x18, 0xe1, 
-	0x1b, 0xf8, 0x1d, 0x9c, 0xe3, 0x3e, 0x6f, 0xf3, 0xdc, 0x83, 
-	0x95, 0xe7, 0x4c, 0xcf, 0xa, 0x8f, 0x9d, 0x4a, 0x2e, 0x2a, 
-	0x69, 0x8e, 0x39, 0x5e, 0xdc, 0x72, 0xc, 0x71, 0x3f, 0x80, 
-	0xe3, 0xd1, 0x34, 0x6c, 0x1e, 0xc5, 0x9, 0xb8, 0xc5, 0xe4, 
-	0x16, 0x30, 0x23, 0x8a, 0x6, 0x34, 0x19, 0x22, 0x96, 0x86, 
-	0x30, 0xc7, 0xb, 0x13, 0x2e, 0x1e, 0xfd, 0xb4, 0x7b, 0x51, 
-	0x1, 0x4b, 0xb0, 0x86, 0x3c, 0x1, 0xa3, 0xaa, 0xb1, 0xec, 
-	0xa3, 0x71, 0xde, 0x12, 0xe6, 0x54, 0xe5, 0xba, 0x75, 0xeb, 
-	0xc6, 0x63, 0x61, 0x4b, 0x54, 0x38, 0x80, 0x13, 0xc0, 0x24, 
-	0xd1, 0xdc, 0x62, 0xde, 0x89, 0xc6, 0xe6, 0x9a, 0x6f, 0xb4, 
-	0xd0, 0x5e, 0x98, 0xe0, 0x6, 0x56, 0xc0, 0x5d, 0xd0, 0x79, 
-	0x6a, 0x5d, 0xd0, 0xff, 0xa5, 0xff, 0xd8, 0xa0, 0x62, 0xaf, 
-	0x80, 0xc2, 0xa9, 0x2a, 0x26, 0x46, 0xd8, 0x71, 0x9c, 0xb6, 
-	0x5d, 0x8f, 0x6f, 0xb0, 0xbe, 0x8, 0x70, 0x69, 0xa0, 0x39, 
-	0xaa, 0x4e, 0x22, 0x38, 0xf8, 0x8c, 0x7e, 0x1f, 0x80, 0xda, 
-	0x87, 0x3e, 0x3d, 0xc1, 0xdd, 0x87, 0x7b, 0xd5, 0xf0, 0xc3, 
-	0xcd, 0x63, 0x70, 0x74, 0x9c, 0xc4, 0x7e, 0xbf, 0x10, 0xea, 
-	0x5e, 0x7, 0x39, 0x9f, 0x4d, 0x1a, 0x4a, 0x9c, 0x93, 0xb0, 
-	0xf2, 0xb0, 0x3f, 0xdc, 0xbc, 0x6e, 0x52, 0xae, 0xf1, 0x3f, 
-	0x7b, 0xf7, 0xd7, 0x16, 0xb5, 0xf5, 0x28, 0x47, 0xfc, 0xe8, 
-	0x94, 0xf1, 0x13, 0xe7, 0xb7, 0x18, 0x38, 0x35, 0x18, 0x8b, 
-	0x5f, 0x44, 0x96, 0x75, 0x9a, 0xfd, 0xfe, 0x89, 0x74, 0x33, 
-	0x86, 0x48, 0x7d, 0xf8, 0xd8, 0xfd, 0x5e, 0xb5, 0x5e, 0x44, 
-	0xf4, 0xa, 0x17, 0xad, 0x78, 0x4c, 0x98, 0x41, 0x5a, 0x7b, 
-	0x53, 0x83, 0xfb, 0x1d, 0xaf, 0xc3, 0x38, 0xfc, 0x16, 0xb2, 
-	0x89, 0x3, 0x16, 0xa2, 0xf, 0x16, 0xd4, 0xa7, 0x1f, 0x2f, 
-	0x3a, 0x55, 0x81, 0x65, 0xa5, 0x1c, 0x19, 0x27, 0x7, 0x5, 
-	0xd4, 0xd4, 0xd2, 0x4, 0xb6, 0x68, 0x69, 0xfa, 0xd4, 0xd4, 
-	0xd4, 0xce, 0x2c, 0x9f, 0x38, 0x5a, 0x19, 0xe2, 0xf4, 0xe7, 
-	0xdf, 0x79, 0xe7, 0x9d, 0x99, 0xd8, 0x9f, 0xfd, 0x1d, 0x54, 
-	0xc4, 0x2a, 0x8c, 0xb4, 0xa6, 0x63, 0xa0, 0xa3, 0xb, 0xbf, 
-	0x4, 0x52, 0x85, 0xa3, 0x6f, 0xdb, 0xb1, 0xc6, 0x3c, 0x6, 
-	0xf7, 0x5c, 0x98, 0x63, 0x6e, 0x5c, 0xbf, 0x7e, 0xbd, 0x3b, 
-	0xb8, 0xf, 0x2e, 0x60, 0x46, 0x9a, 0xfd, 0xfa, 0xd6, 0x4, 
-	0x35, 0x35, 0x35, 0x1b, 0x8, 0xf4, 0xad, 0xbd, 0x68, 0x30, 
-	0x4c, 0x6e, 0x92, 0xa0, 0x89, 0x28, 0x2d, 0x38, 0xdf, 0xb9, 
-	0x44, 0xe7, 0x9f, 0x3, 0xe4, 0x3f, 0xeb, 0x81, 0xd6, 0x13, 
-	0xd6, 0x34, 0x50, 0x8b, 0x7b, 0x65, 0xb0, 0x8d, 0x26, 0x32, 
-	0xeb, 0x2d, 0xd8, 0x4c, 0x67, 0x3d, 0x27, 0xd5, 0xd6, 0xa8, 
-	0x44, 0xbf, 0x46, 0x6e, 0xc2, 0x8a, 0xb9, 0x31, 0xf1, 0xe1, 
-	0x17, 0x12, 0xe1, 0xfc, 0x35, 0xfd, 0x61, 0x9c, 0xd7, 0x96, 
-	0x86, 0x2, 0x32, 0xa6, 0xef, 0xc9, 0x33, 0xf1, 0x7, 0x8b, 
-	0x33, 0x1a, 0x8d, 0x49, 0x6b, 0x6f, 0xaf, 0x91, 0x8a, 0x5, 
-	0x31, 0xf7, 0xce, 0x9a, 0x31, 0xd5, 0xd1, 0x52, 0xda, 0x5d, 
-	0x56, 0xb4, 0x2b, 0xbd, 0xb3, 0xa5, 0x36, 0x9a, 0xbb, 0xcf, 
-	0xa2, 0xb0, 0xe9, 0xc6, 0x1, 0xcd, 0x1c, 0xca, 0x61, 0xcf, 
-	0x9f, 0xde, 0xa1, 0x46, 0x5f, 0x5c, 0x44, 0x40, 0xf5, 0x57, 
-	0x4d, 0x44, 0x66, 0xb9, 0xcf, 0x2a, 0x16, 0xdc, 0x59, 0x2d, 
-	0x63, 0x86, 0x7, 0x12, 0x1a, 0x4d, 0x13, 0xf3, 0xd7, 0xc6, 
-	0xae, 0x3d, 0x35, 0xf8, 0xd5, 0x85, 0xd6, 0xea, 0xee, 0x6e, 
-	0xf, 0x87, 0x20, 0x4b, 0xe0, 0x8, 0x60, 0x1, 0x37, 0x7d, 
-	0x1, 0xb6, 0x98, 0xdf, 0x36, 0x80, 0x32, 0x6, 0xeb, 0xae, 
-	0x5f, 0x83, 0x59, 0xbc, 0x61, 0xf3, 0xe6, 0xcd, 0x3f, 0x46, 
-	0x1c, 0x66, 0xe2, 0x53, 0xb3, 0xf0, 0xd1, 0xf, 0xb3, 0xe5, 
-	0xe4, 0xe4, 0x7c, 0x1a, 0xcb, 0x39, 0x73, 00, 0xee, 0x2e, 
-	0x98, 0xe5, 0x3b, 0x61, 0x86, 0x71, 0x51, 0x84, 0x13, 0x5a, 
-	0x3b, 0x6, 0x2e, 0x16, 0x66, 0xdc, 0x54, 0x80, 0xd3, 0x81, 
-	0xa, 0xaf, 0xc5, 0xb4, 0xc6, 0x58, 0x9c, 0xad, 0xa5, 0x35, 
-	0xb8, 0xb4, 0xf2, 0x48, 0x4f, 0x9b, 0xdd, 0xbc, 0xb6, 0xf6, 
-	0xb1, 0xa9, 0xad, 0x21, 0x28, 0x26, 0xe, 0x26, 0xe0, 0xee, 
-	0x27, 0x2e, 0x13, 0xd5, 0x8d, 0x9, 0xe3, 0x5f, 0xa2, 0xb, 
-	0xcb, 0x1, 0x6a, 0x62, 0xae, 0x78, 0xe3, 0xa0, 0x16, 0x7e, 
-	0x56, 0x48, 0x2f, 0xeb, 0x45, 0x5d, 0x5, 0xb4, 0xb8, 0xd4, 
-	0x2d, 0x4d, 0x72, 0x6a, 0x74, 0xc6, 0x6f, 0x1b, 0x9d, 0xaa, 
-	0xe2, 0xb0, 0xa9, 0x23, 0x11, 0x5a, 0x39, 0x13, 0x5a, 0xfc, 
-	0x47, 0x97, 0x5f, 0xae, 0xbe, 0x55, 0x52, 0x1a, 0xf2, 0x43, 
-	0x5e, 0x7a, 0xe9, 0x25, 0xf5, 0xcb, 0x5f, 0xfe, 0x52, 0xaf, 
-	0xf9, 0xdf, 0xb0, 0x61, 0x83, 0x62, 0x37, 0x80, 0xb, 0xa4, 
-	0x68, 0x5, 0x3c, 0xfd, 0xf4, 0xd3, 0xfa, 0x9d, 0x33, 0xc5, 
-	0x21, 0xa0, 0xbf, 0xbd, 0x7c, 0x99, 0x8e, 0x8b, 0x6d, 0xa2, 
-	0xed, 0xe, 0x9b, 0x7d, 0x63, 0x55, 0x4b, 0xd3, 0xa1, 0x28, 
-	0x57, 0xe1, 0xa2, 0x98, 0xd8, 0xc4, 0xec, 0xcb, 0x56, 0x7c, 
-	0xb4, 0x4, 0x3f, 0x2b, 0x84, 0x53, 0xd1, 0x51, 0xda, 0xa0, 
-	0x33, 0xd6, 0xf8, 0x12, 0xcb, 0xdc, 0xcf, 0xe9, 0x1, 0xb5, 
-	0xc8, 0x45, 0x30, 0xb2, 0x6, 0x81, 0xf0, 0x22, 0xfc, 0x42, 
-	0x39, 0x31, 0xa2, 0xfd, 0x3e, 0xe7, 0xb2, 0x4d, 0x2c, 0xa8, 
-	0xdd, 0xbd, 0xab, 0x7e, 0xdc, 0xc9, 0x8a, 0x8e, 0x8e, 0x86, 
-	0xa6, 0x1e, 0x82, 0x5a, 0x4e, 0x51, 0x21, 0xa0, 0xc5, 0xc, 
-	0x67, 0x6a, 0x3, 0xb4, 0x35, 0xb4, 0xf0, 0x7f, 00, 0xe0, 
-	0x79, 0x58, 0xa3, 0xfc, 0x10, 0x96, 0x1, 0xfe, 0x10, 0x71, 
-	0x38, 0xc7, 0xc4, 0xc5, 0xd8, 0xdc, 0xbf, 0xe9, 0xbc, 0xfb, 
-	0xee, 0xbb, 0xd7, 0x62, 0xf0, 0x62, 0x26, 0xfa, 0xc1, 0x6, 
-	0x5a, 0xd6, 0xed, 0x98, 0x2f, 0xed, 0x82, 0xe9, 0xed, 0x42, 
-	0x8b, 0xee, 0x2, 0x18, 0x7b, 0xd1, 0x67, 0xea, 0x6, 0xf8, 
-	0xb, 0x71, 0xbf, 0x5, 0xd, 0x40, 0x1b, 0xee, 0x17, 0x61, 
-	0xa1, 0x8b, 0x8b, 0x6b, 0x9d, 0x45, 00, 0x64, 0x20, 0x46, 
-	0xfa, 0xd5, 0x6c, 0xf9, 0x6b, 0x6a, 0x6a, 0xd8, 0x62, 0x9b, 
-	0xf8, 0x3d, 0x30, 0x3d, 0xbd, 0xc5, 0xa5, 0x88, 0x97, 0xe8, 
-	0xe2, 0xe3, 00, 0xeb, 0x85, 0xd3, 0x66, 0x6c, 0x7c, 0x69, 
-	0x5d, 0x11, 0x84, 0xa2, 0xc5, 0x59, 0x8f, 0xac, 0x53, 0x6a, 
-	0x71, 0x82, 0xb2, 0xf, 0x20, 0xaf, 0x9d, 0x98, 0xa3, 0xdc, 
-	0xfe, 0xa3, 0x6a, 0x36, 0xe2, 0xf0, 0xb, 0xa7, 0xdf, 0x7c, 
-	0xf, 0xfe, 0x32, 0xf6, 0xab, 0xb1, 0xff, 0x5f, 0x2f, 0x1d, 
-	0x5e, 0xbb, 0x76, 0xad, 0x5e, 0xb8, 0x42, 0x99, 0xf9, 0xd4, 
-	0xa7, 0x3e, 0xa5, 0x30, 0x58, 0xab, 0xa3, 0x9f, 0x29, 0x4e, 
-	0xf, 0xf2, 0xde, 0xe7, 0x37, 0xe1, 0xb1, 0xd, 0xb4, 0xe5, 
-	0xdf, 0xb6, 0x6d, 0xfb, 0x5d, 0x47, 0x5f, 0xdf, 0xd6, 0xe6, 
-	0xe6, 0xaa, 0x62, 0x2c, 0x70, 0x69, 0x3b, 0x7c, 0x70, 0x43, 
-	0x16, 0x85, 0x10, 0x7, 0x45, 0xe0, 0xd7, 0x68, 0x7d, 0x3f, 
-	0xbc, 0x4d, 0x20, 0x5a, 0x1d, 0xa1, 0x6c, 0xbd, 0x66, 0x38, 
-	0x52, 0x8a, 0x50, 0x73, 0x33, 0x79, 0x62, 0xd1, 0xaa, 0x44, 
-	0x19, 0x26, 0x89, 0xcf, 0x6e, 0x82, 0x6f, 0x44, 0xf0, 0xe8, 
-	0xf1, 0xe6, 0x94, 0xb2, 0xca, 0x36, 0x47, 0x59, 0x45, 0x5b, 
-	0x11, 0x22, 0x6c, 0x86, 0x23, 0xa8, 0x65, 00, 0x4d, 0x34, 
-	0xb7, 0x55, 0x6b, 0xe3, 0xb1, 0xb2, 0xc3, 0xf4, 0xfa, 0xc, 
-	0xc0, 0x79, 0xdd, 0x55, 0x57, 0x5d, 0x15, 0xcb, 0xa, 0xc2, 
-	0xc0, 0xd8, 0x3, 0x98, 0x97, 0x34, 0xb7, 0x6e, 0xdd, 0xca, 
-	0xb5, 0x93, 0x3a, 0x3e, 0x80, 0x3c, 0x3, 0x66, 0xda, 0x28, 
-	0xcc, 0x3d, 0x16, 00, 0xb8, 0x88, 0xe6, 0xe6, 0x3e, 0x62, 
-	0xf0, 0xb2, 0xff, 0x60, 0x5, 0xb4, 0xef, 0x71, 0x8c, 0x72, 
-	0x2f, 0x46, 0x7a, 0x27, 0x4f, 0x9c, 0x38, 0x51, 0xd, 0x80, 
-	0xaf, 0xc6, 0x20, 0x5b, 0x14, 0x4, 0x42, 0x57, 0xbc, 0x8, 
-	0x1, 0x5, 0x2, 0x83, 0x66, 0x1c, 0x9, 0xd7, 0x7d, 0x6b, 
-	0x2e, 0x87, 0x64, 0x61, 0xfe, 0x1e, 0x88, 0x3f, 0xe0, 0x12, 
-	0xed, 0x74, 0xab, 0xd7, 0xff, 0xf6, 0xdf, 0xbe, 0x6a, 0x40, 
-	0x55, 0xe8, 0x11, 0x4c, 0x7f, 0xe1, 0x61, 0x98, 0x80, 0x7c, 
-	0xf5, 0xe3, 0xb, 0xfb, 0xae, 0x25, 0xec, 0x7b, 0x8c, 0x23, 
-	0x17, 0x13, 0x30, 0xa7, 0xea, 0xeb, 0xb2, 0xfa, 0xdf, 0xbc, 
-	0xf8, 0x3d, 0xae, 0x74, 0xe3, 0x8, 0x35, 0xfb, 0xe2, 0x5c, 
-	0xfc, 0x2, 0x65, 0x40, 0x7d, 0xa8, 0xeb, 0x96, 0x9a, 0x5b, 
-	0xa8, 0x67, 0xcf, 0xee, 0x6e, 0xa7, 0x69, 0xea, 0x96, 0xfa, 
-	0xfa, 0xdc, 0x5c, 0xb5, 0xa0, 0xb3, 0x2b, 0x30, 0xf0, 0x26, 
-	0x71, 0xc4, 0xff, 0xf0, 0xc3, 0xf, 0xb9, 0x53, 0x4f, 0x71, 
-	0x3f, 00, 0xc7, 0x6a, 0x68, 0x21, 0x50, 0x3e, 0xac, 0x14, 
-	0x2e, 0xce, 0xa8, 0x98, 0x68, 0xf5, 0xea, 0x47, 0x3e, 0x62, 
-	0xc6, 0x46, 0xe1, 0x7, 0xe7, 0x41, 0xd8, 0x2b, 0x3e, 0xfe, 
-	0x4b, 0xf3, 0xe7, 0xaf, 0x7a, 0xf8, 0xdd, 0x77, 0xdf, 0xc5, 
-	0xe5, 0xc6, 0xea, 0xaa, 0xc2, 0xa4, 0xd8, 0xb8, 0xe4, 0x19, 
-	0x65, 0xa5, 0x99, 0xa9, 0x93, 0xa7, 0x2c, 0xc5, 0x8, 0x9d, 
-	0x2e, 0x6b, 0x3f, 0x59, 0x3b, 0xad, 0xb5, 0x7d, 0x3, 0x6a, 
-	0x58, 0x97, 0x4b, 0x75, 0x6e, 0xcd, 0x7e, 0x48, 0xe1, 0xd3, 
-	0x5f, 0x3f, 0xa4, 0xe8, 0x80, 0x36, 0xa0, 0xc5, 0x3, 0x4e, 
-	0xd1, 0x20, 0x6, 0x1c, 0x85, 0xc4, 0x27, 0x3a, 0xbe, 0x44, 
-	0x58, 0x8c, 0xa6, 0xe6, 0x9e, 0xe8, 0x23, 0x85, 0xcd, 0xa9, 
-	0xc7, 0x8b, 0x5a, 0x8b, 0x11, 0x97, 0x53, 0x5e, 0x9c, 0x38, 
-	0x14, 0x40, 0xd3, 0xb7, 0x82, 0x9a, 0xfa, 0x9e, 0x8d, 0x93, 
-	0x81, 0x7d, 0xd8, 0xcb, 0x1, 0xda, 0x6f, 0xa2, 0xf5, 0x8c, 
-	0x61, 0xe5, 0xd0, 0x1, 0x8c, 0x31, 0x98, 0xda, 0x7a, 0x10, 
-	0xa0, 0xc7, 0x59, 0x5e, 0x3b, 0x7f, 0xc3, 0x74, 0x60, 0x76, 
-	0x4d, 0xc4, 0xb3, 0x58, 0xcc, 0x85, 0x36, 0xe3, 0x9a, 0xf1, 
-	0x98, 0x6, 0xf6, 0x2a, 0xc7, 0xf6, 0xab, 0x5, 0x68, 0xf6, 
-	0x66, 0x54, 0x90, 0x17, 0x2, 0x10, 0x87, 0xb3, 0xb3, 0xfe, 
-	0xca, 0x38, 0x48, 0x6b, 0xf5, 0x2d, 0xb7, 0xdc, 0x12, 0xc5, 
-	0xb4, 0xd9, 0x78, 0xb0, 0x65, 0xe6, 0x20, 0xd, 0xcc, 0x7b, 
-	0x1e, 0xcb, 0x44, 0x4d, 0xc0, 0x68, 0x7f, 0x37, 0x34, 0x61, 
-	0x42, 0xb6, 0xe2, 0xbe, 0xef, 0x70, 0x44, 0x61, 0xf, 0x45, 
-	0x14, 0xa2, 0x60, 0xe2, 0x19, 0x69, 0x12, 0x3f, 0xd4, 0xf3, 
-	0xe0, 0xf8, 0x17, 0xc3, 0xb5, 0x4c, 0x9b, 0x1d, 0xdc, 0xbb, 
-	0x57, 0xd5, 0x35, 0x35, 0x61, 0xb0, 0xca, 0xe4, 0x49, 0x3c, 
-	0xba, 0x68, 0xfc, 0x86, 0x7d, 0xfb, 0xf6, 0x35, 0x55, 0x1e, 
-	0x3f, 0x11, 0xdb, 0x1a, 0x13, 0x73, 0x68, 0x5e, 0x5a, 0x6a, 
-	0x26, 0xe, 0x3e, 0x4c, 0xef, 0x46, 0xbd, 0xcb, 0x77, 0x86, 
-	0xfa, 0x6, 0x6a, 0x7c, 0xfc, 0xba, 0x68, 0xa8, 0x47, 0x81, 
-	0x7b, 0xa1, 0xe2, 0xf4, 0x2, 0x1c, 0xb0, 0x10, 0x74, 0x9c, 
-	0x1e, 0xb7, 0xe7, 0x48, 0x63, 0x4f, 0xd7, 0x8e, 0x27, 0xe, 
-	0x1d, 0x7a, 0xf, 0x37, 0x28, 0xef, 0x2d, 0x78, 0x67, 0x73, 
-	0x79, 0xe9, 0x81, 0xf8, 0x68, 0x67, 0x7c, 0x5e, 0x6a, 0xda, 
-	0xf8, 0x8e, 0xe4, 0x94, 0x4c, 0xca, 0x32, 0x6e, 0xf, 0x32, 
-	0xc0, 0x16, 0xc8, 0x31, 0xb2, 0x40, 0x84, 0xe0, 0x66, 0xa1, 
-	0xa9, 0xb9, 0x89, 0x23, 0x11, 0x98, 0xfe, 0x3e, 0xb5, 0x36, 
-	0xcf, 0x57, 0xdb, 0x7b, 0x10, 0xe6, 0x78, 0x65, 0x7b, 0x2d, 
-	0x96, 0x96, 0xb2, 0x9f, 0x5d, 0xe, 0x47, 0xd0, 0xd1, 0x89, 
-	0xf6, 0x66, 0x98, 0x89, 0xd1, 0x69, 0xb, 0x4, 0x3, 0x60, 
-	0x13, 0xd0, 0x62, 0xfe, 0xe, 0x8b, 0xf6, 0x63, 0xb8, 0x6d, 
-	0x50, 0x88, 0xad, 0x27, 0xfa, 0xcb, 0xd1, 0xe8, 0x37, 0x13, 
-	0xe0, 0x6, 00, 0xfe, 0x18, 0x40, 0xc9, 0xa5, 0x8a, 0x34, 
-	0xc5, 0xf0, 0x7b, 0x4d, 0x5e, 0x1c, 0x3b, 0x64, 0x33, 0xc3, 
-	0x1, 0x9c, 0xcc, 0x83, 0xeb, 0x45, 0x65, 0xb6, 0x62, 0xb5, 
-	0xd1, 0x2b, 0xac, 0x54, 0xa4, 0x75, 0xf9, 0xf5, 0xd7, 0x5f, 
-	0xcf, 0xfe, 0x39, 0xfb, 0x37, 0x26, 0x7f, 0x7f, 0xa, 0x83, 
-	0x71, 0x8, 0xe, 0x14, 0x78, 0x29, 0xc7, 0x85, 0xf6, 0x45, 
-	0x18, 0x83, 0x7d, 0x6e, 0x72, 0xb0, 0xde, 0x93, 0x30, 0xcb, 
-	0x6b, 0xd, 0xf, 0x56, 0x7e, 0x7e, 0xb7, 0x38, 0x5a, 0x33, 
-	0x56, 0x2, 0xef, 0xf4, 0xa5, 0xf0, 0x46, 0x7c, 0x6b, 0x9c, 
-	0xb, 0x15, 0xb6, 0x7d, 0xb0, 0x49, 0x67, 0xed, 0x9c, 0x3a, 
-	0x4d, 0x2d, 0x3b, 0x9c, 0x6f, 0x9c, 0x4a, 0x1f, 0xa3, 0xca, 
-	0x3a, 0x3b, 0xcc, 0xdc, 0xca, 0x66, 0xa3, 0x78, 0xfc, 0x4, 
-	0xb5, 0xaf, 0xac, 0xac, 0x9, 0x5a, 0x3d, 0x16, 0x47, 0x1b, 
-	0x3f, 0xb3, 0xa1, 0xad, 0xad, 0xe2, 0xad, 0xbb, 0xef, 0x7a, 
-	0x98, 0x2f, 0x8c, 0x89, 0x8b, 0x55, 0xaf, 0xdc, 0x79, 0x87, 
-	0x7a, 0x74, 0xeb, 0x36, 0xb5, 0x17, 0x9b, 0x58, 0x46, 0x82, 
-	0x6e, 0x98, 0x3c, 0x49, 0xfd, 0x33, 0x96, 0xa0, 0xc2, 0xe4, 
-	0xd7, 0x42, 0x84, 0x35, 0x74, 0xed, 0x1f, 0x7d, 0xf9, 0x55, 
-	0x98, 0x53, 0x7a, 0xc1, 0x69, 0x14, 0x7c, 0xde, 0x2f, 0xeb, 
-	0xeb, 0xeb, 0x3a, 0x58, 0x5b, 0x53, 0x18, 0x7f, 0xf4, 0xf0, 
-	0xa6, 0xac, 0xe5, 0x97, 0xdf, 0x5d, 0x6a, 0xe7, 0x1e, 0x73, 
-	0xc8, 0x2f, 0x48, 0xbf, 0x27, 0xf5, 0x20, 0x53, 0x61, 0x98, 
-	0x18, 0x18, 0x8e, 0xe2, 0xd6, 0xa3, 0xcf, 0x81, 0xef, 0xd2, 
-	0xa9, 0xf, 0x22, 0xdc, 0x98, 0xde, 0x46, 0x5f, 0x86, 0x73, 
-	0xbf, 0xbe, 0xf9, 0xed, 0xc0, 0x3c, 0x37, 0xf0, 0x2d, 0x10, 
-	0xe7, 0x94, 0xf6, 0xc1, 0xc3, 0xa7, 0xd2, 0xab, 0x6b, 0x3a, 
-	0x7b, 0xeb, 0x1b, 0x7a, 0xca, 0x91, 0x38, 0x57, 0xa0, 0xb1, 
-	0xd5, 0x12, 0xad, 0xcd, 0xbe, 0x36, 0x81, 0xcd, 0x7b, 0x94, 
-	0x22, 0x7e, 0x90, 0x1d, 0xad, 0x6f, 0x22, 0xc0, 0xfd, 0x47, 
-	0xf4, 0xa3, 0x62, 0xa1, 0x41, 0x71, 0xab, 0x3f, 0x71, 0xa4, 
-	0x14, 0xda, 0x36, 0xfa, 0xf5, 0xd7, 0x5f, 0x7f, 0xf0, 0xb2, 
-	0xcb, 0x2e, 0xf3, 0x62, 0xd0, 0xab, 0x9, 0xc0, 0x76, 0xa3, 
-	0x8f, 0x8c, 0xf6, 0x20, 0xbd, 0xd, 0x87, 0x1, 0xe0, 0x70, 
-	0xf4, 0x81, 00, 0x87, 0xa9, 0x36, 0xa, 0x26, 0x55, 0x1f, 
-	0x5c, 0xd, 0x46, 0xcc, 0x69, 0x3d, 0x78, 0x70, 0xd4, 0xad, 
-	0x6, 0x38, 0x4c, 0xab, 0x35, 0xd8, 0x7, 0x6e, 0xa7, 0xf9, 
-	0x85, 0xfe, 0xfd, 0x70, 0xba, 0x35, 0xfd, 0xb, 0x39, 0xc2, 
-	0x57, 0x4, 0x26, 0x1d, 0xc9, 0xea, 0x7, 0xdf, 0xb7, 0x5e, 
-	0xb3, 0xc1, 0x13, 0xb2, 0xbe, 0x63, 0x4d, 0x23, 0x18, 0x9c, 
-	0x2, 0x5e, 0xc6, 0x91, 0x67, 0xf4, 0xe5, 0x3e, 0xc1, 0xce, 
-	0xb0, 0x3c, 0x63, 0x3c, 0x79, 0xc6, 0x7b, 0xd6, 0xfb, 0x7c, 
-	0x76, 0xae, 0xc9, 0x38, 0x74, 0x8, 0xeb, 0x8d, 0x77, 0x29, 
-	0x2f, 0xe, 0xba, 0x30, 0xa, 0xb, 0x75, 0x76, 0x76, 0x1c, 
-	0x6c, 0x48, 0x53, 0x72, 0x74, 0x5d, 0xad, 0x31, 0x1a, 0x72, 
-	0xc0, 0x70, 0x46, 0xd1, 0x89, 0xbe, 0x9b, 0x7a, 0x7a, 0x52, 
-	0x3e, 0x3a, 0x29, 0xb7, 0xed, 0x8e, 0x3, 0x7, 0x4e, 0x8e, 
-	0x8e, 0x8d, 0xed, 0x8e, 0x77, 0x3a, 0x93, 0xf9, 0x42, 0x1c, 
-	0xe, 0x98, 0xa0, 0xe3, 0xd9, 0xe4, 0xec, 0x1f, 0xb, 0xaf, 
-	0x86, 0x5b, 0x76, 0xf2, 0x60, 0x6a, 0xca, 0x68, 0x34, 0x1a, 
-	0xa7, 0x47, 0xe2, 0x9d, 0x76, 0x47, 0xe, 0xd2, 0x63, 0x85, 
-	0x50, 0xc6, 0x29, 0xef, 0x24, 0xca, 0xd9, 0xee, 0xc6, 0xc6, 
-	0x8a, 0x71, 0x89, 0xc9, 0x19, 0xa3, 0x8e, 0x1d, 0xdd, 0x96, 
-	0x3e, 0x73, 0xf6, 0x15, 0xf8, 0xc9, 0x22, 0xd6, 0xb5, 0x74, 
-	0x29, 0x81, 0x22, 0xdf, 0xef, 0x93, 0x21, 0x59, 0xbe, 0x4a, 
-	0x37, 0x24, 0xf1, 0x14, 0x18, 0x22, 0xbe, 0x6f, 0x6a, 0x49, 
-	0x7, 0x6, 0xf9, 0x67, 0x79, 0x41, 0x34, 0xb6, 0x5e, 0xd3, 
-	0xcb, 0x1c, 0x41, 0xf2, 0x98, 0xa5, 0x31, 0x30, 0xed, 0xd5, 
-	0x15, 0x5b, 0x52, 0xd6, 0x36, 0xaa, 0xec, 0x64, 0xfb, 0x9, 
-	0x3c, 0xdc, 0x6, 0x27, 0x3, 0x67, 0x4, 0x37, 0xc3, 0x4c, 
-	0x44, 0x80, 0xcd, 0x97, 0xd9, 0xcb, 0x73, 0x60, 00, 0xeb, 
-	0x3f, 0x73, 0x73, 0x73, 0xc7, 0x62, 0x9a, 0x23, 0x6c, 0xaf, 
-	0x8f, 0xb, 0xb, 00, 0x70, 0x27, 0xfa, 0xe0, 0xff, 0x84, 
-	0x85, 0x4, 0xaf, 0xc2, 0x24, 0xef, 0xc2, 0xe2, 0x86, 0x59, 
-	0x30, 0x25, 0x6b, 0x38, 0xa0, 0x16, 0xa, 0xe0, 0xf8, 0x49, 
-	0x99, 0xe9, 0xd0, 0xce, 0x2d, 0x38, 0xe3, 0x8b, 0xeb, 0xd7, 
-	0x7d, 0xeb, 0x8, 0x11, 0x80, 0xc9, 0xf5, 0xa, 0x8e, 0x63, 
-	0xea, 0x84, 0xb6, 0xbf, 0x9, 0x3, 0x6e, 0x61, 0xf3, 0x44, 
-	0xd4, 0xf3, 0x4a, 0x56, 0xa0, 0x4a, 0xd8, 0xea, 0xb, 0x78, 
-	0xe9, 0x5b, 0xef, 0x33, 0x2c, 0xcf, 0x18, 0x26, 0x49, 0x9c, 
-	0xc1, 0x3e, 0x80, 0xc2, 0xe3, 0x13, 0x20, 0x1f, 0xb0, 0xad, 
-	0xd7, 0x2, 0x68, 0xb9, 0x47, 0x5f, 0xa6, 0x87, 0x98, 0xb6, 
-	00, 0x9c, 0xe9, 0x5b, 0xe3, 0xe, 0x96, 0xdf, 0xd9, 0x3c, 
-	0x33, 0xb6, 0x6e, 0xd1, 0x62, 0xae, 0x38, 0x58, 0x5, 0xb3, 
-	0xda, 0x86, 0xbe, 0x70, 0x80, 0x68, 0x66, 0xe3, 0x42, 0xb, 
-	0xa5, 0x7f, 0xdc, 0x25, 0x9b, 0x83, 0xaf, 0xb0, 0xfa, 0x40, 
-	0xc9, 0x8f, 0xae, 0x5e, 0xbd, 0x3c, 0x27, 0x39, 0x29, 0xe3, 
-	0xa9, 0x82, 0xa3, 0x3f, 0xe9, 0x71, 0xb9, 0x9a, 0x1e, 0x9c, 
-	0x3b, 0xe7, 0x27, 0x3c, 0xf9, 0xf4, 0x81, 0xb9, 0x73, 0xd4, 
-	0x17, 0x17, 0x2f, 0x52, 0xf, 0xbd, 0xbd, 0x5e, 0x15, 0xf8, 
-	0xa7, 0xcb, 0x2, 0x69, 0xe, 0x31, 0x70, 0xc5, 0xc4, 0x9, 
-	0xa, 0xe9, 0xab, 0x76, 0xff, 0xaa, 0x36, 0x9c, 0xcb, 0x56, 
-	0xf6, 0x5a, 0x71, 0xc9, 0x8f, 0xa, 0x1a, 0x1a, 0xca, 0x91, 
-	0x4, 0x8b, 0x24, 0xc0, 0x21, 0x42, 0xa9, 0xd8, 0x78, 0xef, 
-	0xc3, 0xca, 0x93, 0xf9, 0x29, 0x9, 0x9, 0x49, 0xd3, 0x33, 
-	0x33, 0x27, 0xb7, 0xa7, 0x8d, 0x19, 0xdf, 0xc3, 0xdf, 0x11, 
-	0x3, 0xe9, 0xea, 0xc0, 0x3f, 0x6, 0xf4, 0xf1, 0xc6, 0x50, 
-	0xdc, 0x72, 0xf8, 0x29, 0x3f, 0xd1, 0x57, 0xb9, 0x21, 0x7c, 
-	0xbe, 0x8c, 0xe7, 0x1, 0xa, 0x65, 0x96, 0x4b, 0x4, 0xf1, 
-	0x19, 0x99, 0x85, 0xd3, 0xa9, 0xea, 0x79, 0x6e, 0xa, 0x12, 
-	0x12, 0x42, 0xfd, 0x52, 0xc0, 0x74, 0x8a, 0xfc, 0xc7, 0x63, 
-	0x8f, 0xf7, 0x1f, 0x3e, 0x95, 0x79, 0xb2, 0xb2, 0xb3, 0xba, 
-	0xaf, 0xcf, 0xdc, 0x8f, 0x57, 0x50, 0xb, 0x1, 0x8d, 0x4d, 
-	0x70, 0x13, 0xd4, 0x62, 0x8e, 0x23, 0xa8, 0x81, 0x6d, 0x87, 
-	0xb6, 0x7e, 0x18, 0xe0, 0x5c, 0x7c, 0xf9, 0xe5, 0x97, 0x47, 
-	0xf3, 0xe6, 0x60, 0xe4, 0x7, 0x78, 0x14, 0xcc, 0xea, 0xdb, 
-	0x31, 00, 0xb6, 0x3, 0xd7, 0xae, 0x6d, 0xdb, 0xb6, 0xad, 
-	0xc4, 0x72, 0xd0, 0xdd, 0xd0, 0xbe, 0x2d, 0x2, 0x70, 0x68, 
-	0x75, 0x7, 0xee, 0x2f, 0xc2, 0xe6, 0x83, 0x68, 0x68, 0xf9, 
-	0xa3, 0x98, 0xd6, 0x58, 0x87, 0x74, 0xf9, 0xbd, 0xc2, 0x6c, 
-	0x5, 0xcd, 0xbd, 0x1, 0x3, 0x32, 0xb1, 0x60, 0xe2, 0x1a, 
-	0x94, 0xc1, 0x89, 0x77, 0x7, 0xcb, 0xfa, 0x9c, 0x3d, 0x23, 
-	0x7, 0xc5, 0x31, 0x13, 0x86, 0x5, 0x98, 0x83, 0xf9, 0xf2, 
-	0x4c, 0xe2, 0x73, 0xd0, 0x87, 0xdd, 0xc, 0xce, 0xe9, 0xf3, 
-	0x19, 0x35, 0x2e, 0x9f, 0xf9, 0x92, 0xf4, 0x5, 0x78, 0x1, 
-	0xc2, 0x27, 0x6b, 0xd2, 0xa0, 0x24, 0x60, 0xd9, 0xf5, 0xa1, 
-	0x75, 0x24, 0x3c, 0xb0, 0x82, 0x95, 0x61, 0xb9, 0xe, 0xf6, 
-	0x5, 0xec, 0xcc, 0x7, 0x29, 0xea, 0xc4, 0x25, 0x8e, 0x5c, 
-	0xeb, 0x9b, 0x67, 0xfb, 0x2f, 0x18, 0xcc, 0x48, 0x8f, 0xb, 
-	0x52, 0xa2, 0x50, 0xb6, 0xc7, 0xf, 0x1e, 0x52, 0x2b, 0xb2, 
-	0xb3, 0xd4, 0x1f, 0xf, 0xe5, 0xab, 0xdb, 0xa6, 0xe4, 0xa9, 
-	0x3a, 0xc, 0x96, 0xcd, 0x48, 0x4b, 0x55, 0x33, 0x71, 0xea, 
-	0xd, 0x8f, 0x3d, 0x62, 0x9c, 0x55, 0xd9, 0x59, 0x37, 0xb0, 
-	0x8, 0x73, 0x52, 0x53, 0xf7, 0xbc, 0x51, 0x72, 0xe2, 0x90, 
-	0x1c, 0x69, 0x9c, 0xe2, 0x3, 0x3f, 0x9e, 0x67, 0x6b, 0xf7, 
-	0xd2, 0xb1, 0x63, 0x8a, 0x73, 0xe1, 0x43, 0xa1, 0x89, 0x58, 
-	0x22, 0x7b, 0x75, 0xce, 0x44, 0x95, 0x16, 0x1b, 0x87, 0xe5, 
-	0xdf, 0x86, 0x4a, 0xc6, 0xc1, 0x90, 0xa4, 0x68, 0x87, 0x63, 
-	0xc2, 0x7f, 0xed, 0xdd, 0x5b, 0x8c, 0xae, 0x23, 0x13, 0xa2, 
-	0xe2, 0xa0, 0xdc, 0x93, 0x39, 0xe2, 0x13, 0xe4, 0x75, 0xae, 
-	0xbe, 0x9e, 0xfd, 0x55, 0x27, 0xb, 0x13, 0x8f, 0xc4, 0xbd, 
-	0x9f, 0x79, 0xf9, 0xda, 0x4f, 0xc2, 0x3c, 0x8f, 0xa, 0x54, 
-	0x12, 0x23, 0x33, 0x12, 0xec, 0xa5, 0xfe, 0xbf, 0x47, 0x84, 
-	0x7b, 0x7e, 0x12, 0x7c, 0x8a, 0x2f, 0xf7, 0x3, 0x3e, 0x9b, 
-	0x8a, 0xc0, 0x5, 0x3, 0xa8, 0x10, 0x16, 0x86, 0x52, 0x4e, 
-	0x20, 0xb0, 0xd9, 0xe3, 0xc8, 0x4, 0x6d, 0x8d, 0xaf, 0x4d, 
-	0x9d, 0x9c, 0x34, 0x75, 0x54, 0x92, 0x23, 0x15, 0x61, 0xe, 
-	0x87, 0xf3, 0xb7, 0x3c, 0x59, 0x6, 0x86, 0x75, 0xad, 0xe2, 
-	0x9f, 0xd9, 0xd2, 0xe6, 0x6a, 0x2d, 0x2a, 0x69, 0xe7, 0x4e, 
-	0xaf, 0x37, 0xe1, 0xb8, 0x40, 0x45, 0x16, 0xa9, 0x88, 0x6, 
-	0x97, 0x7e, 0x36, 0xdf, 0xe1, 0xaf, 0x33, 0x5e, 0x89, 0x15, 
-	0x40, 0xff, 0x81, 0x5, 0x29, 0x18, 0xb, 0xd3, 0x83, 0x99, 
-	0xb8, 0x7d, 0x66, 0xe2, 0x3a, 0x6f, 0xac, 0x3e, 0x73, 0x41, 
-	0xfb, 0x1e, 0xc2, 0xfb, 0x5d, 0xd0, 0xbe, 0x89, 0x58, 0x96, 
-	0x78, 0xa, 0x7d, 0xf5, 0x16, 00, 0x1b, 0x4b, 0x89, 0x5b, 
-	0x53, 0x11, 0xa7, 0x3, 0x53, 0x24, 0x55, 0xf8, 0x59, 0xd7, 
-	0xc7, 0xa0, 0xed, 0x2b, 0x91, 0x2a, 0xd7, 0x14, 0x72, 0xf1, 
-	0x30, 0x7d, 0x76, 0xea, 0x93, 0xe0, 0xe2, 0xee, 0xbf, 0xff, 
-	0xfe, 0x3b, 0x60, 0x31, 0x9c, 0x57, 0x80, 0x93, 0xef, 0xc2, 
-	0x7b, 0x9, 0xb, 0x58, 0xe9, 0x4b, 0x98, 00, 0xd, 0xe, 
-	0xe3, 0xfb, 0x38, 00, 0xc8, 0xf1, 0x6, 0xbc, 0x8a, 0xd1, 
-	0x23, 0xfe, 0x58, 0x13, 0x88, 0x60, 0xc2, 0x8c, 0x1, 0x4f, 
-	0x20, 0x35, 0xe9, 0x3, 0xa8, 0x7a, 0x70, 0x10, 0xd6, 0x89, 
-	0xc1, 0xc1, 0x43, 0x3a, 0xe, 0x20, 0xfa, 0x9d, 0x3e, 0xdf, 
-	0xc, 0x8b, 0x3f, 0xf4, 0xf6, 0x4a, 0x58, 0x36, 0x6, 0xd3, 
-	0x65, 0x5e, 0x4c, 0x7, 0x3e, 0x35, 0x7, 0x17, 0x8b, 0xe8, 
-	0xb3, 0xde, 0x98, 0x1e, 0x41, 0x3b, 0x98, 0x13, 0xa0, 0x5b, 
-	0xc1, 0xcd, 0xb4, 0xc4, 0xb1, 0x8c, 0x11, 0x13, 0xca, 0x64, 
-	0x7f, 0xf1, 0x5, 0x40, 0x4, 0x62, 0xe9, 0x5f, 0x1f, 0x4e, 
-	0x89, 0x3d, 0x5, 00, 0x3e, 0xb4, 0xfe, 0x1d, 0xc5, 0x39, 
-	0xe5, 0x3, 0xfe, 0x69, 0x27, 0x6b, 0xda, 0x30, 0xc1, 0xb1, 
-	0x41, 0x24, 0x59, 0xcd, 0x1f, 0x33, 0x56, 0x51, 0x3b, 0xf3, 
-	0x1d, 0x32, 0x9, 0xd3, 0x29, 0xf5, 00, 0x62, 0x62, 0xb7, 
-	0xc7, 0xbd, 0xd, 0x1a, 0x76, 0x3f, 0x6, 0xd7, 0x6e, 0xc0, 
-	0x81, 0x48, 0xb3, 0xe4, 0xdd, 0x17, 0xa, 0x8f, 0xa9, 0x7c, 
-	0x1c, 0xb, 0xc5, 0x53, 0x51, 0x3f, 0xc4, 0x20, 0x25, 0xcb, 
-	0xce, 0xfa, 0x21, 0x49, 0xf8, 0x46, 0xec, 0x7, 0x6f, 0x41, 
-	0x3, 0xfa, 0xd1, 0xe9, 0xd3, 0xd4, 0xa, 0xec, 0x49, 0x17, 
-	0xea, 0x84, 0x59, 0xde, 0x8e, 0xbe, 0xfc, 0xde, 0xa3, 0x47, 
-	0x5d, 0xcf, 0x1e, 0x3e, 0xf2, 0x8, 0xfa, 0xf9, 0x9b, 0xf1, 
-	0x8c, 00, 0x27, 0xa8, 0x3, 0x63, 0x4b, 0x8, 0x13, 0x53, 
-	0xc4, 0x18, 0xf1, 0x75, 0xdb, 0xa4, 0x29, 0x8b, 0xe6, 0x27, 
-	0x25, 0x8d, 0x41, 0x77, 0x1, 0x38, 0xf6, 0x61, 0xa, 0xb7, 
-	0x41, 0xb8, 0x2, 0xf7, 0xb4, 0xd6, 0x87, 0x2a, 0x75, 0x1d, 
-	0xd8, 0xb7, 0x9e, 0xa, 0x93, 0x7d, 0x78, 0xa6, 0x49, 0x27, 
-	0xd8, 0xd2, 0x4a, 0x13, 0xe5, 0xa4, 0x1f, 0xa0, 0x33, 0x81, 
-	0x9b, 0x85, 0x60, 0x1, 0xe8, 0x3e, 0xa, 0x37, 0x5, 0xf5, 
-	0x4b, 0xd0, 0xd3, 0xb1, 0x11, 0xf0, 0x35, 0x2e, 0x8, 0xf8, 
-	0x89, 0xda, 0xbc, 0xb, 0xe1, 0xf5, 0x70, 0xd, 0x70, 0xd4, 
-	0xd6, 0x2, 0x70, 0x5d, 00, 0x5c, 0xcb, 0x68, 0x8d, 0x1d, 
-	0x80, 0x4c, 0x81, 0x39, 0xfe, 0xe, 0x6, 0x84, 0x92, 0xb9, 
-	0x71, 0x3f, 0x52, 0xe2, 0x6e, 0x9d, 0x37, 0xdf, 0x7c, 0xd3, 
-	0xd, 0xad, 0xbf, 0x1e, 00, 0xb7, 0x43, 0xf3, 0xd8, 0x21, 
-	0x84, 0x76, 00, 0x2, 0x32, 0xdb, 0xd7, 0xd, 0x4d, 0xb6, 
-	0x17, 0x3f, 0xeb, 0xfa, 0xc, 0x34, 0x74, 0x7, 0xd2, 0x16, 
-	0x66, 0xb2, 0xa1, 0x12, 0x70, 0x13, 0xe0, 0x74, 0x9, 00, 
-	0xf8, 0xed, 0xe7, 0x3, 0xe0, 0x14, 0x94, 0x50, 0x4e, 0x40, 
-	0x4c, 0x70, 0xd1, 0x59, 0xaf, 0x1, 0x3c, 0x7d, 0xf6, 0x18, 
-	0xee, 0x69, 0x20, 0x13, 0x3c, 0x4, 0x30, 0xbe, 0xd9, 0xc0, 
-	0xb7, 0x1b, 0xb4, 0x66, 0xe8, 0x8, 0xde, 0xb3, 0x25, 0x2, 
-	0x9f, 0xda, 0x9f, 0x9b, 0x34, 0xd0, 0x80, 0x98, 0x3c, 0xe4, 
-	0x10, 0x96, 0x8f, 0x96, 0x13, 0xe6, 0xcf, 0x86, 0x82, 0xd3, 
-	0x84, 0xd4, 0xf2, 0x4, 0x33, 0x1d, 0xcb, 0x23, 0xbe, 0x80, 
-	0x5f, 0x80, 0x2e, 0xbe, 0x15, 0xf0, 0x91, 0x94, 0xd1, 00, 
-	0x88, 0x6c, 0x7f, 0x7a, 0xb2, 0xdf, 0x2b, 0xf7, 0xe2, 0xec, 
-	0x33, 0x1e, 0x6a, 0xc8, 0x65, 0xa4, 0x67, 0x22, 0xac, 0x4, 
-	0x43, 0x5f, 0x38, 0x45, 0xaf, 0xf3, 0xbe, 0x2e, 0x37, 0x37, 
-	0x10, 0xbd, 0xb9, 0xa7, 0xf7, 0x97, 0x37, 0xfc, 0xf5, 0xaf, 
-	0xbf, 0xd8, 0x7c, 0xef, 0xbd, 0x2f, 0xe1, 0xc7, 0x4, 0x56, 
-	0xc8, 0x3, 0xd1, 0xf4, 0xb8, 0x36, 0xa1, 0x7d, 0x8d, 0xfb, 
-	0xe7, 0xcc, 0xd1, 0x96, 0x41, 0x6, 0xf8, 0x8b, 0xa5, 0xa4, 
-	0xfa, 0x5c, 0xf3, 0x87, 0x17, 0x2e, 0xd4, 0xd1, 0xe5, 0x28, 
-	0x63, 0x79, 0xb7, 0x5, 0xcb, 0x54, 0x6b, 0xa6, 0xcf, 0xe0, 
-	0xc1, 0x90, 0xa, 0xab, 0x22, 0xdb, 0xf7, 0xef, 0xdf, 0x7f, 
-	0x2f, 0x78, 0xc7, 0xc5, 0xea, 0xc4, 0x1, 0x2d, 0x56, 0xb6, 
-	0x12, 0x82, 0x19, 0xca, 0x23, 0xdd, 0x58, 0xb8, 0x1b, 0xc0, 
-	0x1f, 0xca, 0x24, 0x9f, 0xe9, 0x86, 0x1a, 0x3e, 0x49, 0xcc, 
-	0x79, 0xdd, 0x38, 0x40, 0x2e, 0x8a, 0x71, 0xef, 0x15, 0x38, 
-	0x62, 0x8c, 0xb8, 0x62, 0xba, 0x1, 0xa5, 0x39, 0x14, 0x70, 
-	0x33, 0x3, 0x4a, 0x9, 0x33, 0x26, 0xb8, 0x69, 0x6b, 0x10, 
-	0xdc, 0x54, 0xab, 0x74, 0xc, 0xf3, 0x9e, 0x3c, 0xb7, 0x16, 
-	0x48, 0xb4, 0x32, 0x33, 0x15, 0x27, 0x85, 0x60, 0x1, 0xe9, 
-	0xf8, 0x81, 0x4c, 0xdf, 0x89, 0xc5, 0x29, 0xbf, 0xc0, 0x3c, 
-	0xf5, 0xd5, 0xfc, 0xe9, 0x55, 0x5c, 0xf, 0x8b, 0xb8, 0x78, 
-	0xe1, 0x8d, 0x37, 0xde, 0x70, 0x43, 0x20, 0xff, 0x3, 0xd3, 
-	0x1f, 0xfb, 0x20, 0xf0, 0x89, 0x1c, 0x3c, 0x2b, 0x2b, 0x2b, 
-	0x2b, 0xc1, 0x14, 0x8, 0x19, 0xcb, 0x32, 0x49, 0x9e, 0x2c, 
-	0x33, 0xbf, 0x81, 00, 0xa7, 0xa3, 0xe6, 0xa6, 0x26, 0xd7, 
-	0x20, 0xbf, 0xef, 0xbe, 0xfb, 0x3e, 0x82, 0x45, 0x11, 0xab, 
-	0x61, 0xa2, 0x43, 0xe9, 0x31, 0xea, 0xc8, 0x51, 0x30, 0xa0, 
-	0x5, 0xc4, 0xbc, 0x2f, 0x40, 0xa6, 0x2f, 0x8e, 0xb, 0x25, 
-	0x78, 0x16, 0x38, 0xb5, 0x5, 0x1, 0x82, 0xef, 0x32, 0x39, 
-	0xe8, 0xc7, 0xcd, 0x2b, 0x9c, 0xd7, 0x3d, 0xdf, 0xe4, 0x6f, 
-	0x60, 0xf4, 0x5a, 00, 0xc, 0x62, 0x1a, 0x6c, 0x4, 0x50, 
-	0x76, 0x3d, 0xaf, 0xcc, 0xe3, 0xa4, 0x58, 0x46, 0xab, 0xb, 
-	0x5, 0x78, 0xd1, 0xe0, 0xf4, 0xf9, 0xfc, 0x4c, 0x64, 0xdb, 
-	0xba, 0x55, 0xe1, 0x6c, 0x67, 0xfc, 0xdc, 0x23, 0x86, 0x4a, 
-	0xc0, 0xa7, 0xd, 0x65, 0xe5, 0xea, 00, 0x56, 0x99, 0xbd, 
-	0xe8, 0x1f, 0x44, 0x3b, 0xd3, 0xfb, 0xd6, 0xe7, 0x53, 0xc0, 
-	0xb7, 0xeb, 0x72, 0x73, 0xd4, 0xed, 0xd8, 0xaf, 0x9d, 0x80, 
-	0xba, 0x85, 0x40, 0xd4, 0x22, 0xc9, 0xfa, 0xfa, 0xee, 0xce, 
-	0xff, 0xc6, 0x1a, 0xf0, 0xa9, 0xa5, 0xad, 0xed, 0x7b, 0xe6, 
-	0xa6, 0xa5, 0x3e, 0x6f, 0x7d, 0x47, 0xc2, 0xc1, 0x20, 0x96, 
-	0xfb, 0xda, 0xc7, 0xb7, 0x94, 0x2c, 0x5e, 0xa2, 0x46, 0xd5, 
-	0xd7, 0xa9, 0x56, 0x58, 0x9, 0xbd, 0xfe, 0xba, 0xc1, 0x12, 
-	0xd5, 0xbe, 0xc2, 0xc2, 0xc2, 0xad, 0x38, 0xec, 0xe1, 0xc7, 
-	0x88, 0x47, 0x30, 0x12, 0x84, 0x22, 0xff, 0x56, 0x8c, 0x51, 
-	0xd0, 0xac, 0x8e, 0x4a, 0x93, 0x44, 0x99, 0x25, 0xb8, 0xd9, 
-	0x28, 0x58, 0xb1, 0x24, 0x5a, 0x9b, 0x3e, 0xd3, 0xe4, 0x73, 
-	0x3a, 0xcc, 0xc0, 0xf1, 0x17, 0x5, 0x4e, 0xd3, 0x60, 0x4d, 
-	0xbd, 0x24, 0xce, 0xc, 0x4, 0xb4, 0x2, 0x50, 0x6b, 0xcd, 
-	0x58, 0xc1, 0x2d, 0xcf, 0xa5, 0x40, 0xd6, 0xcc, 0xa5, 0x15, 
-	0x62, 0xcb, 0x64, 0x87, 0x39, 0x7e, 0x39, 0xb4, 0xec, 0x55, 
-	0x18, 0xad, 0x1e, 0x36, 0xb0, 0xf9, 0x19, 0x3c, 0xf3, 0x1b, 
-	0x1b, 0x43, 0x1c, 0xd0, 0xe0, 0x5f, 0x83, 0xa6, 0xf9, 0x9, 
-	0xb4, 0xf4, 0xeb, 0xb8, 0xcd, 0xd3, 0xee, 0xf8, 0xf1, 0xfc, 
-	0x3e, 0xe6, 0xcb, 0x3c, 0x85, 0x51, 0xc1, 0x65, 0xc7, 0x23, 
-	0xfd, 0xdc, 0xf8, 0xd3, 0x9f, 0xfe, 0xf4, 0x2a, 00, 0xce, 
-	0xeb, 0x11, 0x3, 0x38, 0xc1, 0x6b, 0x75, 0xc1, 0x5a, 0x59, 
-	0xae, 0x9, 0x16, 0x36, 0x54, 0x9c, 0x6f, 0x87, 0xe0, 0xeb, 
-	0x9f, 00, 0xe2, 0xa1, 00, 0x5c, 0xa4, 0x41, 0x40, 0xfb, 
-	0xcb, 0x48, 0xff, 0x82, 0x10, 0x1b, 0x14, 0x3a, 0x2c, 0xfd, 
-	0xd4, 0xfc, 0xe3, 0x41, 0xa, 0xdc, 0xd7, 0xce, 0x9d, 0x5a, 
-	00, 0x3b, 0x1b, 0x25, 0x7d, 0xaa, 0x29, 0xa7, 0x30, 0x69, 
-	0x41, 0x10, 0xe8, 0xe2, 0x13, 0xc8, 0x2, 0x76, 0x1, 0x36, 
-	0x79, 0x22, 0xe1, 0x70, 0x1f, 0x64, 0x60, 0x4d, 0xb8, 0x6a, 
-	0xe5, 0x4, 0x87, 0x8f, 0xb8, 0x5d, 0x93, 0x6e, 0x38, 0x74, 
-	0x2, 0xe5, 0xa5, 0xbb, 0x1, 0xa7, 0xe5, 0x10, 0xdc, 0x10, 
-	0x88, 0xc, 0xe0, 0x32, 0xa3, 0xb5, 0xb7, 0xa7, 0xf6, 0xf6, 
-	0x17, 0x5f, 0x5e, 0x97, 0x9d, 0x94, 0x14, 0xff, 0xc4, 0xcd, 
-	0x37, 0xb5, 0x76, 0x29, 0x23, 0xd1, 0x3b, 0x69, 0x92, 0x6d, 
-	0xdc, 0x49, 0x5f, 0x3e, 0x6e, 0xc4, 0xe5, 0xc9, 0xa9, 0x24, 
-	0x6b, 0xb8, 0x16, 0x75, 0x93, 0x8a, 0x95, 0x6e, 0x7d, 0xe8, 
-	0x6f, 0x13, 0xd0, 0xf5, 0x7e, 0x50, 0x4b, 0xd9, 0x70, 0xde, 
-	0x9a, 0x13, 0x6b, 0xf, 0x56, 0x60, 0x8f, 0xc3, 0x32, 0xc, 
-	0xea, 0x6e, 0xc1, 0x7d, 0x62, 0x88, 0xf8, 0x20, 0x51, 0x16, 
-	0x9, 0x58, 0x92, 0xe0, 0x4c, 0xc2, 0x56, 0x3c, 0xc9, 0x3b, 
-	0x82, 0x2b, 0xfa, 0x82, 0x45, 0xa6, 0x41, 0xe2, 0xfb, 0x74, 
-	0x3, 0xc8, 0xfe, 0xc8, 0x23, 0x8f, 0xf4, 0xbb, 0xf9, 0x83, 
-	0x1f, 0xfc, 0x80, 0x40, 0xa0, 0x63, 0x26, 0xe2, 0x82, 0x4d, 
-	0x70, 0x3e, 0x97, 0x44, 0x99, 0x89, 0x14, 0x42, 0x40, 0x2d, 
-	0x3e, 0x3f, 0x80, 0x61, 0x16, 0x8a, 0xf1, 0xf8, 0x5e, 0x14, 
-	0xcd, 0x71, 0x1c, 0x49, 0xf4, 0x24, 0x56, 0xa0, 0x25, 0x10, 
-	0x9c, 0x67, 0x4b, 0xec, 0xab, 0x63, 0xfa, 0xcc, 0x6, 0x61, 
-	0x5b, 0x9, 0x2d, 0x52, 0x83, 0xdd, 0x3b, 0xe5, 0x48, 0x53, 
-	0xca, 0x27, 0xbe, 0xe4, 0x2f, 0xd7, 0xcc, 0x96, 0x61, 0x12, 
-	0xcb, 0x45, 0x67, 0xc3, 0x34, 0x59, 0x39, 0x46, 0xe1, 0xb9, 
-	0x32, 0x2e, 0x1b, 0x9a, 0x12, 0x32, 0x2a, 0xd, 0x29, 0xa3, 
-	0xd, 0x9d, 0xac, 0x80, 0x66, 0x98, 0x20, 0x26, 0x80, 0x45, 
-	0x33, 0x73, 0xf0, 0x8b, 0x8e, 0x83, 0x5f, 0x38, 0xa6, 0x49, 
-	0xaf, 0x91, 0xe6, 0x73, 0x58, 0x32, 0x6, 0xa6, 0xfa, 0xf4, 
-	0xe6, 0x8, 0xec, 0x82, 0x1a, 0xf1, 0xe3, 0x8f, 0x87, 0xfe, 
-	0x5, 0x83, 0xc7, 0x24, 0xcf, 0x59, 0x3e, 0x34, 0x40, 0x46, 
-	0x4e, 0x4e, 0xe, 0xd7, 0x19, 0xe8, 0xd3, 0x41, 0xd1, 0x55, 
-	0x32, 0xd9, 0x7f, 0xa7, 0xe5, 0x23, 0xd, 0x17, 0xbf, 0x9f, 
-	0x24, 0x3c, 0xb1, 0xa6, 0xcc, 0x7b, 0xa2, 0xd1, 0xad, 0xf7, 
-	0x8d, 0xe3, 0xc7, 0x94, 0xd1, 0x74, 0xa, 0xcd, 0x74, 0x87, 
-	0x6a, 0xc3, 0x28, 0xf4, 0xff, 0x79, 0xe7, 0x5d, 0xb5, 0x13, 
-	0xe6, 0x2e, 0xe9, 0x9b, 0xdf, 0xfc, 0x26, 0xe, 0x23, 0xfc, 
-	0x35, 0xad, 0x8, 0x5, 0xed, 0x68, 0x7d, 0x4d, 0x71, 0x93, 
-	0xcf, 0xcf, 0x7f, 0xfe, 0x73, 0xf5, 0xe8, 0xa3, 0x8f, 0xaa, 
-	0x8f, 0x7c, 0xe4, 0x23, 0xfa, 0x3c, 0x75, 0x1e, 0x95, 0x24, 
-	0xc4, 0xbd, 0xdc, 0x49, 0xce, 0x68, 0xfd, 0xb, 0x21, 0xc8, 
-	0xb7, 0x17, 0x95, 0x5e, 0x17, 0xed, 0x8c, 0xae, 0xe9, 0xcd, 
-	0xcc, 0xfc, 0xea, 0x1, 0x65, 0xcc, 0x1d, 0x77, 0xcd, 0x35, 
-	0x4e, 0x2f, 0x6, 0xe2, 0xe2, 0xd1, 0xd0, 0x76, 0xa1, 0xf, 
-	0x5d, 0x85, 0xb3, 0xd3, 0x52, 0xd0, 0xc8, 0xb8, 0x71, 0xaa, 
-	0x69, 0xd9, 0x65, 0x4b, 0x55, 0x34, 0xba, 0x2c, 0x58, 0xdb, 
-	0xac, 0xea, 0xf3, 0xa6, 0xa8, 0x53, 0x58, 0xf0, 0xd3, 0x8a, 
-	0x35, 0xeb, 0xa1, 0x88, 0x72, 0x83, 0xd5, 0x8e, 0xe, 0xec, 
-	0x20, 0x5b, 0x82, 0x86, 0x70, 0x3d, 0xba, 0x89, 0xb4, 0x60, 
-	0x45, 0xf6, 0x88, 0x17, 0x12, 0x7d, 0x91, 0x41, 0xfa, 0xbc, 
-	0xa6, 0x9c, 0xd2, 0x9, 0x90, 0x89, 0x9f, 0x60, 0x3c, 0xf1, 
-	0x9a, 0x71, 0xc5, 0xd7, 0xe9, 0x2, 0xcb, 0x92, 0x16, 0x1e, 
-	0xf9, 0x34, 0x9b, 0xe, 0x4, 0xfd, 0xd3, 0x91, 0x71, 0x8f, 
-	0x99, 0x48, 0x22, 0x94, 0x72, 0x6b, 0x6b, 0x43, 0xad, 0x28, 
-	0xa0, 0x47, 0x50, 0x13, 0xe3, 0xb2, 0x50, 0x52, 0x20, 0x29, 
-	0xa0, 0xa4, 0xc7, 0xf8, 0x51, 0x58, 0x2c, 0xf2, 0x6f, 0xb9, 
-	0xb9, 0xb9, 0xb1, 0xc3, 0xe9, 0x67, 0xeb, 0x5c, 0x2c, 0xff, 
-	0x44, 0x60, 0xd0, 0x60, 0x28, 0x1c, 0x6d, 0xec, 0xc0, 0x61, 
-	0x76, 0xff, 0x86, 0xad, 0x99, 0x2e, 0x2c, 0x5c, 0x78, 0x17, 
-	0xd1, 0x4, 0xb4, 0x64, 0x2c, 0xc3, 0xf2, 0x3d, 0x81, 0x14, 
-	0x60, 0xca, 0x1b, 0xd7, 0x5c, 0x73, 0xcd, 0x62, 0xbc, 0x3f, 
-	0x1f, 0x96, 0x44, 0x16, 0xd2, 0x4b, 0x80, 0x70, 0x76, 0x62, 
-	0x8a, 0xad, 0x8, 0xe1, 0x3c, 00, 0x2d, 0x22, 0x13, 0x5d, 
-	0xca, 0x23, 0xbe, 0x8, 0x38, 0x7d, 0x1, 0x38, 0x41, 0xcc, 
-	0x55, 0x71, 0xd0, 0x78, 0x5a, 0x4b, 0xf3, 0x30, 0x2, 0xcc, 
-	0xb5, 0xdb, 0x38, 0xbf, 0x4f, 0x41, 0xff, 0x7b, 0x23, 0x2, 
-	0x1d, 0x63, 0x27, 0xfa, 0x27, 0x86, 0xd0, 0xdf, 0x34, 0x30, 
-	0x80, 0xc9, 0x5f, 0x1e, 0xe1, 0xf7, 0x9a, 0x10, 0x70, 0xfd, 
-	0xab, 0x23, 0xa2, 0xc5, 0x5, 0xf4, 0xa2, 0xc9, 0xe9, 0x93, 
-	0x57, 0xf4, 0x5, 0xe4, 0x46, 0x4b, 0xb3, 0xb2, 0x6d, 0xdc, 
-	0x18, 0x60, 0x3, 0x7f, 0x8b, 0x8b, 0xe7, 0x81, 0x93, 0xd0, 
-	0x65, 0x52, 0xdf, 0xfe, 0xf6, 0xb7, 0xb5, 0xc5, 0xc6, 0x3a, 
-	0xb7, 0x12, 0x2d, 0x9d, 0x4d, 0x9b, 0x36, 0x29, 0xb9, 0x4f, 
-	0xa0, 0xa3, 0x6e, 0x15, 0x6, 0x5d, 0xd5, 0xd7, 0xbf, 0xfe, 
-	0x75, 0x1d, 0xb5, 0x81, 0x7, 0x3e, 0x70, 0x99, 0x25, 0x8, 
-	0xf9, 0x46, 0x8f, 0x8e, 0x89, 0xfd, 0xc6, 0xf2, 0xdc, 0xdc, 
-	0x9b, 0xab, 0xbb, 0xba, 0x26, 0xe2, 0x88, 0x24, 0xfd, 0xd3, 
-	0x53, 0x7c, 0x5a, 0x32, 0x7f, 0x41, 0xa0, 0x3c, 0xc5, 00, 
-	0xb5, 0x89, 0xf9, 0x28, 0x8f, 0x23, 0x4a, 0x55, 0xcc, 0x9d, 
-	0xa7, 0xdf, 0x1d, 0xca, 0x3f, 0xd6, 0x27, 0x94, 0x58, 0x34, 
-	0x80, 0xfd, 0x25, 0xbf, 0x79, 0x2e, 0xe0, 0xe5, 0xeb, 0x94, 
-	0x45, 0xc1, 0x85, 0x80, 0x99, 0x98, 0x12, 0x85, 0x2a, 0xcf, 
-	0x4, 0x53, 0xa2, 0x28, 0xe9, 0xb3, 0x88, 0x74, 0xb7, 0xbe, 
-	0xd1, 0x28, 00, 00, 0x20, 00, 0x49, 0x44, 0x41, 0x54, 
-	0x92, 0x6, 0xfd, 0x1, 0xc4, 0xc4, 0xc2, 0x11, 0x5f, 0x60, 
-	0xc2, 0x92, 0x19, 0x13, 0x95, 0xc, 0xf9, 0x8c, 00, 0xb6, 
-	0x82, 0x9b, 0xcf, 0x18, 0x5f, 0xa, 0xc3, 0xcc, 0x19, 0xe6, 
-	0x7d, 0x4a, 0x2c, 0xf3, 0x8a, 0x82, 0x39, 0xbe, 0x7a, 0x24, 
-	0xcc, 0x71, 0xa4, 0xd5, 0x4f, 0x13, 0x10, 0x38, 0x34, 0x5f, 
-	0x31, 0x38, 0xe7, 0xc0, 0x32, 0xde, 0x1f, 0x72, 0xe3, 0x7, 
-	0xce, 0xc1, 0xda, 0xc0, 0x78, 0x7e, 0x12, 0xe6, 0xb0, 0x5c, 
-	0x24, 0x13, 0x7d, 0xfe, 0x54, 0xec, 0x26, 0xbb, 0xf, 0xe6, 
-	0xe6, 0x1c, 0xb8, 0x54, 0x8, 0x1e, 0xc7, 0x13, 0x1c, 0xd4, 
-	0xa6, 0x18, 0x8, 0x71, 0x43, 0x33, 0xd4, 0x6f, 0xdf, 0xbe, 
-	0x7d, 0x2c, 0xba, 0xe, 0xe, 0xa, 0xe5, 0x99, 0x88, 0x65, 
-	0x20, 0xd1, 0xa7, 0xa3, 0xd0, 0x8a, 0xa6, 0x26, 0xa0, 0xad, 
-	0xa0, 0x46, 0xcb, 0xae, 0xf, 0xed, 0xc7, 0xce, 0x37, 0xe, 
-	0x4e, 0xfd, 0xfd, 0x21, 0x3a, 0x4, 0x33, 0x8, 0x4e, 0x36, 
-	0xd8, 0xec, 0x4a, 0x70, 0x40, 0x8e, 0x5a, 0xb5, 0xbc, 0xbc, 
-	0xdc, 0xe4, 0x51, 0xcf, 0xb0, 0x86, 0xf4, 0x6f, 0x88, 0x91, 
-	0x1f, 0xd4, 0x6a, 0x2, 0x72, 0x86, 0x9, 0x6c, 0x21, 0xd, 
-	0xf2, 0x51, 0xc9, 0xca, 0xc8, 0x44, 0x43, 0x57, 0x53, 0xad, 
-	0xa7, 0xa5, 0x3e, 0xf7, 0xd6, 0xdb, 0xea, 0x63, 0xf7, 0xdc, 
-	0xa3, 0x3e, 0xf7, 0xb9, 0xcf, 0x71, 0xcb, 0xa7, 0x7e, 0x5f, 
-	0xe2, 0x5b, 0xfd, 0x87, 0x1e, 0x7a, 0x48, 0x3, 0x9b, 0xe7, 
-	0x9f, 0x7d, 0xe2, 0x13, 0x9f, 0x50, 0x37, 0xdd, 0x74, 0x93, 
-	0xd6, 0xe2, 0xf, 0x3f, 0xfc, 0xb0, 0xfa, 0xe1, 0xf, 0x7f, 
-	0xc8, 0xfd, 0xfd, 0x3a, 0xfa, 0xaf, 0xf6, 0xec, 0xd5, 0x2, 
-	0x79, 0x27, 0x16, 0x2f, 0x41, 0x38, 0xbd, 0x5b, 0x7b, 0x7a, 
-	0x72, 0x64, 0xb9, 0xb3, 0xd4, 0x21, 0xbf, 0x45, 0x1a, 0x1e, 
-	0x37, 0x66, 0xa, 0x86, 0x4b, 0x7e, 0xf3, 0x7c, 0x79, 0x90, 
-	0x79, 0x4e, 0x5c, 0x10, 0x3f, 0x14, 0x18, 0xca, 0x23, 0xeb, 
-	0x9f, 0x4c, 0x10, 0x3c, 0x9, 0x43, 0x4, 0x3f, 0x12, 0x9f, 
-	0xef, 0x30, 0x3e, 0x1d, 0xef, 0xf1, 0x7d, 0xc1, 0x24, 0xfd, 
-	0x7e, 0x14, 0xa, 0xdc, 0x8c, 0xe4, 0x93, 0x52, 0x5f, 0xa6, 
-	0x4c, 0x44, 0x84, 0x4f, 0x9e, 0x31, 0x71, 0x29, 0x88, 0x35, 
-	0x41, 0x29, 0xac, 0x14, 0x8a, 0xcf, 0x2, 0x5, 0x47, 0x8b, 
-	0x9a, 0x8c, 0x4a, 0xfe, 0x29, 0x76, 0x71, 0xc5, 0xc, 0x5, 
-	0x2c, 0xd6, 0x84, 0x83, 0xc3, 0xa2, 0x19, 0xe9, 0xb, 0x90, 
-	0x18, 0xc6, 0xe8, 0xb1, 0x6, 0x38, 0x84, 0xe6, 0xa7, 0x18, 
-	0xa8, 0x5b, 0x1, 0xf3, 0xed, 0x47, 0x78, 0x57, 0x18, 0xc0, 
-	0x64, 0x18, 0xf6, 0xb0, 0x55, 0x85, 0x56, 0x7e, 00, 0x65, 
-	0x9a, 0x87, 0xd1, 0xdf, 0xd8, 0xdc, 0xdc, 0xdc, 0x7c, 00, 
-	0xbc, 0x1d, 00, 0xb4, 0xc3, 0x94, 0x4a, 0x83, 0xcb, 0x45, 
-	0xff, 0x37, 0x6, 0x26, 0x55, 0x13, 0x96, 0xbb, 0x8e, 0x86, 
-	0x50, 0xa1, 0xc8, 0xa1, 0x1, 0x1e, 0xaa, 0x2c, 0xc1, 0xa0, 
-	0xa6, 0xb0, 0x43, 0x53, 0x73, 0xb4, 0x5b, 0xe5, 0xe4, 0xe0, 
-	0x47, 0xfb, 0xb0, 0x27, 0x19, 0x1a, 0x4f, 0xf8, 0xca, 0x72, 
-	0xfd, 0x43, 0x11, 0x47, 0xd3, 0x79, 0xaa, 0x29, 0xac, 0x34, 
-	0xc5, 0x3, 0x6, 0xd1, 0xff, 0xd4, 0x27, 0xc4, 0x5a, 0x41, 
-	0x4e, 0x7e, 0x8a, 0x46, 0x27, 0xf, 0x5, 0xe4, 0x51, 0xd8, 
-	0x53, 0xad, 0xfb, 0xdb, 0xe0, 0x8, 0xa7, 0xb4, 0x48, 0xb0, 
-	0xc6, 0xf4, 0xb9, 0xe1, 0xfa, 0x22, 0xcc, 0x3f, 0x39, 0x9d, 
-	0x94, 0x5b, 0x36, 0x99, 0x27, 0xba, 0x58, 0x5a, 0x63, 0x23, 
-	0x4f, 0xbd, 0xd3, 0xeb, 0xb9, 0xe7, 0x9e, 0xd3, 0x6f, 0xf2, 
-	0x27, 0x78, 0xc7, 0xc0, 0xb4, 0x26, 0xa1, 0x2, 0x6c, 0xf7, 
-	0x65, 0x8c, 0x8d, 0xc1, 0x2f, 0x4e, 0xaa, 0x1e, 0x8c, 0x15, 
-	0x8, 0xa8, 0x59, 0x16, 0xca, 0x15, 0xaf, 0x59, 0x36, 0xfa, 
-	0xc3, 0x21, 0x7e, 0x23, 0xe4, 0x3d, 0x1a, 0xa, 0xe7, 0x9b, 
-	0x90, 0xa9, 0xc3, 0x50, 0x1a, 0xc1, 00, 0x25, 0x56, 0xac, 
-	0x44, 0x60, 0x5b, 0x33, 0xa3, 0xbc, 0xa, 0x98, 0xe9, 0x5b, 
-	0xdf, 0x27, 0xde, 0xf4, 0xfb, 0x28, 0xa3, 0x60, 0x16, 0xb7, 
-	0x7c, 0x24, 0x2d, 0x84, 0x5c, 0xf3, 0x43, 0x98, 0x18, 0x49, 
-	00, 0xc1, 0x97, 0x25, 0x51, 0x26, 0x4c, 0xd, 0x48, 0x33, 
-	0x57, 0x46, 0xed, 0x18, 0xb6, 0x5e, 0xcb, 0xd0, 0x3c, 0xe3, 
-	0xa, 0xc8, 0x59, 0x58, 0xc7, 0x48, 0x99, 0xe3, 0x2c, 0xa2, 
-	0x38, 0x56, 00, 0x1d, 0xc1, 0xc4, 0x3e, 0x2c, 0x41, 0x84, 
-	0x8a, 0xd0, 0x7, 0x2c, 0xc0, 0x24, 0xba, 0xf6, 0xab, 0x5f, 
-	0xfd, 0xea, 0x57, 0x90, 0x37, 0x6b, 0x92, 0xa3, 0xe3, 0x32, 
-	0x2a, 0x69, 0x60, 0x5e, 0xfd, 0x66, 0x80, 0x7a, 0xa, 0x2b, 
-	0x1e, 0xe6, 0xfc, 0x3b, 0x68, 0x59, 0x2b, 0x70, 0xdd, 0x89, 
-	0x29, 0xa5, 0x1e, 0xdc, 0x6b, 0xc4, 0x75, 0x3e, 0xfa, 0xdc, 
-	0x15, 0x58, 0xdc, 0xd1, 0xe, 0x50, 0xd6, 0xee, 0xda, 0xb5, 
-	0xb, 0xc9, 0xf3, 0x93, 0xfa, 0x93, 0x34, 0x2c, 0x52, 0x6, 
-	0x6a, 0x67, 0xc6, 0xa3, 0xe3, 0xbc, 0x31, 0xad, 00, 0x68, 
-	0x2f, 0x2f, 0x2a, 0x56, 0x9f, 0x92, 0xa, 0xd, 0xa1, 0xf, 
-	0x54, 0xa4, 0x29, 0xfb, 0xbf, 0x81, 0xf8, 0x9d, 0x3c, 0xf0, 
-	0x10, 0xeb, 0xf8, 0xd, 0x34, 0xa0, 0xfa, 0xc7, 0x2, 0x61, 
-	0xba, 0x7b, 0xc9, 0x17, 0x71, 0x30, 0x5b, 0xf5, 0x99, 0x65, 
-	0xe4, 0x1d, 0xeb, 0x91, 0x1a, 0x1b, 0x15, 0xac, 0xd9, 0xf3, 
-	0xe8, 0xb6, 0x6d, 0x7a, 0xca, 0xeb, 0x6b, 0x5f, 0xfb, 0x9a, 
-	0x6, 0x3f, 0x41, 0xc7, 0x81, 0xbc, 0x60, 0x62, 0x23, 0xc1, 
-	0x46, 0x93, 0x24, 0x27, 0x97, 0x52, 0x46, 0x8, 0x72, 0x12, 
-	0x4d, 0x76, 0x2b, 0xfd, 0x17, 0xb4, 0x37, 0x17, 0xc1, 0x90, 
-	0x30, 0xc0, 0xa2, 0x70, 0xa, 0xa3, 0xae, 0x33, 0x96, 0x41, 
-	0x9c, 0xd4, 0xad, 0xc8, 0x9a, 0xf5, 0xfd, 0x48, 0xc2, 0xb4, 
-	0x66, 0xf0, 0xed, 0xd1, 0x68, 0xd0, 0xbf, 0x8c, 0xf7, 0x68, 
-	0x1d, 0x52, 0xe, 0x5, 0x7b, 0x2, 0x5e, 0xc1, 0x95, 0xe0, 
-	0x49, 0x7c, 0x19, 0x69, 0xe7, 0x35, 0xe3, 0x10, 0x8b, 0x74, 
-	0x1, 0x60, 0x23, 0x2c, 0x98, 0x45, 0xf0, 0x34, 0x49, 0x6, 
-	0xa7, 0xef, 0xf8, 0x42, 0x2, 0x6c, 0x26, 0x40, 0x27, 0x9, 
-	0x52, 0xba, 0x5, 0xbc, 0xcc, 0x88, 0x61, 0x3a, 0x29, 0x88, 
-	0x3c, 0x93, 0xcc, 0x99, 0xe, 0x81, 0x1d, 0x85, 0x3e, 0xe5, 
-	0x22, 0x98, 0xe3, 0x57, 0x62, 0xeb, 0xe6, 0xf0, 0x6d, 0x1c, 
-	0x24, 0x44, 0x22, 0xb3, 0x49, 0x64, 0xbe, 0x80, 0x8a, 0x60, 
-	0xa2, 0x90, 0x60, 0xe1, 0x8a, 0x17, 0x6b, 0xd4, 0x4d, 0xf6, 
-	0xbb, 0xb0, 0x6a, 0x2d, 0x1a, 0xfd, 0xad, 0x3b, 0xbf, 0xf2, 
-	0x95, 0xaf, 0x7c, 0x11, 0xd1, 0x9, 0x70, 0x22, 0x2a, 0x1a, 
-	0x5a, 0xc5, 0x9, 0xa1, 0xbb, 0x12, 0x60, 0x4e, 0x87, 0xe0, 
-	0xed, 0x82, 0xc6, 0xee, 0xc5, 0xb5, 0xb, 0x40, 0xa6, 0xeb, 
-	0x43, 0x98, 0xd7, 0x3d, 0x78, 0xb7, 0x4, 0xfd, 0x61, 0x6c, 
-	0xcf, 0xf5, 0xb4, 0x60, 0xbb, 0xe8, 0x21, 0x1c, 0x9f, 0x8c, 
-	0x6c, 0x7c, 00, 0x67, 0x19, 0xa4, 0xf2, 0x45, 0x4b, 0xd3, 
-	0xa7, 0x60, 0xb0, 0x1c, 0x4, 0x36, 0xcc, 0x51, 0x6d, 0x96, 
-	0xa2, 0xc1, 0x60, 0xbf, 0x9e, 0x3, 0x65, 0xba, 0xff, 0x89, 
-	0x32, 0xfc, 0xaf, 0x23, 0xf0, 0x53, 0xef, 0xbf, 0x46, 0x43, 
-	0xca, 0x1f, 0x3d, 0x34, 0x38, 0xde, 0xc0, 0xe9, 0x3e, 0x2, 
-	0x9c, 0xbc, 0x22, 0xcf, 0xc8, 0x5b, 0xf2, 0xaf, 0x77, 0xe9, 
-	0xb2, 00, 0x7f, 0xe6, 0xa3, 0xf1, 0x15, 0x1a, 0xc, 0x64, 
-	0xdc, 0xa2, 0x29, 0xda, 0x95, 0xb3, 0xe, 0x42, 0x62, 0x8a, 
-	0xf3, 0xb9, 0x95, 0x66, 0xa7, 0xa7, 0x29, 0xa7, 0xbf, 0x3b, 
-	0xd0, 0x99, 0x9e, 0x6e, 0x9e, 0x34, 0xc, 0xdd, 0xe0, 0x48, 
-	0x39, 0xa4, 0x4e, 0x45, 0xc6, 0x6, 0xcb, 0xdb, 0x9a, 0x6e, 
-	0xb8, 0x30, 0xba, 0x80, 0x4e, 0xc8, 0xc1, 0x32, 0xc8, 0xe6, 
-	0x7c, 0xc4, 0x71, 0xc2, 0x49, 0xff, 0x9a, 0xaf, 0x58, 0x31, 
-	0x66, 0xc5, 0x12, 0xc3, 0x82, 0x39, 0xfa, 0xc4, 0x1c, 0x7d, 
-	0x2a, 0x4d, 0x51, 0x9c, 0x7a, 0xb1, 0x28, 0xae, 0x7, 0x50, 
-	0x28, 0xb3, 0x5c, 0x6b, 0x6f, 0x30, 0x8a, 0xa0, 0x64, 0xa6, 
-	0x44, 0x92, 0x34, 0x2, 0x2, 0x56, 0xde, 0x27, 0xc9, 0x7d, 
-	0xdf, 0x95, 0x2f, 0x3e, 0xdf, 0xa3, 0x23, 0xb1, 0x85, 0xa2, 
-	0xf9, 0xee, 0x80, 0x16, 0xfc, 0x57, 0x8, 0x37, 0x7e, 0x1f, 
-	0x8d, 0x97, 0xc3, 0x27, 0x32, 0x9b, 0x24, 0x4c, 0x17, 0x40, 
-	0x51, 0x28, 0x30, 0x88, 0xe3, 0xe5, 0x96, 0x45, 0x68, 0x6c, 
-	0x5d, 0x2e, 0x9a, 0x44, 0x4, 0x38, 0xa2, 0x7f, 0xec, 0xcb, 
-	0x5f, 0xfe, 0xb2, 0xe7, 0x57, 0xbf, 0xfa, 0xd5, 0x6f, 0x11, 
-	0xe6, 0xb6, 0xce, 0x54, 0x94, 0x63, 0x14, 0x1, 0x8c, 0x56, 
-	0xf5, 0xb4, 0x24, 0x30, 0xe1, 0x20, 0x2, 0xb8, 0x6b, 0x51, 
-	0x29, 0x99, 0x58, 0x8b, 0x7e, 0x4, 0x42, 0xd8, 0x86, 0xc7, 
-	0xab, 0xd0, 0x20, 0xe8, 0xed, 0xa2, 0xac, 0x70, 0xe6, 0x4f, 
-	0x9f, 0xf9, 0x33, 0x4c, 0xe1, 0xa0, 0xc0, 0xf2, 0x88, 0x26, 
-	0x68, 0x13, 0x6a, 0x69, 0x6a, 0x14, 0xe1, 0x47, 0x50, 0xea, 
-	0xff, 0xfb, 0x2e, 0xd1, 0x90, 0xd2, 0x52, 0x32, 0xb0, 0xe, 
-	0x81, 0x87, 0x1f, 0x98, 0xfc, 0x41, 0x7, 0x9a, 0xea, 0x5c, 
-	0xfe, 0xca, 0x3a, 0x35, 0x30, 0xa7, 0x1d, 0xbd, 0x69, 0xa3, 
-	0x66, 0xc, 0x57, 0x89, 0x71, 0x6e, 0x7b, 0x28, 0x84, 0x3a, 
-	0xa, 0x44, 0x63, 0x1d, 0x8, 0x49, 0x98, 0xf9, 0x5a, 0x69, 
-	0xd3, 0xc9, 0xa, 0xcc, 0x7b, 0x57, 0xab, 0x65, 0xe8, 0x9e, 
-	0xc5, 0x37, 0x34, 0x18, 0x8b, 0x71, 0x3e, 0xdb, 0x87, 0x38, 
-	0x2a, 0x8, 0x4a, 0x1, 0x3f, 0x85, 0x7e, 0xfa, 0x4c, 0x36, 
-	0xeb, 0x3b, 0xb4, 0x1a, 0xa4, 0x1, 0xb1, 0xde, 0x1f, 0x4a, 
-	0x98, 0x72, 0xf, 0xf9, 0xe7, 0xe0, 0xda, 0x17, 0x60, 0xc9, 
-	0x1d, 0xc2, 0x3b, 0x2, 0x54, 0x9f, 0xb6, 0xf0, 0x61, 0xc7, 
-	0x1a, 0x96, 0x64, 0x5, 0x6b, 0xc4, 0x1e, 0x1, 0x4d, 0xa, 
-	00, 0xdb, 0x77, 0x19, 0xfa, 0x7f, 0x30, 0x38, 0x3, 0xb1, 
-	0x20, 0xb0, 0xd6, 0x44, 0x19, 0x16, 0xed, 0xcd, 0x84, 0x59, 
-	0x8, 0x5e, 0xb3, 0x80, 0x56, 0x27, 0xad, 0xa, 0xb, 0x42, 
-	0xa2, 0x50, 0x47, 0xc1, 0x1c, 0xb9, 0x1a, 0xda, 0x72, 0x22, 
-	0xa7, 0x79, 0xf4, 0xdd, 0x61, 0xfe, 0x23, 0x88, 0x48, 0x2, 
-	0x6c, 0xfa, 0x4, 0x15, 0x5b, 0x7c, 00, 0x9b, 0x23, 0xb3, 
-	0x3c, 0x68, 0xa1, 0xdf, 0x37, 0x11, 0xe0, 0xe8, 0xfb, 0x45, 
-	0x3, 0xf4, 0xf7, 00, 0xe0, 0x9f, 0xc3, 0xeb, 0x71, 0xd0, 
-	0xd8, 0x59, 0xa8, 0x28, 0x18, 0x12, 0xd1, 0x5d, 0x48, 0x43, 
-	0x97, 0x9, 0x15, 0xea, 0x45, 0x5c, 0xf, 00, 0xaf, 0x35, 
-	0x38, 0xca, 0x4b, 0xed, 0x8d, 0x29, 0xcc, 0x84, 0x56, 0xc4, 
-	0x33, 0x31, 0xc5, 0xe6, 0xc4, 0x4f, 0xc9, 0xbc, 0x86, 0x51, 
-	0xf8, 0x2d, 0x34, 0xd1, 0xa9, 0x6d, 0x8, 0x66, 0x6b, 0x19, 
-	0x78, 0xf, 0xe6, 0xb7, 0xee, 0x5b, 0xb3, 0x4f, 0x4f, 0x13, 
-	0xfc, 0x12, 0xb0, 0x75, 0x95, 0xd, 0xf8, 0x47, 0xbe, 0x90, 
-	0x3f, 0x6c, 0x8c, 0x31, 0xae, 0x61, 0xf2, 0x44, 0x51, 0xce, 
-	0x20, 0xf4, 0xf2, 0x34, 0x5d, 0x7f, 0x97, 0x5, 0x1b, 0xfa, 
-	0x55, 0xce, 0x10, 0x8f, 0x8e, 0xa6, 0x15, 0x20, 0xc4, 0xfe, 
-	0xbe, 0x90, 0x84, 0xe5, 0xc4, 0xd2, 0xc0, 0x7d, 0xa4, 0x3d, 
-	0xcd, 0xb7, 0x7e, 00, 0x52, 0x6a, 0xa8, 0xd4, 0xbc, 0x3c, 
-	0x1e, 0xc0, 0x68, 0x43, 0xfd, 0x5, 0xce, 0x65, 0x13, 0x4b, 
-	0x42, 0x1a, 0x70, 0xca, 0x1f, 0xeb, 0x7b, 0xb8, 0x44, 0xf9, 
-	0x47, 0x23, 0x34, 0xe, 0xdb, 0x8b, 0x57, 0x21, 0xd, 0x31, 
-	0xcf, 0xa9, 0xed, 0x4, 0x17, 0x4c, 0x9c, 0x18, 0xa2, 0x13, 
-	0x5c, 0x9, 0xee, 0xe8, 0x13, 0x7b, 0xf4, 0x19, 0x8f, 0xe, 
-	0x45, 0xa, 0xe0, 0x14, 0x97, 0xfd, 0xa9, 0x1f, 0x10, 0xfa, 
-	0x3f, 0xd2, 0x6f, 0x8a, 0xca, 0xd7, 0x9, 0xe1, 0x39, 0x7d, 
-	0xc9, 0x4c, 00, 0x6e, 0xbd, 0x26, 0xfa, 0x18, 0x87, 0x85, 
-	0x65, 0xa1, 0xed, 0x98, 0x6a, 0x8a, 0x6, 0xe8, 0xbe, 0x8d, 
-	0x9f, 0x8b, 0xe1, 0x6, 0xd, 0xdc, 0x1a, 0x1e, 0x91, 0xb1, 
-	0x56, 0x47, 0x86, 0xb, 0xb0, 0x69, 0x86, 0x71, 0x20, 0xd, 
-	0x23, 0xdf, 0x7a, 0xd, 0x75, 0x70, 0xe, 0x28, 0x3, 0x35, 
-	0xb8, 0x13, 0x82, 0x74, 0xdf, 0x17, 0xbf, 0xf8, 0xc5, 0x7, 
-	0x30, 0xcd, 0xd5, 0x85, 0x16, 0xd4, 0x83, 0xfe, 0x79, 0x12, 
-	0x2a, 0xd0, 0x3e, 0x18, 0xc0, 0x91, 0x4f, 0x14, 0x5c, 0xf, 
-	0x80, 0x5b, 0x83, 0x74, 0xdb, 0xfe, 0xf2, 0x97, 0xbf, 0xbc, 
-	0x86, 0x93, 0x39, 0x36, 0xd3, 0x44, 0x17, 0x80, 0x53, 0x8, 
-	0xe8, 0xd8, 0xb7, 0x46, 0x9a, 0x26, 0x46, 0x48, 0xd, 0x38, 
-	0x3d, 0x3a, 0x1c, 0x5c, 0x96, 0x4b, 0xd7, 0xa7, 0x39, 0x80, 
-	0x46, 0x93, 0x83, 0x64, 0x36, 0x74, 0xd5, 0xb8, 0xe2, 0x8d, 
-	0x4b, 0x5d, 0xbd, 0x1d, 00, 0x4f, 0x33, 0x6, 0xe1, 0x84, 
-	0xb8, 0x76, 0x7c, 0x28, 0x84, 0xc1, 0x4f, 0x6d, 0x35, 0x31, 
-	0x2e, 0x1b, 0x56, 0x21, 0xac, 0xec, 0xd3, 0x41, 0x36, 0xba, 
-	0x56, 0xe2, 0x31, 0x4b, 0x49, 0xfe, 0x51, 0x70, 0x73, 0x5c, 
-	0x96, 0x32, 0x66, 0xce, 0xd2, 0xf2, 0xc3, 0xb9, 0x7b, 0x2e, 
-	0xd0, 0xa1, 0xc6, 0xb7, 0x82, 0x9b, 0xb2, 0x46, 0x60, 0x8b, 
-	0xc, 0x5a, 0xd3, 0x1a, 0x6a, 0x98, 0xf2, 0x8f, 0x99, 0x97, 
-	0x18, 0x94, 0xef, 0x9f, 0xa1, 0x4c, 0x74, 0x17, 0x11, 0xef, 
-	0x8a, 0x75, 0xcb, 0x64, 0x4, 0x3f, 0x2, 0x62, 0x2b, 0xb6, 
-	0x18, 0xe6, 0x7d, 0xe2, 0x4b, 0xe3, 0x12, 0x65, 0x11, 0x25, 
-	0x8a, 0x5b, 0x3, 0x69, 0x50, 0x70, 0x4b, 0x74, 0x26, 0x2, 
-	0xd2, 0x89, 0xe2, 0x9e, 0xd5, 0x67, 0x66, 0xe2, 0x98, 0x11, 
-	0x1d, 0x11, 0xcc, 0x74, 0x59, 0xe8, 0x68, 0xc, 0xa2, 0xdd, 
-	0x9, 0xd3, 0x36, 0x85, 0x3f, 0xe1, 0x7a, 0x36, 0x84, 0xfc, 
-	0xf5, 0xeb, 0x64, 0x30, 0x81, 0x2d, 0xe0, 0x66, 0x6b, 0x4f, 
-	0xcd, 0xa, 0xeb, 0x40, 0xaf, 0xaf, 0xe, 0x97, 0x7, 0x1, 
-	0xe, 0xd, 0xee, 0x44, 0x9f, 0xe7, 0xb3, 0x57, 0x5e, 0x79, 
-	0xe5, 0x6d, 0x30, 0x9d, 0x7b, 00, 0xc4, 0x58, 0x98, 0x85, 
-	0x69, 0xe1, 00, 0x8e, 0x74, 0xdd, 0xe8, 0xc3, 0xa7, 0xa3, 
-	0xa2, 0x3b, 0xe1, 0x97, 0x22, 0x6d, 0x9a, 0xe5, 0xad, 00, 
-	0xf8, 0xdf, 0x30, 0x68, 0xb3, 0x5, 0xeb, 0xd6, 0xf5, 0x2f, 
-	0x9b, 0x70, 0x2d, 0x76, 0x49, 0x49, 0x89, 0x17, 0x5a, 0xc2, 
-	0xa0, 0xc9, 0x89, 0x2e, 0x48, 0xb8, 0x62, 0x5c, 0xba, 0x1f, 
-	0x82, 0x3, 0xe4, 0x17, 0xf9, 0x6, 0xeb, 0xc8, 0xe0, 0x51, 
-	0x57, 0x29, 0xfe, 0xb3, 0xca, 0x18, 0x95, 0x4b, 0x3f, 0x87, 
-	0x4a, 0x58, 0x9d, 0xa8, 0xa3, 0x62, 0x71, 0x94, 0xf6, 0xd9, 
-	0xcf, 0xa6, 0x5c, 0x90, 0xe4, 0xc4, 0x52, 0x7d, 0x81, 0x7f, 
-	0x3c, 0x9d, 0x94, 0x73, 0xde, 0x24, 0xa3, 0xaa, 0x52, 0x19, 
-	0xd8, 0xf, 0x4e, 0xd3, 0x9e, 0xf1, 0xa1, 0x28, 0xf8, 0x23, 
-	0x8, 0xfd, 00, 0x4e, 0xf9, 0xb3, 0x82, 0x5b, 0xe4, 0x51, 
-	0x27, 0x10, 0xc1, 0x3f, 0xe2, 00, 0x78, 0x48, 0x84, 0xf6, 
-	0xbe, 0x11, 0xaf, 0x51, 0x7b, 0xb3, 0xdb, 0xc8, 0xee, 0xb1, 
-	0x56, 0x86, 0xf0, 0x89, 0x1f, 0xa, 0x3b, 0x3f, 0x5c, 0xb0, 
-	0xa5, 0x31, 0x47, 0xc, 0xfa, 0x9d, 0xf, 0xc, 0x88, 0x30, 
-	0x18, 0xd, 0x9, 0xdc, 0x92, 00, 0x12, 0xe, 0x49, 0xfe, 
-	0xe7, 0x4c, 0x8b, 0x8e, 0x85, 0x24, 0xb0, 0xa3, 0xc0, 0xac, 
-	0x44, 0x30, 0xea, 0xeb, 0x68, 0x9d, 0x87, 0xd6, 0xfc, 0xe2, 
-	0xa5, 0x50, 0x84, 0x4c, 0xf5, 0x6d, 0x32, 0x57, 0x1c, 0xc1, 
-	0xcd, 0x96, 0x15, 0x3, 0x26, 0x3c, 0x53, 0x9c, 0x3, 0x68, 
-	0x67, 0x34, 0xb, 0xa8, 0x29, 0xd0, 0xdf, 0x76, 0xe6, 0xe6, 
-	0xe6, 0x7e, 0x1e, 0x26, 0xb8, 0x3, 0xa6, 0xdc, 0x29, 0x2c, 
-	0xee, 0x5f, 0x82, 0x34, 0x62, 0x43, 0x1, 0x1c, 0x53, 0x29, 
-	0x53, 0x60, 0x15, 0x18, 0x58, 0xd4, 0x52, 0x8a, 0xfe, 0xe1, 
-	0x1, 0x14, 0x82, 0xe0, 0x6e, 0xa7, 0x7b, 0xe6, 0x99, 0x67, 
-	0x5e, 0x85, 0x6, 0xdf, 0x82, 0xdb, 0x3d, 0xd0, 0x38, 0x26, 
-	0xcc, 0x4c, 0x2e, 0x98, 0xd0, 0x9b, 0x38, 0x74, 0x61, 0x2f, 
-	0xfd, 0x8b, 0x88, 0x3, 0x4, 0x16, 0x1, 0x8e, 0xf1, 0x12, 
-	0x55, 0x9e, 0x91, 0x69, 0xf6, 0xfa, 0x8f, 0xcd, 0xe2, 0x8e, 
-	0xae, 0x2c, 0xcb, 0xa9, 0x3c, 0x83, 0x25, 0x8a, 0x46, 0x57, 
-	0x3f, 0xe6, 0x82, 0x15, 0xfe, 0x1a, 0xe7, 0xfb, 0xef, 0xbf, 
-	0xaf, 0xb7, 0xb2, 0x62, 0x51, 0x8d, 0x42, 0x57, 0xaa, 0xdf, 
-	0xab, 0xf, 0xce, 0x9f, 0xa7, 0xb8, 0x19, 0x84, 0x26, 0xb9, 
-	0x17, 0xbb, 0xbc, 0xb0, 0xae, 0x56, 0x3f, 0xa7, 0x1c, 0x41, 
-	0xb3, 0x9a, 0x68, 0xd0, 0xbd, 0x56, 0xed, 0x4d, 0xcd, 0x4d, 
-	0x99, 0x13, 0xf9, 0x13, 0x99, 0xec, 0x97, 0xe8, 0x10, 0x2f, 
-	0x30, 0xb8, 0x16, 0x3, 0xb, 0xe1, 0x1, 0xc8, 0x23, 0xf7, 
-	0x36, 0x88, 0x6, 0xb7, 0x82, 0x9c, 0x38, 0xd2, 0xf2, 0x6c, 
-	0x5, 0xdc, 0x10, 0x93, 0xf, 0x44, 0x8b, 0x8, 0xdc, 0x81, 
-	0xb7, 0x2c, 0x1, 0x98, 0x1a, 0x2c, 0x84, 0x38, 0x2, 0x9b, 
-	0xad, 0x10, 0x5d, 0x34, 0x16, 0xac, 0x7c, 0x6, 0x1f, 0xe1, 
-	0xe4, 0x74, 0xd3, 0x70, 0x89, 0x4c, 0xb4, 0x3a, 0x32, 0x57, 
-	0xcc, 0x71, 0x9a, 0x4f, 0xec, 0x67, 0xa3, 0x2f, 0x33, 0xe4, 
-	0xef, 0xe0, 0xc0, 0xd, 0xcc, 0xf7, 0x28, 0x34, 0x8, 0x37, 
-	0xa0, 0xf2, 0x62, 0x39, 0x8, 0x7, 0x21, 0xb8, 0x6, 0x9a, 
-	0x78, 0x12, 0x4c, 0xb7, 0x24, 0xb4, 0xd8, 0x4e, 0xc, 0xf6, 
-	0xa4, 0x63, 0x5e, 0x72, 0x15, 0xcc, 0xf7, 0xf1, 0x30, 0xf7, 
-	0x6a, 0xb1, 0x75, 0xef, 0x2f, 0x98, 0x9f, 0xe4, 0xc0, 0x1b, 
-	0xb7, 0x21, 0x11, 0xe0, 0x1a, 0xe4, 0x98, 0x37, 0x7d, 0xd, 
-	0x71, 0xf2, 0xc1, 0x2, 0x4e, 0xbd, 0xa1, 0x1b, 0x3f, 0xe4, 
-	0x62, 0xc, 0x97, 0x1d, 0xff, 0xd0, 0xef, 0x91, 0x7f, 0xd0, 
-	0x9c, 0xb6, 0x46, 0x8c, 0x5e, 0xbb, 0xfc, 0xd, 0x3a, 0xf7, 
-	0x56, 0xe7, 0x26, 0x8f, 0x1a, 0xd2, 0x77, 0x13, 0xd0, 0x3f, 
-	0xfe, 0xf1, 0x8f, 0xf5, 0xdc, 0x39, 0x4f, 0x2b, 0xe5, 0xa, 
-	0x35, 0xcc, 0x72, 0x70, 0xef, 0x41, 0xbf, 0xf7, 0xc7, 0x2, 
-	0xd4, 0xdc, 0x55, 0xa6, 0x89, 0xf9, 0xe4, 0x4d, 0x51, 0xa6, 
-	0x7f, 0x5f, 0x37, 0xef, 0x51, 0x9e, 0x68, 0x9e, 0xb3, 0xbb, 
-	0x27, 00, 0xa7, 0x22, 0xa1, 0xec, 0x11, 0xe0, 0x56, 0x79, 
-	0xf4, 0x25, 0x12, 0xd9, 0x7f, 0x5a, 0x14, 0x48, 0x3f, 0xa, 
-	0xb, 0x98, 0xee, 0xc2, 0x9b, 0xd4, 0xde, 0xd2, 0xff, 0xa6, 
-	0x52, 0x14, 0x2d, 0x1e, 00, 0x78, 0x64, 0xa9, 0x9f, 0x8e, 
-	0x3d, 0x60, 0xcb, 0xe7, 0xe9, 0x47, 0x43, 0xb, 0xf9, 0xc1, 
-	0x4d, 0x50, 0xd3, 0x71, 0x88, 0x9f, 0x5, 0x8d, 0xc3, 0x6a, 
-	0xb1, 0x4c, 0xac, 0x12, 0x7b, 0x1f, 0xeb, 0x7b, 0x63, 0x31, 
-	0x80, 0x85, 0x5b, 0xc3, 0x23, 0x32, 0x94, 0x24, 0x66, 0x38, 
-	0x7d, 0x32, 0x9c, 0xe6, 0x38, 0x9e, 0x99, 0x3c, 0xd0, 0xd0, 
-	0xbf, 0xb1, 0x22, 0xa2, 0xc, 0xf8, 0x3e, 0x76, 0x8d, 0xb9, 
-	0x60, 0x6, 0x6e, 0xc1, 0x48, 0xa6, 0x7, 0x16, 0x46, 0x22, 
-	0x5a, 0x52, 0xec, 0xeb, 0xb7, 0xb1, 0xf1, 0xe0, 0x2f, 0x85, 
-	0xb6, 0xc3, 0x14, 0x3f, 0x9, 0xad, 0xfc, 0xdc, 0xd3, 0x4f, 
-	0x3f, 0x5d, 0x88, 0xc4, 0xd9, 0xc2, 0xc6, 0xc1, 0x71, 0x58, 
-	0x56, 0x76, 0x93, 0x8d, 0x82, 0x5, 0x30, 0xea, 0xd3, 0x9f, 
-	0xfe, 0xf4, 0xd, 0xe8, 0xd3, 0xaf, 0xc1, 0xea, 0xb8, 0x33, 
-	0xfe, 0x74, 0x11, 0xde, 0xbd, 0x44, 0x61, 0x38, 0xc0, 0x3a, 
-	0x41, 0xa3, 0xea, 0x3a, 0xbe, 0x63, 0xc7, 0xbe, 0x4f, 0xda, 
-	0x8c, 0xcb, 0x10, 0x4d, 0x6b, 0x2f, 0x46, 0xbf, 0xf2, 0xd9, 
-	0xe7, 0x4e, 0x3, 0x32, 0xcc, 0xfb, 0x72, 0x9b, 0x83, 0x68, 
-	0x90, 0x3d, 0xbd, 0xf6, 0x1c, 0xe3, 0x20, 0x72, 0x3b, 0xe0, 
-	0xff, 0xdb, 0xca, 0x15, 0xea, 0x26, 0x6a, 0x6b, 0x3f, 0x79, 
-	0xb1, 0xa4, 0xd4, 0x5c, 0xbe, 0x5c, 0x2e, 0xb5, 0x4f, 0xc5, 
-	0x1, 0xab, 0x4e, 0x6f, 0x77, 0xa5, 0x55, 0x41, 0xab, 0x8f, 
-	0x8e, 0xdd, 0x3b, 0x8e, 0xa6, 0x73, 0xf4, 0x9b, 0xb2, 0x32, 
-	0xdc, 0x6, 0x9d, 0x53, 0x74, 0x38, 0x89, 0xb7, 0x7, 0x3f, 
-	0x5e, 0xf9, 0x69, 0x58, 0x86, 0x55, 0xc8, 0x54, 0xac, 0x42, 
-	0xf6, 0x15, 0x38, 0x5, 0xc6, 0x1, 0x35, 0xf6, 0xb3, 0x69, 
-	0x8a, 0xf, 0xc9, 0xc, 0x47, 0xdc, 0x7e, 0x34, 0x60, 0xe3, 
-	0x48, 0xbf, 0xa7, 0x67, 0xb8, 0xb0, 0x68, 0x6d, 0xb6, 0x32, 
-	0x4, 0x37, 0x5b, 0x1e, 0x82, 0x3b, 0x16, 0x3f, 0xc7, 0xfa, 
-	0x4d, 0x2c, 0x1c, 0x98, 0x85, 0xf9, 0x6d, 0xb6, 0x44, 0xc3, 
-	0x22, 0xf9, 0x26, 0x2, 0x5c, 0x1c, 0x5b, 0x50, 0x3a, 0x98, 
-	0xd4, 0x7a, 0xda, 0xb, 0xe6, 0x70, 0x40, 00, 0x22, 0xc9, 
-	0x84, 0xa3, 0xe8, 0x68, 0x41, 0xed, 0x60, 0x6c, 0x36, 0xd2, 
-	0xda, 0xe, 0xd, 0x5e, 0x80, 0x3e, 0x38, 0x2e, 0x3b, 0x9a, 
-	0xc1, 0xf8, 0x43, 00, 0xf6, 0x96, 0x8d, 0x1b, 0x37, 0xfe, 
-	0x1, 0xc2, 0x56, 0x89, 0x74, 0xc9, 0x5c, 0x5f, 0x2b, 0x63, 
-	0x11, 0x38, 0xe6, 0xc7, 0x6, 0x6, 0x42, 0x50, 0x8a, 0x7e, 
-	0x63, 0xc, 0x1a, 0x84, 0xf1, 0xe8, 0x53, 0xe9, 0xa9, 0x14, 
-	0x3e, 0xbb, 0x44, 0x43, 0xe7, 00, 0x78, 0x4f, 0x60, 0xbb, 
-	0xb1, 0xdc, 0x77, 0xf3, 0x1f, 0x9e, 0x7e, 0xfa, 0xbd, 0xc2, 
-	0x53, 0x4d, 0xfb, 0x66, 0xa4, 0xa6, 0x25, 0xe2, 0x30, 0x85, 
-	0xb1, 0xdc, 0x38, 0xd2, 0x89, 0x3a, 0xe7, 0xfa, 0xf2, 0xa1, 
-	0xf4, 0xc1, 0x29, 0x1f, 0x5c, 0xe8, 0x42, 00, 0x5, 0xd3, 
-	0x52, 0xc, 0xb6, 0x2d, 0xce, 0xcc, 0x50, 0xe3, 0xb1, 0x4d, 
-	0x15, 0x8, 0x55, 0xde, 0xeb, 0xaf, 0x57, 0x26, 0x7e, 0xb3, 
-	0x9b, 0xe6, 0xb9, 0x95, 0x38, 0x2f, 0xf, 0x59, 0x30, 0xd1, 
-	0xf8, 0x9b, 00, 0x32, 0x4e, 0x17, 0x3e, 0xd, 0x66, 0x1a, 
-	0xab, 0x74, 0x42, 0xd6, 0xb0, 0xdc, 0x3b, 0x93, 0x4f, 0xb, 
-	0x12, 0xe5, 0x83, 0xf8, 0x78, 0xe3, 0xa1, 0x40, 0xf6, 0x20, 
-	0xbe, 0xc, 0x98, 0x69, 0x40, 0xe3, 0x9a, 0xf2, 0x46, 0xb9, 
-	0x33, 0x1f, 0x9, 0xda, 0x10, 0x82, 0x7b, 0x43, 0xa2, 0x61, 
-	0x3, 0xcf, 0x92, 0x3a, 0x81, 0x6d, 0x5, 0x37, 0xcd, 0xf0, 
-	0x31, 0x68, 0xe5, 0xee, 0xe4, 0xbc, 0x9e, 0x25, 0x5e, 0xc4, 
-	0x41, 0xab, 0xf9, 0x43, 0x70, 0xd3, 0x1c, 0xa7, 0x13, 0x73, 
-	0x1c, 0x66, 0xff, 0x69, 0xe, 0x47, 0x9c, 0x3a, 0x5a, 0x20, 
-	0x54, 0x20, 0x1a, 0x21, 0x9c, 0x6d, 0x63, 0x7e, 0x12, 0xe6, 
-	0xdb, 0xcf, 0xfe, 0x1b, 0x84, 0x64, 0xb8, 0x5d, 0x54, 0x5a, 
-	0x4e, 0xda, 0x6e, 0x2, 0x6a, 0xc9, 0xc1, 0x9a, 0x67, 0xa0, 
-	0x45, 0x7d, 0xfc, 0xf1, 0xc7, 0x5f, 0xf3, 0x47, 0xb8, 0xa4, 
-	0xc1, 0x85, 0x53, 0x61, 0x7c, 0x1c, 0xfd, 0xa2, 0x3c, 0x1d, 
-	0xed, 0xca, 0x9e, 0x98, 0xa4, 0xba, 0xf6, 0xed, 0x53, 0xd8, 
-	0x62, 0xa9, 0xb6, 0x6c, 0xda, 0xe4, 0xde, 0xbf, 0x7b, 0xf7, 
-	0xb6, 0x67, 0x9e, 0x7f, 0xfe, 0x43, 0xbc, 0xd6, 0xb9, 0xa5, 
-	0xa2, 0xaa, 0xe1, 0x7, 0xab, 0x2e, 0xd7, 0xfd, 0xb9, 0x24, 
-	0x68, 0xcb, 0xaf, 0x2e, 0x59, 0x8c, 0xdd, 0x61, 0xbd, 0xea, 
-	0xad, 0xe2, 0x92, 0x30, 0xa9, 0xe, 0xed, 0xf6, 0x4f, 0xd7, 
-	0xac, 0xd6, 0x7, 0x23, 0xea, 0xd8, 0xb0, 0x2, 0xa1, 0x7a, 
-	0x7d, 0x2e, 0xc4, 0xeb, 0x90, 0x2f, 0x1b, 0x4c, 0x73, 0xce, 
-	0xc5, 0xf7, 0xd3, 0xd4, 0xd4, 0xd6, 0xb4, 0x20, 0x5, 0xd4, 
-	0x94, 0x53, 0x9, 0x87, 0x48, 0x26, 0xec, 0x2d, 0x2c, 0x69, 
-	0x76, 0x62, 0x20, 0xf6, 0x3a, 0xc, 0x24, 0x3e, 0xb, 0x65, 
-	0xc2, 0x5, 0x60, 0x74, 0xb4, 0x7e, 0x9, 0x70, 0x1, 0xbb, 
-	0x17, 0x69, 0xd3, 0xc2, 0xe, 0xc8, 0x1a, 0x9e, 0xd, 0x89, 
-	0x86, 0xad, 0xb9, 0x99, 0x21, 0x72, 0xa0, 0x13, 0x60, 0x8b, 
-	0x49, 0x1e, 0x83, 0x11, 0xf2, 0x7, 0x30, 0x1a, 0xb8, 0x8, 
-	0x7d, 0x97, 0x61, 0x37, 0x1e, 0xf2, 0x2d, 0x4, 0x35, 0x19, 
-	0x49, 0xc7, 0x16, 0x19, 0xda, 0x91, 0x8c, 0xe6, 0x2f, 0x82, 
-	0x70, 0xa5, 0xd3, 0x90, 0x3e, 0x72, 0xb0, 0x48, 0x34, 0xb3, 
-	0x30, 0x88, 0x62, 0x43, 0xda, 0x2b, 0x30, 0x92, 0x5e, 0xf, 
-	0x53, 0xbd, 0x14, 0xf1, 0x75, 0x8b, 0xe9, 0xf7, 0xf9, 0xba, 
-	00, 0x5c, 0x7c, 0x79, 0x2e, 0x40, 0xe7, 0x7d, 0x3, 0x1a, 
-	0xbc, 0xc, 0x1a, 0x3c, 0xfa, 0x92, 0x6, 0x27, 0xcb, 0x6, 
-	0x52, 0xd7, 0xfe, 0xfd, 0xa, 0xfd, 0x20, 0xd5, 0xbe, 0xe1, 
-	0x5d, 0xd5, 0xf6, 0xd6, 0x5b, 0xaa, 0xb7, 0xe8, 0x84, 0xea, 
-	0xda, 0xbb, 0x47, 0xb5, 0x1c, 0xca, 0x37, 0xb3, 0xaa, 0x2a, 
-	0x8d, 0xc9, 0x6e, 0x77, 0x3c, 0xe6, 0xb6, 0x1b, 0xf0, 0xb, 
-	0x99, 0xb9, 0x1b, 0xcb, 0xcb, 0xf, 0x4f, 0x4b, 0x4d, 0x6d, 
-	0x8e, 0x71, 0xd8, 0xdb, 0x12, 0x9d, 0xce, 0x1c, 0xa4, 0x66, 
-	0xcb, 0xc4, 0x42, 0x94, 0x5, 0x58, 0x6c, 0xf2, 0xc1, 0x20, 
-	0x67, 0xb4, 0xf, 0xcc, 0xd5, 0x77, 0x67, 0x2d, 0x6, 0xcc, 
-	0xbe, 0x8d, 0x9f, 0xf8, 0x49, 0x83, 0xc9, 0xce, 0x33, 0xd5, 
-	0xcc, 0xc, 0x4c, 0x91, 0xe1, 0x17, 0x3f, 0xcd, 0xa9, 0xd3, 
-	0xb4, 0x6, 0xf, 0xf5, 0x1e, 0x41, 0xcc, 0x19, 0x10, 0x68, 
-	0x58, 0x1e, 0x45, 0xa5, 0xb7, 0xb5, 0x52, 0x83, 0x53, 0xf4, 
-	0xad, 0x26, 0x39, 0xaf, 0x7d, 0x70, 0x8, 0x95, 0x4a, 0xf8, 
-	0x7b, 0x34, 0xef, 0x31, 0xa6, 0xc3, 0x63, 0x83, 0x5c, 0xb0, 
-	0x1c, 0xf3, 0x11, 0x53, 00, 0x2d, 0xbe, 0xc8, 0xd9, 0xb0, 
-	0xb4, 0xf7, 0xb0, 0xc1, 0xe7, 0x2f, 0x32, 0x81, 0x2d, 0xe0, 
-	0xd6, 0x23, 0xe4, 00, 0x4b, 0x34, 0xfa, 0x28, 0x9f, 0xc2, 
-	0x62, 0x12, 0x9a, 0xe7, 0xc3, 0x26, 0x82, 0x9b, 0x8e, 0xe0, 
-	0x16, 0x80, 0xfb, 0xb5, 0x36, 0x6, 0x37, 0x27, 0xeb, 0xdf, 
-	0x8a, 0x1a, 0x76, 0xe2, 0x41, 0x2f, 0xb2, 0x4f, 0x5, 0xd, 
-	0x4e, 0x5e, 0x7c, 0xf7, 0xfe, 0xfb, 0xef, 0xf7, 0x3c, 0xf9, 
-	0xe4, 0x93, 0x6f, 0x20, 0x2c, 0x8c, 0x65, 0x6c, 0x86, 0x5, 
-	0xd8, 0xec, 0xb, 0x9, 0xa8, 0xa5, 0x81, 0x63, 0x1c, 0xf2, 
-	0xc1, 0x80, 0x6, 0x7f, 0x1d, 0xe5, 0x66, 0x4b, 0xbb, 0x6, 
-	0xa3, 0xe7, 0x61, 0x7f, 0x5d, 0x94, 0x2f, 0x8c, 0x34, 0x91, 
-	0x5f, 0x24, 0xf1, 0x25, 0x6c, 0xbd, 0xd6, 0x11, 0xfc, 0xff, 
-	0x82, 0x85, 0x52, 0x4, 0x54, 0x7c, 0x6b, 0xdc, 0xb3, 0x9, 
-	0xf7, 0xf0, 0x70, 0x7f, 0x94, 0xad, 0xe5, 0xe5, 0x97, 0xb4, 
-	0x2f, 0x69, 0xb9, 0xfc, 0x6b, 0xc4, 0xe3, 0xba, 0xbb, 0x34, 
-	0x1f, 0x53, 0x62, 0xa2, 0xd3, 0x3f, 0x37, 0x6f, 0xee, 0xfd, 
-	0x7c, 0x6e, 0x18, 0xab, 0x6b, 0xa2, 0xc, 0xa3, 0xf3, 0x4f, 
-	0x87, 0x8f, 0xfc, 0xf6, 0xdb, 0xcb, 0x96, 0x5e, 0xc3, 0x7b, 
-	0x5c, 0x74, 0x42, 0xb7, 0x7, 0xd, 0x44, 0x63, 0x57, 0xb7, 
-	0xda, 0x1e, 0x62, 0x8d, 0x39, 0xe3, 0x59, 0x89, 0x1b, 0x4f, 
-	0xae, 0xcd, 0xc9, 0xd1, 0x7, 0x28, 0xce, 0xb3, 0xe, 0xec, 
-	0x8e, 0x1d, 0xa3, 0xbc, 0xcb, 0xfa, 0xf7, 0xb3, 0xad, 0xef, 
-	0x49, 0xd8, 0x3f, 0xf8, 0x65, 0x62, 0x85, 0x22, 0x8f, 0x98, 
-	0xb2, 0x49, 0x7f, 0x9b, 0xca, 0x46, 0xfa, 0xdb, 0xe4, 0x17, 
-	0x79, 0x3c, 0x1c, 0xbe, 0x1, 0x27, 0x4e, 0x8c, 0xb, 0xdc, 
-	0x8a, 0x46, 0xe3, 0x79, 0xa4, 0x49, 0x8b, 0x51, 0xb4, 0x37, 
-	0xad, 0xc6, 0xc0, 0x54, 0x18, 0xd2, 0x8e, 0x58, 0x7b, 0x9f, 
-	0x2d, 0xb8, 0xc9, 0x3, 0xa, 0x35, 0xd3, 0xa1, 0x73, 0x42, 
-	0x5b, 0x5f, 0xcb, 0xd5, 0x5c, 0x18, 0xc5, 0xc6, 0xe5, 0xf0, 
-	0x88, 0x60, 0x26, 0x9, 0xb0, 0xc5, 0x1c, 0xe7, 0xdc, 0x23, 
-	0x47, 0xc7, 0x61, 0x19, 0x8, 0xb8, 0x86, 0x97, 0x41, 0x88, 
-	0xb7, 0xb8, 0x3c, 0x11, 0xd6, 0x80, 0x3, 0x79, 0x7e, 0xef, 
-	0xde, 0x7b, 0xef, 0xf5, 0x3c, 0xf5, 0xd4, 0x53, 0x6f, 0x21, 
-	0x1a, 0xf3, 0x11, 0x60, 0x33, 0xcc, 0x82, 0x91, 0xe1, 0x4, 
-	0x38, 0xef, 0xf3, 0xdb, 0x79, 0xcf, 0x87, 0x2a, 0x4, 0x40, 
-	0xc6, 0x13, 0x4f, 0x3c, 0xf1, 0x3a, 0x7d, 0xb8, 0xd5, 0xe7, 
-	0xa, 0xe0, 0x14, 0x26, 0x1, 0x2d, 0xf9, 0x64, 0xbd, 0x96, 
-	0xfb, 0xe2, 0xb3, 0x50, 0x43, 0x21, 0xab, 0xb0, 0x52, 0x50, 
-	0x83, 0xaf, 0x87, 0x92, 0x46, 0x70, 0x1c, 0x2f, 0x6, 0xc9, 
-	0x4e, 0x3d, 0xfd, 0x54, 0xf0, 0x6d, 0xdd, 0x87, 0xc6, 0xf1, 
-	0x46, 0x8a, 0x3f, 0x52, 0x3f, 0x3, 0xfb, 00, 0x3a, 0x60, 
-	0x95, 0xf1, 0x84, 0x14, 0xa1, 0xab, 0x27, 0x4e, 0xfc, 0x12, 
-	0xc3, 0x8d, 0x7d, 0x7d, 0x77, 0xb5, 0xbb, 0xfa, 0xd6, 0x61, 
-	0xe8, 0xaa, 0x2f, 0x3e, 0xca, 0x71, 0x3b, 0xef, 0x7d, 0x17, 
-	0x83, 0x5f, 0x38, 0xeb, 0xcc, 0x7c, 0x64, 0xcb, 0x16, 0x23, 
-	0x23, 0x3e, 0x41, 0x9f, 0x6b, 0x16, 0xb, 0x2d, 0xc8, 0x11, 
-	0x70, 0xae, 0x6a, 0xeb, 0x5, 0xf0, 0x98, 0xe6, 0xf2, 0xac, 
-	0x71, 0x6a, 0x3c, 0x4c, 0xff, 0xeb, 0x71, 0xf6, 0x99, 0x10, 
-	0xce, 0xaa, 0x82, 0xa6, 0xc6, 0xf2, 0x52, 0xfc, 0x60, 0xc1, 
-	0x50, 0x9, 0xf2, 0x66, 0xa3, 0xf6, 0xe6, 0x5e, 0x1, 0x6a, 
-	0x6e, 0x3a, 0xd1, 0xdc, 0xc2, 0x27, 0xf2, 0x9a, 0xe1, 0x48, 
-	0x89, 0x38, 0xc1, 0x80, 0xb3, 0x23, 0x37, 0x37, 0x77, 0x25, 
-	0x66, 0x65, 0xde, 0xc1, 0xfb, 0x4, 0x37, 0x41, 0x4e, 0x66, 
-	0x50, 0x83, 0x6b, 0xa5, 0x1, 0x3f, 0x62, 0x1a, 0x16, 0xb8, 
-	0xf1, 0x11, 0xfc, 0xa, 0x3a, 0x66, 0x2c, 0x23, 0xe5, 0x5a, 
-	0x73, 0xa3, 0xb0, 0x9f, 0x85, 0x16, 0xe4, 0xa8, 0xf2, 0xb0, 
-	0x48, 0x4, 0x52, 0x80, 0x2d, 0x3e, 0x4d, 0x72, 0x80, 0xdb, 
-	0x9b, 0x93, 0x93, 0xc3, 0x51, 0xcb, 0xc8, 0xb9, 0x38, 0x48, 
-	0x69, 0x98, 0x27, 0x9d, 00, 0x1c, 0xe1, 0x1f, 0xf8, 0x1, 
-	0x4e, 0x66, 0x93, 0xf8, 0x9d, 0x4, 0xb4, 0x98, 0x4b, 0x4, 
-	0x38, 0x89, 0x23, 0x9b, 0xc, 0xf3, 0x39, 0x2b, 0xdd, 0x6, 
-	0xd3, 0x3e, 0xd, 0xd3, 0x1c, 0x19, 0x38, 0x5a, 0xa7, 0x14, 
-	0x56, 0x4c, 0x22, 0x5a, 0xe3, 0x5, 0xd8, 0x11, 0x75, 0xd6, 
-	0x1a, 0x5c, 0xf8, 0x42, 0xdf, 0xa, 0x66, 0xb9, 0x2f, 0x7c, 
-	0x62, 0x39, 0xe4, 0xb9, 0x84, 0xe9, 0x87, 0x23, 0x11, 0x48, 
-	0x11, 0x56, 0xc6, 0x63, 0xd8, 0x7a, 0x9f, 0x61, 0x3a, 0xeb, 
-	0x7d, 0x79, 0x1e, 0x2e, 0x5d, 0xde, 0x6f, 0x7e, 0xee, 0x59, 
-	0xd5, 0x87, 0xa3, 0x88, 0xac, 0xb4, 0xbb, 0xa6, 0x56, 0x95, 
-	0x61, 0xa0, 0xeb, 0x29, 0xff, 0x6e, 0xad, 0x3a, 0x34, 0xd8, 
-	0x32, 0x35, 0xc5, 0xb9, 0xe7, 0xb1, 0x71, 0xf1, 0x6a, 0xed, 
-	0x84, 0xf1, 0x81, 0x57, 0x6e, 0xcf, 0x9b, 0xfc, 0x1b, 0xfc, 
-	0x3c, 0x74, 0xf9, 0x57, 0xde, 0xdf, 0x74, 0xe7, 0x6f, 0xae, 
-	0xbe, 0xea, 0x36, 0xb4, 0xa2, 0xba, 0xee, 0x61, 0x5a, 0x1b, 
-	0x3f, 0xc6, 0x59, 0xe1, 0xa4, 0xa5, 0xe3, 0x32, 0xd5, 0x22, 
-	0x80, 0xf6, 0xb9, 0x82, 0xa3, 0x1a, 0xc8, 0x38, 0xfe, 0x16, 
-	0xa7, 0xad, 0x38, 0x55, 0xba, 0x65, 0x19, 0xaa, 0x24, 0x68, 
-	0xe6, 0xe6, 0x2a, 0x33, 0x82, 0x3, 0x17, 0xf8, 0x1e, 0x47, 
-	0xc9, 0xd1, 0xdd, 0xe2, 0x1, 0x14, 0xdc, 0xb6, 0x1a, 0xd0, 
-	0xde, 0x2, 0x72, 0xf2, 0x5b, 0x88, 0x3c, 0x8a, 0x94, 0x30, 
-	0x35, 0x1b, 0x8b, 0xbe, 0xfd, 0x5d, 00, 0xf7, 0x87, 0x78, 
-	0x97, 0xbb, 0x2d, 0xd9, 0xc5, 0xa5, 0xbc, 0x51, 0x7b, 0xd3, 
-	0x31, 0x51, 0x2a, 0x10, 0x91, 0x3b, 0x4, 0xcf, 0x4c, 0xc3, 
-	0x2, 0xb7, 0x3f, 0x59, 0x66, 0x48, 0x27, 0xa3, 0xe4, 0x51, 
-	0x58, 0x80, 0x30, 0x1d, 0x1f, 0x3c, 0x9, 0xad, 0xd0, 0x99, 
-	0x73, 0xe, 0x13, 0x83, 0xc2, 0x2a, 0x8e, 0x4c, 0x93, 0xbe, 
-	0x36, 0x46, 0x2e, 0xb5, 0xd6, 0x46, 0x1e, 0xe7, 0x4, 0xd8, 
-	0x92, 0x27, 0xa7, 0x51, 0x30, 0x90, 0xe2, 0x40, 0xbe, 0x8f, 
-	0x62, 0xc3, 0xbf, 0xf9, 0xec, 0xb3, 0xcf, 0x6e, 0xf0, 0x17, 
-	0x95, 0xf9, 0x8a, 0x23, 0xc8, 0x19, 0x66, 0x5, 0xd0, 0xef, 
-	0xc2, 0x6, 0x91, 0x74, 0x4c, 0xcb, 0xdd, 0xd, 0x13, 0x3f, 
-	0x17, 0x23, 0xf1, 0xf1, 0x10, 0x7e, 0xf6, 0xbd, 0x4d, 0xec, 
-	0x63, 0x6e, 0xc2, 0xb1, 0xca, 0x69, 0xf8, 0x31, 0x5, 0x7, 
-	0xd3, 0x8e, 0x94, 0xa4, 0x5c, 0x2, 0x5e, 0x5e, 0x93, 0xe4, 
-	0x5a, 0x7c, 0xde, 0x67, 0x58, 0x7c, 0x86, 0x49, 0x12, 0x5f, 
-	0x5f, 0x84, 0xf8, 0x27, 0x20, 0xa5, 0x4f, 0x27, 0x2, 0xcb, 
-	0xa8, 0x14, 0x54, 0xb9, 0x96, 0x78, 0xbc, 0x27, 0x4e, 0xde, 
-	0x9, 0x91, 0xac, 0xf2, 0xf0, 0x67, 0x90, 0x79, 0xb6, 0x1a, 
-	0x8e, 0xa0, 0x26, 0x61, 0x3e, 0x47, 0x3d, 0xb2, 0x65, 0xab, 
-	0xda, 0x8d, 0x7b, 0xcd, 0x18, 0x37, 0xb1, 0x12, 0x1, 0x4e, 
-	0xfa, 0xe5, 0xae, 0xdd, 0x7a, 0xb0, 0xeb, 0xfd, 0xf2, 0x6c, 
-	0xf5, 0x65, 0xfc, 0x50, 00, 0x97, 0x9e, 0x42, 0xc0, 0xd2, 
-	0xed, 0x76, 0x47, 0xfc, 0x6d, 0x79, 0x79, 0xa3, 0x2a, 0x3b, 
-	0x3a, 0xff, 0x19, 0xc6, 0xa9, 0x81, 0xd3, 0x53, 0xee, 0xc6, 
-	0xe, 0xa4, 0x2b, 0x24, 0x8d, 0xcb, 0xfc, 0x4b, 0x4c, 0xef, 
-	0x99, 0x85, 0x51, 0x6f, 0x50, 0xa8, 0x25, 0xab, 0x5e, 0xfc, 
-	0x72, 0x27, 0xd6, 0x95, 0x2a, 0x1c, 0x79, 0x23, 0xaf, 0x45, 
-	0xe4, 0x43, 0xee, 0x6c, 0x1c, 0x39, 0xc7, 0xc8, 0x76, 0x60, 
-	0x2a, 0x8c, 0xbc, 0xa1, 0xa3, 0x8c, 0xe, 0x7, 0xd4, 0x52, 
-	0x80, 0x9c, 0x9c, 0x1c, 0x1e, 0x5e, 0x91, 0x8d, 0xb5, 0x17, 
-	0x53, 0x6a, 0x6a, 0x6a, 0x78, 0x2c, 0x38, 0x7, 0xa2, 0xa9, 
-	0xc1, 0x89, 0x4f, 0x3a, 0x82, 0xda, 0x3, 0x7e, 0x47, 0x64, 
-	0x9a, 0x47, 0xc, 0x6e, 0x66, 0x80, 0x8c, 0xc4, 0x11, 0xd8, 
-	0x52, 00, 0x27, 0x5a, 0xb7, 0x7, 0xb0, 0x8, 0x41, 0xcf, 
-	0x15, 0xe3, 0x7e, 0xc4, 0x24, 0x82, 0x28, 0x2, 0x4a, 0xa6, 
-	0x89, 0xc3, 0x80, 0x86, 0x97, 0xe6, 0x38, 0xa7, 0xb0, 0x46, 
-	0x8a, 0x98, 0x8f, 0xe4, 0x65, 0x5, 0x6, 0x47, 0xd1, 0x39, 
-	0x18, 0x8, 0x30, 0xfe, 0x1c, 0x95, 0xfa, 0x26, 0x16, 0x46, 
-	0x7c, 0xf, 0x79, 0x4a, 0xeb, 0xc9, 0x6f, 0x27, 0x72, 0x4, 
-	0xe0, 0xea, 0xe3, 0x1f, 0xff, 0xf8, 0x7c, 0xac, 0x6a, 0x7a, 
-	00, 0x73, 0xe5, 0x19, 0xec, 0x92, 0xa0, 0xa5, 0x6f, 0x47, 
-	0x65, 0x77, 0x60, 0x7a, 0x67, 0x14, 0xac, 0x8d, 0x1e, 0x8c, 
-	0x84, 0x36, 0xbf, 0xfc, 0xf2, 0xcb, 0xa3, 0xf1, 0x7b, 0x67, 
-	0x76, 0x3c, 0x3f, 0x63, 0xf1, 0xa5, 0x5c, 0x8c, 0xc8, 0xef, 
-	0x97, 0x6b, 0x1, 0x32, 0xef, 0x31, 0x2c, 0xbe, 0xdc, 0xe7, 
-	0x60, 0x23, 0x16, 0xdd, 0xe1, 0x14, 0x99, 0x36, 0xec, 0x6b, 
-	0xef, 0xe6, 0xcc, 0x2, 0x5e, 0xf5, 0xb5, 0x6, 0xf0, 0x30, 
-	0x20, 0xa4, 0xfb, 0x86, 0xfa, 0xe, 0x6b, 0x91, 0x75, 0x9, 
-	0xe1, 0xc4, 0x61, 0x8c, 0x31, 0x30, 0xd, 0x93, 0xf4, 0x49, 
-	0x36, 0xd4, 0x52, 0xec, 0x57, 0x52, 0x58, 0x59, 0xd5, 0xf4, 
-	0x79, 0xcd, 0x30, 0x7d, 0xbe, 0xcc, 0xfc, 0xe4, 0x19, 0x85, 
-	0x9b, 0xc4, 0x6b, 0x3a, 0x12, 0x7, 0xca, 0x9a, 0x9e, 0x7c, 
-	0x52, 0x87, 0xf9, 0x8f, 0xe7, 0x80, 0x3f, 0x87, 0x7e, 0xf7, 
-	0x7b, 0x43, 0xd8, 0xe1, 0x45, 0xd3, 0xfa, 0x9d, 0xd2, 0x52, 
-	0xfe, 0x70, 0xbd, 0xfa, 0xf8, 0xcc, 0x19, 0x6a, 0x39, 0xa6, 
-	0xae, 0x90, 0x67, 0xdc, 0xb5, 0x39, 0x13, 0xf, 0xd5, 0x77, 
-	0x76, 0x7d, 0xed, 0xd6, 0x97, 0x5e, 0x7e, 0xe1, 0xf7, 0x37, 
-	0x5e, 0xe7, 0x9e, 0x3c, 0x7e, 0xe2, 0xdc, 0xda, 0x8c, 0xcc, 
-	0xd4, 0xbc, 0xd2, 0x12, 0x9d, 0x8f, 0x7, 0x83, 0xab, 0x76, 
-	0x34, 0x28, 0x98, 0xb7, 0xa2, 0xaa, 0x55, 0x38, 0xa, 0x46, 
-	0x79, 0x66, 0xcc, 0x84, 0xa0, 0xc2, 0x5c, 0xc6, 0x8f, 0x65, 
-	0x98, 0x13, 0x26, 0x6a, 0x17, 0x28, 0x54, 0x84, 0x1, 0xca, 
-	0x1d, 0xf6, 0x26, 0x70, 0x83, 0x8b, 0xd6, 0xde, 0xfc, 0x6e, 
-	0xe1, 0x13, 0x79, 0x44, 0x9e, 0x8, 0xf1, 0x3a, 0x12, 0x62, 
-	0x7c, 0xe0, 0x86, 0xd3, 0xb2, 0x77, 00, 0xdc, 0xc7, 0xf0, 
-	0x2e, 0x5b, 0x3f, 0xd1, 0xde, 0x54, 0x20, 0x64, 0x32, 0x33, 
-	0x60, 0xcb, 0xee, 0x6b, 0xdd, 0x11, 0x38, 0x13, 0x45, 0xc, 
-	0x6e, 0x7f, 0x82, 0x2c, 0x3d, 0x1d, 0x33, 0xa5, 0x73, 0x42, 
-	0xb0, 0x47, 0xe3, 0x63, 0xaf, 0x1, 00, 0x79, 0x3d, 0x2c, 
-	0xa2, 0xe0, 0x88, 0x13, 0xe1, 0x65, 0x7f, 0x9b, 0xf3, 0x95, 
-	0x5c, 0x16, 0x8, 0xe6, 0xfa, 0xa4, 0x67, 0x58, 0xa9, 0xf, 
-	0x7c, 0xc9, 0x9a, 0x97, 0xe4, 0x47, 0xc0, 0x70, 0x91, 0xc, 
-	0x98, 0xec, 0xe5, 0xa, 0x27, 0xac, 0x40, 0xbb, 0xea, 0x5f, 
-	0xff, 0xf5, 0x5f, 0xdb, 0x1f, 0x7d, 0xf4, 0xd1, 0x7f, 0xf7, 
-	0xa7, 0x40, 0xb3, 0x89, 0x8c, 0x26, 0xd3, 0xbd, 0x57, 0x5e, 
-	0x79, 0x65, 0x2, 0xca, 0x75, 0x17, 0x66, 0xff, 0xb2, 0x30, 
-	0xc7, 0x5d, 0x81, 0x59, 0x82, 0x62, 0x98, 0x6e, 0xe, 0x80, 
-	0x3a, 0x6, 0x8b, 0x32, 0x62, 0x50, 0xf6, 0x64, 0xcc, 0xb9, 
-	0x4e, 0x7, 0xd0, 0xd, 0x9c, 0xd0, 0x9a, 0x82, 0x45, 0x3d, 
-	0x76, 0xce, 0x71, 0x86, 0x22, 0x29, 0xf, 0x7d, 0x1, 0x35, 
-	0xe3, 0x91, 0x7, 0x2, 0x64, 0xfa, 0x12, 0x6e, 0x6d, 0x6d, 
-	0x43, 0x39, 0xab, 0xc9, 0x1f, 0x9c, 0x17, 0xef, 0xab, 0xf3, 
-	0x84, 0x84, 0x78, 0xae, 0x5d, 0x36, 0x79, 0x40, 0xc0, 0xe8, 
-	0xd1, 0xa9, 0xb6, 0xb8, 0xb8, 0x58, 0xff, 0x1c, 0x2d, 0x85, 
-	0xd1, 0xce, 0xb4, 0xc, 0x76, 0x71, 0x98, 0x26, 0x8e, 0x8a, 
-	0xd3, 0x7, 0x33, 0xb6, 0xe2, 0x84, 0xd1, 0xc6, 0xc6, 0x26, 
-	0xa3, 0xaa, 0xaa, 0x5a, 0x3, 0x94, 0xbc, 0x80, 0x5, 0x2, 
-	0x7e, 0x67, 0x2b, 0x39, 0xcd, 0x94, 0x2, 0x28, 0x2, 0x2d, 
-	0x40, 0xe7, 0x35, 0xcb, 0x42, 0x9f, 0x8e, 0xe5, 0xd6, 00, 
-	0xb7, 0x8, 0x3a, 0xb7, 0x6d, 0xbe, 0x88, 0xe5, 0x9f, 0x43, 
-	0x1, 0xb6, 0x95, 0x27, 0x3c, 0xc, 0x11, 0x3f, 0x5c, 0xaf, 
-	0xe6, 0x60, 0x35, 0x97, 0xf4, 0xc5, 0x31, 0xc7, 0x4d, 0x81, 
-	0x8f, 0xae, 0x5d, 0xba, 0x62, 0xad, 0x91, 0x99, 0x19, 0x97, 
-	0x93, 0x93, 0xe3, 0x2d, 0xf5, 0x7a, 0xd4, 0xe8, 0xd4, 0x34, 
-	0x9b, 0x1b, 0x8d, 0xc0, 0x28, 0x1c, 0x85, 0xec, 0xc2, 0xe2, 
-	0x14, 0x6f, 0x76, 0x96, 0x72, 0x9e, 0x28, 0x52, 0xde, 0x79, 
-	0xf3, 0x14, 0xce, 0xb0, 0xd2, 0x65, 0xb3, 0xa6, 0x3d, 0xdc, 
-	0x30, 0xba, 0x5c, 0x36, 0x9e, 0x28, 0xc3, 0x39, 0x74, 0x2, 
-	0x9b, 0x3c, 0xe4, 0x77, 0xd3, 0xe7, 0x77, 0x47, 0xa, 0x6a, 
-	0x6b, 0x39, 0x88, 0x9b, 0x83, 0x7, 0xf, 0x2e, 0x3, 0xdf, 
-	0x47, 0x43, 0x76, 0xd8, 0xdd, 0xe3, 0xb7, 0xea, 0xae, 0x2e, 
-	0x7c, 0x31, 0xcd, 0x91, 0xcd, 0xd0, 0xb5, 0xf7, 0x70, 0xc1, 
-	0x4d, 0x90, 0x9, 0xb0, 0x99, 0x46, 0x14, 0x18, 0x7d, 0x37, 
-	0x84, 0xdb, 0x4b, 0xad, 0x37, 0x1c, 0xa2, 0x60, 0x90, 0xe8, 
-	0x5b, 0x81, 0x46, 0xc6, 0x81, 0x30, 0x15, 0x3a, 0x29, 0xe4, 
-	0x8e, 0x2f, 0x3e, 0x1c, 0xe, 0x31, 0xf, 0x1, 0x91, 0xe4, 
-	0xc7, 0xbc, 0x28, 0xf8, 0xdc, 0x4, 0x82, 0xb1, 0x3, 0x13, 
-	0xcb, 0x3, 0xed, 0xc8, 0x37, 0x6, 0x3f, 0x45, 0xf4, 0x91, 
-	0xef, 0x7c, 0xe7, 0x3b, 0xee, 0x9f, 0xfc, 0xe4, 0x27, 0xff, 
-	0xe5, 0xcf, 0x4b, 0x5a, 0x4f, 0x17, 0x6, 0xe1, 0x3e, 0x8a, 
-	0x86, 0x6d, 0x1c, 0xe, 0x76, 0xa8, 0xc6, 0xce, 0xb7, 0x83, 
-	00, 0x74, 0x14, 0x34, 0x28, 0x92, 0x94, 0x1f, 0x75, 0x53, 
-	0x2d, 0x10, 0x80, 0x23, 0x68, 0x24, 0x16, 0x70, 0xda, 0x3, 
-	00, 0x1f, 0x8d, 0xb3, 0xbd, 0xfa, 0xf5, 0xc1, 0x59, 0xe, 
-	0xf9, 0x7e, 0x96, 0x41, 0xae, 0x5, 0xc8, 0xf4, 0x79, 0x9f, 
-	0x3e, 0x77, 0x3f, 0x95, 0x95, 0x95, 0x61, 0x4a, 0xb0, 0x97, 
-	0x8b, 0x2b, 0x14, 0x1a, 0x15, 0xbd, 0x4a, 0x8f, 0xcb, 0x25, 
-	0x2d, 0x53, 0x83, 0x91, 0x34, 0x82, 0x1, 0x35, 0xc3, 0x6f, 
-	0x6f, 0x68, 0x68, 0x84, 0xab, 0x37, 0xb, 0xb, 0x8f, 0x79, 
-	0x8f, 0x1d, 0x3b, 0x4e, 0x33, 0x90, 0x82, 0x6c, 0x4c, 0x40, 
-	0x3f, 0x18, 0xd, 0xac, 0x16, 0x6a, 0xe6, 0x6b, 0x5, 0x35, 
-	0x79, 0x22, 0xd7, 0x2e, 0xf4, 0xa5, 0x5b, 0xf8, 0xb, 0x21, 
-	0x7e, 0xfa, 0x4f, 0x9c, 0x78, 0xb2, 0xbe, 0xa4, 0x54, 0x2e, 
-	0xfb, 0xf9, 0x90, 0x17, 0x85, 0xdd, 0x75, 0xea, 0xaf, 0x7f, 
-	0xfd, 0xab, 0xc2, 0x6e, 0xbd, 0x7e, 0xcf, 0x78, 0xb1, 0x7, 
-	0x26, 0xfc, 0xbf, 0x7d, 0xb8, 0x59, 0xfd, 0xf2, 0xaa, 0x2b, 
-	0xf5, 0xb3, 0x71, 0x89, 0x9, 0x3f, 0x7b, 0xe1, 0x8b, 0xf, 
-	0x7f, 0xac, 0x39, 0x33, 0x73, 0x3a, 0x1a, 0x55, 0x7d, 0x98, 
-	0xe1, 0x26, 0x6c, 0x34, 0x29, 0x68, 0x6a, 0xf2, 0x8c, 0xb7, 
-	0xd9, 0xec, 0x7d, 0x6b, 0xd7, 0xea, 0xb3, 0xd9, 0x74, 0xf9, 
-	0xf0, 0x6b, 0x9b, 0x4, 0xa0, 0x1d, 0xe5, 0x97, 0xb2, 0xd, 
-	0xc8, 0x20, 0xc2, 0x1b, 0x4c, 0x17, 0x33, 0x35, 0xfa, 0xf8, 
-	0x69, 0x28, 0x80, 0x7e, 0x7d, 0x6f, 0xe6, 0x45, 0x39, 0x12, 
-	0x8a, 0x14, 0xe8, 0xc4, 0xd, 0xf8, 0x61, 0x62, 0xd, 0xc7, 
-	0xd, 0xd8, 0xb3, 0xf0, 0x17, 0xa4, 0x43, 0x25, 0x42, 0x70, 
-	0x8b, 0x65, 0x4c, 0xd3, 0x3c, 0x92, 0x7a, 0xd5, 0x2f, 0xe2, 
-	0x9d, 0xa1, 0x11, 0x5b, 0xd, 0xc4, 0xa4, 0xa3, 0x40, 0xd0, 
-	0x31, 0x63, 0x8c, 0x1b, 0x61, 0xe4, 0x28, 0x31, 0xf1, 0x5e, 
-	0xc, 0xa4, 0x85, 0x56, 0x49, 0x88, 0x74, 0x26, 0x12, 0x81, 
-	0xa6, 0x2f, 0x60, 0x63, 0xa5, 0xc8, 0x82, 0x15, 0x98, 0xbd, 
-	0x11, 0x7d, 0xd8, 0x60, 0xf9, 0x31, 0xf, 0x92, 0xe4, 0xc9, 
-	0x7c, 0xa8, 0xad, 0x9, 0x20, 0xb4, 0xcc, 0xfc, 0x20, 0x3, 
-	0x5b, 0xf3, 0xf8, 0x7d, 0x7a, 0xb9, 0x21, 0x76, 0x19, 0x45, 
-	0xbf, 0xf7, 0xde, 0x7b, 0x77, 0x7d, 0xeb, 0x5b, 0xdf, 0x32, 
-	0x7f, 0xf6, 0xb3, 0x9f, 0x9, 0xc0, 0xf9, 0x98, 0xcf, 0xa7, 
-	0xc3, 0x7c, 0x1f, 0x85, 0x53, 0x39, 0xb7, 0xc2, 0x74, 0xb, 
-	0x3b, 0xe0, 0x81, 0x6, 0xa0, 0x12, 0xc0, 0x1c, 0x8b, 0x86, 
-	0xa3, 0xe1, 0x9d, 0x77, 0xde, 0x99, 0x86, 0x4d, 0x12, 0x1a, 
-	0xe0, 0xd6, 0x32, 0x88, 0x70, 0x8, 0x90, 0xe9, 0xd3, 0xd1, 
-	0xdc, 0x2e, 0x83, 0x49, 0x8b, 0x95, 0x74, 0x9c, 0x8e, 0x51, 
-	0x68, 0x48, 0xcd, 0x45, 0x8b, 0x16, 0xda, 0xfc, 0xcb, 0x7a, 
-	0x47, 0x8c, 0x2f, 0x34, 0x3d, 0xc7, 0x61, 0x70, 0xa, 0xce, 
-	0x40, 0x5d, 0x6a, 0xd, 0x5f, 0x59, 0x59, 0xa5, 0xa0, 0x51, 
-	0x3c, 0xc8, 0xdf, 0x56, 0x54, 0x54, 0x4c, 0xf3, 0xdd, 0xa0, 
-	0x80, 0xe3, 0xbb, 0x35, 0x90, 0x58, 0x1e, 0x2b, 0x78, 0x3c, 
-	0xb0, 0xe, 0x84, 0x68, 0x8e, 0xef, 0xa8, 0xae, 0x92, 0xcb, 
-	0x80, 0xf, 0x60, 0x72, 0xb, 0xae, 0xba, 0xff, 0xfe, 0xfb, 
-	0xd9, 0x38, 0xa9, 0xc1, 0xba, 0x2a, 0x87, 0x91, 0xc6, 0x76, 
-	0x68, 0x71, 0x9a, 0xe7, 0x24, 0x7b, 0x5a, 0xfa, 0x2c, 0xbc, 
-	0x8f, 0xec, 0xa9, 0xd8, 0x94, 0xde, 0x32, 0x8a, 0x13, 0x6f, 
-	0xf5, 0x42, 0x13, 0x74, 0xb, 0xb5, 0xec, 0xb0, 0x4c, 0xf2, 
-	0x9c, 0x22, 0x4b, 0xa0, 0x91, 0xcf, 0x3e, 0xf1, 0xd5, 0xaf, 
-	0xd, 0xfb, 0x1f, 0xe5, 0x90, 0x8d, 0x1c, 0x1b, 0x58, 0xf2, 
-	0x8b, 0x8e, 0xdf, 0xcf, 0x7a, 0x92, 0xbc, 0x86, 0x9b, 0x38, 
-	0x78, 0x1e, 0x8d, 0x73, 0xe0, 0x65, 0x5a, 0x8c, 0xfd, 0x6e, 
-	0xd1, 0xde, 0xc4, 0x19, 0xb5, 0x1c, 0x65, 0x92, 0xc2, 0x1b, 
-	0x56, 0xce, 0xf0, 0x2c, 0x40, 0x7c, 0x29, 0x52, 0x62, 0x6, 
-	0x14, 0x28, 0xd6, 0x22, 0xdf, 0x8f, 0x82, 0xd6, 0x9a, 0x8b, 
-	0xbe, 0x5a, 0x2c, 0x87, 0xf5, 0x87, 0x43, 0x56, 0xb0, 0x59, 
-	0x81, 0x4d, 0x86, 0xa1, 0x62, 0xbc, 0xe8, 0xff, 0xea, 0x5, 
-	0x4, 0xc3, 0x49, 0x3b, 0xd4, 0x3b, 0xcc, 0x8f, 0xf9, 0xd0, 
-	0x9, 0x80, 0xe8, 0xb3, 0x21, 0x41, 0x45, 0x99, 0x38, 0x58, 
-	0x51, 0xff, 0xc6, 0x96, 0xbc, 0xcb, 0x7e, 0x28, 0x4, 0x2a, 
-	0x1a, 0x1b, 0x4c, 0x3e, 0x86, 0x33, 0xb3, 0xdd, 0xbf, 0xf8, 
-	0xc5, 0x2f, 0x7e, 0x8d, 0x67, 0x26, 00, 0x9d, 0x82, 0xd6, 
-	0x3c, 0x5, 0xcf, 0x7b, 0x21, 0xa0, 0xfd, 0x47, 0x89, 0xe4, 
-	0x65, 0xbf, 0x8f, 0xe7, 0x4d, 0x68, 0x9d, 0x33, 00, 0xee, 
-	0x72, 0x98, 0x5d, 0x75, 0xb8, 0xbd, 0x1a, 0x6b, 0xd1, 0xa3, 
-	0x98, 0x36, 0x85, 0x83, 0x65, 0x62, 0x19, 0x18, 0xa6, 0xa3, 
-	0x16, 0x45, 0x3c, 0x6c, 0x7c, 0x28, 0xa2, 0x6f, 0x62, 0xfd, 
-	0xbc, 0x79, 0xfb, 0xed, 0xb7, 0x19, 00, 0x3, 0x79, 0x3f, 
-	0x62, 0x80, 0xe, 0x2a, 0x66, 0xbf, 0x4b, 0xa, 0x6e, 0x6e, 
-	0x6e, 0xe, 0x9d, 0x9d, 0xd, 0xc, 0x46, 0x73, 0xbd, 0xbb, 
-	0x76, 0xed, 0xc6, 0x9a, 0xeb, 0x3, 0x10, 0x6a, 0x87, 0x1, 
-	0xcb, 0x46, 0xaf, 0xf2, 0x23, 0x90, 0x8, 0x28, 0x37, 0xe2, 
-	0xf4, 0xc1, 0x34, 0x16, 0xaa, 0x68, 0x6b, 0x57, 0xb5, 0x30, 
-	0xfd, 0x83, 0x89, 0x9b, 0x3a, 0xd0, 0xb8, 0xe9, 0x77, 0x83, 
-	0x9f, 0x5, 0x5f, 0xf3, 0x97, 0x33, 0x8f, 0x36, 0x36, 0x5, 
-	0xc0, 0x3d, 0xa1, 0xa3, 0xdd, 0x89, 0xc2, 0xb0, 0x55, 0xd5, 
-	0x51, 0x99, 0x37, 0x7e, 0x40, 0xd2, 0xc0, 0x52, 0x61, 0x93, 
-	0x3b, 0xf8, 0x38, 0xe3, 0x41, 0x9e, 0x92, 0xf8, 0x8c, 0xda, 
-	0x96, 0xa0, 0x63, 0x5d, 0x13, 0xe4, 0x67, 0xb, 0x70, 0xa6, 
-	0x1, 0x79, 0xd4, 0xcb, 0x9f, 0x51, 0x47, 0x5c, 0xfc, 0xa4, 
-	0xf3, 0x60, 0x3e, 0xe4, 0x1, 0xf3, 0x11, 0x62, 0xdc, 0x48, 
-	0x88, 0xf8, 0x41, 0xd9, 0x9d, 0xb0, 0xc2, 0x66, 0xfa, 0x97, 
-	0xa4, 0xf2, 0x23, 0x89, 0x31, 0x3a, 0xe2, 0x8d, 0x9, 0xe, 
-	0x79, 0x60, 0x2d, 0x52, 0x70, 0x8b, 0x60, 0x9, 0xb0, 0x75, 
-	0xc6, 0x68, 0xc9, 0xae, 0x47, 0x5f, 0x93, 0x26, 0xc4, 0xb0, 
-	0x88, 0x82, 0x2d, 0x8e, 0xcc, 0x11, 0x1, 0xc7, 0x4e, 0x2c, 
-	0xee, 0xad, 0xe5, 0x82, 0x95, 0x11, 0x13, 0x66, 0xa6, 0x6f, 
-	0x5, 0x37, 0xf3, 0xa2, 0xd6, 0xa6, 0xf0, 0x42, 0xb3, 0x7a, 
-	0xb1, 0xa8, 0x40, 0xe7, 0x19, 0xfc, 0x21, 0xec, 0x27, 0xe3, 
-	0x14, 0x4b, 0x27, 0xde, 0xbd, 0x7, 00, 0x77, 0x1, 0xe0, 
-	0x8f, 0x61, 0x90, 0xcf, 0x81, 0x6b, 0xdd, 0xd8, 0x21, 0x5d, 
-	0x36, 0x40, 0xd4, 0xac, 0xa7, 0x6b, 0xd7, 0x92, 0x8, 0x1b, 
-	00, 0x3c, 0x77, 0x43, 0x8, 0x7a, 0x31, 0xf, 0xbe, 0x81, 
-	0xe5, 0x80, 0x5b, 0x8d, 0x46, 0x43, 0x3, 0x9c, 0x42, 0x22, 
-	0xa0, 0x66, 0x59, 0x8, 0x6a, 0x94, 0xc7, 0x9c, 0x38, 0x71, 
-	0x82, 0x79, 0xdb, 0x6d, 0xb7, 0xda, 0x20, 0xb4, 0x23, 0xc6, 
-	0x3, 0x4b, 0xb1, 0x86, 0x1c, 0xe4, 0xf7, 0x73, 0xe7, 0x1b, 
-	0xf7, 0x3b, 0x3, 0xe4, 0xdc, 0x42, 0xe9, 0xcd, 0xcf, 0x3f, 
-	0x8c, 0x13, 0x5c, 0x63, 0xf8, 0xc3, 0x4, 0xfa, 0x17, 0x42, 
-	0x71, 0x26, 0xb4, 0x72, 0xfb, 0x17, 0x96, 0x70, 0xae, 0xf9, 
-	0xf7, 0x96, 0x7d, 0xd9, 0xd6, 0x8c, 0x3e, 0xf3, 0x99, 0xcf, 
-	0xe8, 0x4b, 0x82, 0x9c, 0x3b, 0xb9, 0xce, 0x44, 0x6f, 0x14, 
-	0x17, 0xab, 0xfb, 0xe6, 0xcc, 0xd6, 0xbf, 0xa4, 0xe9, 0xe6, 
-	0x79, 0xe8, 0x98, 0x39, 0xc1, 0xc8, 0x64, 0xe0, 0x35, 0xc8, 
-	0x8, 0x7, 0xa4, 0x4c, 0x6c, 0xbf, 0xd5, 0xb, 0x4d, 0xf8, 
-	0x80, 0xc0, 0x22, 0xe0, 0xc8, 0x57, 0x2, 0x5a, 00, 0xce, 
-	0x7b, 0x67, 0x4b, 0x94, 0x47, 0xe6, 0xc9, 0x91, 0xf3, 0x91, 
-	0xd6, 0xde, 0xc4, 0x11, 0xe6, 0xd3, 0x2f, 0x47, 0xda, 0x5c, 
-	0xb1, 0x46, 0x4c, 0x11, 0xe0, 0x1c, 0x39, 0xa7, 0x9c, 0xb1, 
-	0xf0, 0x94, 0xaf, 0x90, 0x32, 0x86, 0xfb, 0xfd, 0x88, 0x2f, 
-	0xc, 0x89, 0xc0, 0x1c, 0x1, 0xb6, 0x64, 0x22, 00, 0xe7, 
-	0xbe, 0xed, 0xeb, 0xd1, 0x37, 0x8d, 0xb4, 0xa1, 0xe8, 0x97, 
-	0xaf, 00, 0x4e, 0x80, 0x4d, 0x2d, 0x86, 0x41, 0x28, 0x9e, 
-	0xaf, 0xa5, 0xfb, 0x96, 0xfd, 0x22, 0xf, 0xf3, 0x82, 0x79, 
-	0x90, 0x24, 0x2f, 0xe6, 0xc1, 0xca, 0xa7, 0x63, 0x45, 0x71, 
-	0x10, 0x9, 0x82, 0x1a, 0x96, 0x27, 0xec, 0x17, 0xc1, 0x44, 
-	0xe7, 0x7e, 0xf0, 0xfb, 0xbf, 0xf1, 0x8d, 0x6f, 0x3c, 0x80, 
-	0x23, 0x97, 0x78, 0x58, 0x43, 0x27, 0xfa, 0xd9, 0xb1, 0x30, 
-	0x99, 0xe3, 0x9, 0x70, 0xa6, 0x4f, 0x80, 0xa3, 0xd2, 0xfb, 
-	0x1d, 0xd9, 0x84, 0x86, 0x20, 0xe, 0xf9, 0x75, 0xe3, 0x9b, 
-	0x2a, 0x11, 0xa5, 0xf5, 0x49, 0xac, 0x82, 0xc3, 0x8e, 0xa0, 
-	0xf, 0xd1, 0x9f, 0x77, 0x51, 0x43, 0x4b, 0x23, 0x43, 0x73, 
-	0xf, 0xda, 0x11, 0x42, 0x6a, 0xf7, 0xde, 0x73, 0xcf, 0x27, 
-	0x15, 0xe6, 0xc8, 0x9, 0x6c, 0x26, 0x7b, 0x51, 0x10, 0xc5, 
-	0x80, 0x9a, 0xeb, 0x9e, 0x7b, 0xee, 0xb1, 0xad, 0x5d, 0xbb, 
-	0x6, 0xd6, 0x86, 0xc7, 0xdc, 0xb7, 0x6f, 0xbf, 0x49, 0xc0, 
-	0xd3, 0x74, 0xc1, 0x49, 0x15, 0xba, 0x9c, 0xfc, 0x21, 0x1, 
-	0xce, 0x35, 0x8f, 0x4, 0xad, 0xc6, 0x8f, 0xa, 0xf0, 0x27, 
-	0x72, 0x49, 0x51, 0x38, 0xcf, 0xdc, 0x1e, 0x62, 0x97, 0x21, 
-	0xeb, 0xd, 0x5d, 0x43, 0x3, 0xc0, 0xd0, 0xd, 0x35, 0x1b, 
-	0x48, 0xf0, 0x5c, 0xf3, 0x95, 0xf5, 0xcc, 0xc6, 0x94, 0xf5, 
-	0x2e, 0x32, 0x70, 0x36, 0xe5, 0x62, 0x3, 0x1, 0xed, 0x6a, 
-	0xa2, 0xce, 0xbc, 0x22, 0x3f, 0x22, 0xb7, 0x22, 0x5b, 0x92, 
-	0x5f, 0xa4, 0xf9, 00, 0x47, 0xf8, 0xbc, 0x51, 0x2b, 0xf1, 
-	0x1e, 0x99, 0x47, 0x47, 0x80, 0x6b, 0x25, 0xa, 0x9f, 0xb2, 
-	0x29, 0xe, 0xc1, 0xc1, 0x29, 0xac, 0x20, 0x87, 0x79, 0x8d, 
-	0x1c, 0x96, 0xc4, 0x75, 0x86, 0x10, 0x74, 0xce, 0x6d, 0x27, 
-	0x8c, 0x94, 0x49, 0x4e, 0xa6, 0x90, 0x51, 0x64, 0x1a, 0x97, 
-	0xfe, 0x71, 0x84, 0x32, 0x4c, 0x59, 0x22, 0xbe, 0x6d, 0x65, 
-	0xbc, 0xe4, 0xc1, 0x8a, 0xe7, 0x1c, 0x3a, 0xb5, 0x2e, 0x6, 
-	0xc4, 0xfc, 0x6d, 0x58, 0xf8, 0xa4, 0x45, 0x83, 0xa3, 0x12, 
-	0x1e, 0xc4, 0x71, 0xbb, 0x9f, 0xc1, 0x34, 0xd7, 0x49, 0x58, 
-	0x18, 0x1d, 0x58, 0x93, 0x3e, 0x17, 0x65, 0xe, 0x79, 0x64, 
-	0x13, 0xf2, 0xb2, 0x41, 0xe8, 0xc6, 0x3, 0xd8, 0xad, 0xf0, 
-	0x8f, 0x22, 0xf5, 0x76, 0xb8, 0x56, 0xfc, 0x36, 0xd9, 0x1b, 
-	0x78, 0xef, 0x3, 0xec, 0x86, 0xea, 0x43, 0x3a, 0x4, 0x35, 
-	0xb6, 0x29, 0xd6, 0x99, 0x18, 0x51, 0xf7, 0xde, 0x71, 0xc7, 
-	0x1d, 0x17, 0x5c, 0x5b, 0x87, 0xe7, 0x82, 0xef, 0x9, 0xcc, 
-	0x72, 0xe3, 0xbe, 0xfb, 0x3e, 0x8d, 0x3, 0x27, 0xe7, 0x63, 
-	0x20, 0xa8, 0xd9, 0x2c, 0xc5, 0x9a, 0x71, 0x4c, 0x4, 0xeb, 
-	0x87, 0x15, 0xb0, 0xba, 0x4e, 0x60, 0xf0, 0x6f, 0x24, 0x68, 
-	0x5d, 0x49, 0x89, 0xaa, 0xf2, 0xff, 0xa2, 0xa7, 0xab, 0xa6, 
-	0x5a, 0x75, 0xee, 0xdc, 0x39, 0x20, 0x59, 0x36, 0x3a, 0xac, 
-	0x3f, 0xd4, 0x4f, 0xbf, 0x53, 0x54, 0x28, 0x47, 0xac, 0x6b, 
-	0x1, 0x1b, 0xfd, 0x91, 0x20, 0xc, 0x7e, 0xd9, 0xf8, 0xe3, 
-	0xb, 0x32, 0x56, 0x23, 0xd, 0x8, 0xd3, 0x97, 0x3c, 0x86, 
-	0xd3, 0x90, 0x10, 0x47, 0x50, 0xe, 0x71, 0x18, 0x3f, 0xc8, 
-	0x43, 0x39, 0x5, 0xdc, 0x4, 0x38, 0x95, 0x29, 0x9d, 0x56, 
-	0xb2, 0x67, 0x14, 0x54, 0x44, 0x8c, 0x4, 0x38, 0x3a, 0x51, 
-	0xff, 0x3b, 0x1, 0xad, 0xd, 0x93, 0xfc, 0x5a, 0xb6, 0x36, 
-	0xb8, 0x3f, 0x2c, 0x22, 0x3, 0x82, 0x41, 0xc7, 0xca, 0x80, 
-	0x26, 0xa4, 0x26, 0xc5, 0x59, 0x79, 0xc3, 0x1b, 0x7d, 0xf, 
-	0x2e, 0x8c, 0xe4, 0x23, 0x79, 0x31, 0xf, 0x56, 0x8, 0x2b, 
-	0x7, 0x80, 0xe3, 0xf6, 0x51, 0xf6, 0x6b, 0x83, 0x5f, 0xb, 
-	0x79, 0xcd, 0xc5, 0x28, 0x30, 0xd1, 0xa3, 0x30, 0xb0, 0xf4, 
-	0x4f, 0x98, 0x76, 0x4a, 0x42, 0x59, 0x1b, 0x30, 0x75, 0x96, 
-	0x89, 0xed, 0x8a, 0x73, 0x39, 0x5a, 0x8e, 0xca, 0xd5, 0x6a, 
-	0x86, 0x1a, 0x1c, 0xc0, 0x8f, 0x85, 0x86, 0x5e, 0x82, 0xfe, 
-	0x60, 0x3b, 0xdc, 0x6e, 0xfc, 0xac, 0xc, 0x17, 0x29, 0x70, 
-	0x65, 0x7, 0xf, 0x7e, 0x68, 0x85, 0x59, 0xfa, 0x26, 0xd6, 
-	0x2d, 0xef, 0xda, 0xbd, 0x7b, 0x8f, 0x89, 0xb1, 0xb, 0xcf, 
-	0xfd, 0xf7, 0xdf, 0x87, 0x7e, 0x75, 0xfa, 0xb0, 0xf9, 0x19, 
-	0xb2, 0xc0, 0xe7, 0xf0, 0x26, 0xbe, 0x51, 0xf, 0x6a, 0xa1, 
-	0xeb, 0x60, 0x74, 0x67, 0x66, 0x79, 0x5b, 0xb1, 0xc2, 0x8c, 
-	0x34, 0x1e, 0xf3, 0xce, 0x53, 0x60, 0xba, 0x8e, 0x4, 0x91, 
-	0x99, 0x59, 0x7e, 0xeb, 0xc5, 0x91, 0x3e, 0x46, 0xc5, 0x5f, 
-	0x76, 0x59, 0xc8, 0x64, 0x59, 0x7f, 0x1c, 0x71, 0x86, 0x25, 
-	0x34, 0xe0, 0x98, 0x62, 0x1, 0x9f, 0xd4, 0x7f, 0xc8, 0x4, 
-	0x22, 0xb8, 0x49, 0x19, 0xa0, 0x7c, 0xa2, 0xc1, 0xd6, 0x8a, 
-	0x88, 0xe9, 0x53, 0xa6, 0xa4, 0x21, 0x11, 0x80, 0x47, 0x90, 
-	0x64, 0x20, 0x2a, 0xf1, 0x4, 0xcb, 0x80, 0xda, 0x5b, 0x6, 
-	0xd5, 0x44, 0x73, 0x53, 0x2e, 0x44, 0xb9, 0x6, 0xe2, 0x87, 
-	0xb, 0xf0, 0xa5, 0x33, 0x92, 0xa5, 0x95, 0x60, 0xc2, 0xcc, 
-	0x80, 0x8e, 0xef, 0xf2, 0x2c, 0x66, 0xfc, 0x70, 0xe2, 0xa4, 
-	0x61, 0xf5, 0xb7, 0xc9, 0x68, 0x92, 0x30, 0x5c, 0x98, 0x43, 
-	0x46, 0xc1, 0xc4, 0x32, 0x91, 0x6e, 0x24, 0x8d, 0x8f, 0x4e, 
-	0x2b, 0xdc, 0x3f, 0xe6, 0x11, 0x9c, 0xf, 0x5b, 0x75, 00, 
-	0x9b, 0x47, 0xf1, 0x18, 0x3c, 0x5c, 0x31, 0xdc, 0xbb, 0xa1, 
-	0xee, 0xe3, 0xbb, 0x35, 0xc0, 0x91, 0xe6, 0x67, 0xb1, 0xf0, 
-	0xff, 0x45, 0x98, 0xf5, 0x35, 0x48, 0x2f, 0xb, 0xe9, 0x65, 
-	0x43, 0xc8, 0xea, 0xd0, 0x28, 0x75, 0x1, 0xd8, 0x49, 0xe8, 
-	0x37, 0xa7, 0x3, 0xd4, 0xcd, 0x70, 0x65, 00, 0xf6, 0x73, 
-	0x48, 0xcb, 0x3a, 0xd2, 0x49, 0x6, 0x70, 0x2d, 0xfa, 0x8b, 
-	0x5f, 0xf9, 0xca, 0x57, 0x93, 00, 0x94, 0x59, 0x58, 0x5, 
-	0xc5, 0x9f, 0xeb, 0xd, 0x95, 0xe5, 0x45, 0x7d, 0x8f, 0xd3, 
-	0x70, 0xe, 0xaf, 0xc7, 0x93, 0xd4, 0xcd, 0x29, 0x5a, 0x65, 
-	0x63, 0x9f, 0x9b, 0xb, 0x51, 0x46, 0x82, 0xb0, 0x14, 0x47, 
-	0x35, 0x62, 0x8d, 0x7a, 0x1a, 0x1a, 0x7a, 0x77, 0x43, 0x3d, 
-	0x56, 0xbf, 0xb5, 0x29, 0x98, 0x35, 0x21, 0x93, 0x46, 0x3d, 
-	0xf2, 0x7, 0x21, 0x39, 0xb8, 0xa6, 0x7, 0xb8, 0xd8, 0xf8, 
-	0xd0, 0x8c, 0x66, 0x1f, 0x9c, 0xda, 0x9d, 0x3e, 0xe5, 0x60, 
-	0x24, 0x88, 0xf2, 0x49, 0xc5, 0x80, 0x2e, 0x80, 0x8d, 0x32, 
-	0x4b, 0x79, 0x62, 0x5e, 0x74, 0x22, 0x6b, 0xcc, 0x87, 0x79, 
-	0x46, 0x42, 0x50, 0x1a, 0x8e, 0xe3, 0xc7, 0x8f, 0xaf, 0xc2, 
-	0x3b, 0x7f, 0x81, 0xb3, 0x6a, 0x6f, 0x62, 0x8e, 0x89, 0x51, 
-	0x56, 0xe9, 0x5b, 0x65, 0x9, 0x97, 0xfd, 0x29, 0x92, 0x5c, 
-	0xad, 0x89, 0xea, 0x96, 0x4, 0xd3, 0x2, 0x13, 0x51, 0xf0, 
-	0x54, 0xb4, 0x32, 0xfd, 0x53, 0x1d, 0xe2, 0x15, 0x19, 0x20, 
-	0x4c, 0x10, 0x9f, 00, 0xa7, 0x89, 0x4a, 0x61, 0xe1, 0x94, 
-	0xc3, 0x48, 0x90, 0xe4, 0x23, 0x79, 0xb0, 0x22, 0xa8, 0xb1, 
-	0x59, 0x19, 0xf0, 0x31, 0xad, 0xb4, 0x68, 0x58, 0x2b, 0xdf, 
-	0xd8, 0x17, 0xbe, 0x12, 0x3, 0x62, 0xe8, 0x3a, 0xdc, 0x5, 
-	0xc1, 0xa9, 0xc0, 0x34, 0xc6, 0x11, 00, 0xfd, 0x14, 0x7e, 
-	0x23, 0x2b, 0xe, 0xc7, 0x36, 0x8d, 0x61, 0x3f, 0x14, 0xa0, 
-	0x3f, 0x9, 0x1, 0x78, 0x15, 0x4b, 0x50, 0x7f, 0x8c, 0x5f, 
-	0xbf, 0x68, 0xc0, 0xf7, 0x70, 0xfe, 0x92, 0x8, 0xa0, 0x69, 
-	0x4e, 0xd, 0xae, 0xdd, 0x7f, 0xfe, 0xe7, 0x2f, 0x1f, 0x7f, 
-	0xe3, 0x8d, 0xd7, 0xff, 0xb2, 0x6e, 0xdd, 0x5b, 0x1e, 0x2, 
-	0xfc, 0xef, 0x89, 0x60, 0xad, 0xa8, 0x17, 0x5e, 0x78, 0xc1, 
-	0xb5, 0xf7, 0x50, 0xfe, 0xce, 0xfa, 0x8e, 0xce, 0x4a, 0x96, 
-	0x9d, 0x7d, 0xee, 0x7f, 0x5a, 0x30, 0x7f, 0x44, 0x3e, 0xe3, 
-	0x1e, 0x1c, 0xa6, 0x40, 0x60, 0x93, 0xa2, 0x20, 0x6b, 0x76, 
-	0x6c, 0x16, 0x9, 0x47, 0x1c, 0xe0, 0x62, 0x7d, 0x2, 0x60, 
-	0xdc, 0xa6, 0xa9, 0xfb, 0xdd, 0xac, 0x67, 0x3a, 0x31, 0x99, 
-	0x29, 0x7, 0x94, 0xb3, 0xb3, 0x25, 0xca, 0x27, 0xfb, 0xf9, 
-	0x1c, 0x33, 0x11, 0xcd, 0x2d, 0x79, 0xd0, 0x67, 0x3e, 0xc3, 
-	0x21, 0xe2, 0x9, 0xb8, 0x4a, 0x46, 0xfa, 0xd9, 0x78, 0x9f, 
-	0x8a, 0x53, 0xfa, 0xdd, 0xa2, 0x58, 0x35, 0x6e, 0x2d, 0x4a, 
-	0x37, 0x64, 0x36, 0x4, 0xe9, 0x50, 0x88, 0x2d, 0x5, 0x9d, 
-	0x24, 0xae, 0x35, 0x37, 0xfa, 0x5, 0xd7, 0xe6, 0xe6, 0xe6, 
-	0x9e, 0xd5, 0xf4, 0x82, 00, 0x8f, 0xcc, 0x10, 0xcd, 0xd, 
-	0xdf, 0xb, 0xf3, 0x8a, 0xe9, 0x46, 0xa4, 0x4d, 0xc3, 0x7d, 
-	0x48, 0x70, 0x1e, 0xd2, 0xca, 0x12, 0x44, 0xec, 0x43, 0xc3, 
-	0x24, 0xf, 0xf7, 0xea, 0x19, 0xef, 0x13, 0xe0, 0x30, 0xd1, 
-	0xc9, 0xc7, 0x7, 0xd1, 0xda, 0xfe, 0x5f, 0x4c, 0x97, 0xbd, 
-	0x9c, 0x93, 0x93, 0x93, 0x82, 0xa9, 0xaf, 0x18, 0x54, 0x3a, 
-	0xa6, 0xcd, 0x2b, 0x8a, 0xb7, 0x6d, 0xdb, 0x76, 0xa, 0xcf, 
-	0x59, 0x21, 0xe4, 0x9b, 0x95, 0xac, 0xdf, 0x67, 0x62, 0xbe, 
-	0x76, 0x1f, 0x2a, 0x95, 0x12, 0xf1, 0x69, 0x2c, 0x74, 0xb1, 
-	0x67, 0x64, 0xc, 0xaf, 0xd1, 0xb4, 0x66, 0x70, 0xae, 0xc3, 
-	0x2, 0x6c, 0x74, 0x2b, 0x76, 0xfc, 0xe1, 0xf, 0x8f, 0xad, 
-	0xeb, 0x9e, 0x3b, 0x77, 0xe2, 0xe7, 0xe7, 0xcf, 0x7b, 0x88, 
-	0xf9, 0x66, 0x63, 0x47, 0x16, 0x7f, 0x93, 0xab, 0xde, 0xbf, 
-	0x76, 0x7c, 0x38, 0x65, 0x49, 0xc0, 0xa0, 0x5c, 0xe0, 0x7c, 
-	0x71, 0x24, 0x10, 0x87, 0x6d, 0x9a, 0x36, 0xcb, 0x48, 0x79, 
-	0xa8, 0x34, 0x59, 0x9f, 0xb4, 0xac, 0x38, 0xb5, 0x49, 0xcd, 
-	0x2d, 0xce, 0xaa, 0xc1, 0x19, 0x3e, 0x5b, 0xa2, 0x78, 0xa2, 
-	0x61, 0xe7, 0xef, 0x93, 0xeb, 0x25, 0xa9, 0x6c, 0x58, 0x28, 
-	0x5b, 0x92, 0x1f, 0xe5, 0x8e, 0x72, 0xcd, 0x78, 0x91, 0x8a, 
-	0x32, 0x64, 0x88, 0x56, 0xe5, 0x4a, 0x74, 0xf9, 0x4a, 0x50, 
-	0x4e, 0x6a, 0x6f, 0xca, 0x18, 0xb, 0x4d, 0x39, 0x12, 0x59, 
-	0x1a, 0x74, 00, 0xe1, 0x8c, 0xe0, 0x46, 0xa1, 0x44, 00, 
-	0xad, 0x89, 0xf2, 0x3d, 0x7, 0x46, 0xf5, 0x6e, 0x82, 0x69, 
-	0xe2, 0x9b, 0x54, 0xc4, 0x8d, 0x48, 0x48, 0x5a, 0x35, 0x61, 
-	0x80, 0xb4, 0x78, 0x6c, 0x61, 0x61, 0xd6, 0xca, 0x7c, 0x6e, 
-	0x24, 0x49, 0x86, 0x8c, 0x2b, 0xc0, 0xa6, 0x4f, 0xc6, 0x5b, 
-	0x1d, 0xee, 0x99, 0x91, 0x9a, 0xe3, 0xa1, 0x32, 0xa1, 0x95, 
-	0xb1, 0x66, 0xcd, 0x1a, 0x4e, 0x8b, 0x7d, 0x3, 0xe9, 0x7b, 
-	0x7e, 0xf3, 0x9b, 0xdf, 0xbc, 0x8c, 0x78, 0xd6, 0x13, 0x5d, 
-	0x58, 0x29, 0x56, 0x55, 0x41, 0x9e, 0xa, 0x5f, 0xb5, 0x69, 
-	0x8e, 0x6b, 0xdd, 0xcc, 0xaf, 0x5b, 0xb7, 0x6e, 0x1f, 0xd2, 
-	0x21, 0xaf, 0xef, 0xc5, 0x4f, 0xca, 0xa2, 0xef, 0x35, 0x6, 
-	0xc1, 0x8b, 0x93, 0x4, 0xd8, 0xbb, 0x76, 0xed, 0xd9, 0xf9, 
-	0xf8, 0xe3, 0x8f, 0xad, 0x47, 0x29, 0xbb, 0xb1, 0xc3, 0x2b, 
-	0xd0, 0x45, 0x9b, 0x37, 0x26, 0x5d, 0xad, 0xc0, 0x32, 0xd8, 
-	0x57, 0x8f, 0x1f, 0xf, 0xf9, 0x1, 0x3c, 0xad, 0x54, 0x4e, 
-	0x2c, 0xd, 0x19, 0x1, 0x37, 0xe7, 0x62, 0x50, 0x75, 0x65, 
-	0x76, 0x56, 0xe0, 0xb1, 0x17, 0xbf, 0xd7, 0x3d, 0x14, 0xe2, 
-	0xd9, 0x7a, 0x5b, 0xb6, 0x6c, 0xe1, 0x29, 0xa6, 0xda, 0x2a, 
-	0x23, 0xf0, 0x8, 0x68, 0x2, 0xf, 0xfc, 0xd, 0x58, 0x8c, 
-	0x91, 0x9a, 0xcc, 0xc1, 0x79, 0x63, 0x36, 0xc7, 0xc6, 0x19, 
-	0x1d, 00, 0x51, 0xcb, 0x96, 0x28, 0x29, 0xca, 0x19, 0xd3, 
-	0xa6, 0x63, 0x7e, 0xa7, 0x61, 0x14, 0x9c, 0x42, 0xe8, 0x6b, 
-	0x98, 0xe6, 0x51, 0xd8, 0x59, 0xb8, 0x1a, 0x4f, 0x9f, 0x87, 
-	0x23, 0xde, 0x5d, 0x9b, 0xd, 0xc5, 00, 00, 0x20, 00, 
-	0x49, 0x44, 0x41, 0x54, 0x44, 0x7b, 0x33, 0xec, 0x82, 0x23, 
-	0x51, 0x4e, 0xac, 0x72, 0xa5, 0x6f, 0xca, 0x3f, 0x3e, 0x1c, 
-	0xa, 0x31, 0x1e, 0x85, 0x91, 0x3e, 0x5, 0xd5, 0x1, 0x93, 
-	0x21, 0x1d, 0x1a, 0x36, 0x13, 0xa6, 0x39, 0x2e, 0x23, 0x27, 
-	0x2b, 0x83, 0x19, 0x16, 0xad, 0xcd, 0x75, 0xe4, 0x5c, 0x7c, 
-	0x30, 0xd2, 0x3, 0x69, 0x4c, 0x9f, 0xf9, 0x90, 0xe9, 0x6c, 
-	0x40, 0xb0, 0x7d, 0x4f, 0xcf, 0xcd, 0x9e, 0x8d, 0xd6, 0xb6, 
-	0x7e, 0x35, 0x57, 0x8b, 0x51, 0x83, 0x63, 0x8d, 0xf0, 0xbf, 
-	0x7c, 0xe1, 0xb, 0x5f, 0xb8, 0x15, 0xcf, 0x38, 0xb2, 0x64, 
-	0x1d, 0x10, 0x21, 0xef, 0xd8, 0xd2, 0x72, 0xa5, 0x11, 0x3b, 
-	0xa3, 0x9c, 0x39, 0xa2, 0x79, 0xce, 0x46, 0x80, 0x12, 0x4b, 
-	0x47, 0x13, 0xbd, 0xfd, 0xad, 0xb7, 0xde, 0xda, 0xfb, 0xf6, 
-	0xdb, 0x6f, 0x3d, 0xfd, 0xc6, 0x1b, 0x6f, 0x78, 0x82, 0xf, 
-	0xd3, 0xc7, 0xf3, 0x8b, 0x82, 0x4e, 0x3, 0x7b, 0xf7, 0x2e, 
-	0x3f, 0xb0, 0xf9, 0x1d, 0x9d, 0x3f, 0xdd, 0xbe, 0x7d, 0xc3, 
-	0x2b, 0x27, 0x8e, 0xff, 0x50, 0xa, 0xf9, 0xc5, 0x45, 0xb, 
-	0x15, 0xcc, 0x3b, 0xb9, 0x8c, 0xc8, 0xe7, 0x36, 0xce, 0xef, 
-	0xaf, 0xe2, 0xb8, 0x92, 0x8f, 0x46, 0xdd, 0x72, 0xab, 0x4a, 
-	0x5c, 0x7b, 0x85, 0x5c, 0xe, 0xea, 0x63, 0x70, 0x52, 0x6f, 
-	0xe1, 0xa5, 0x3c, 0x49, 0x17, 0xcc, 0xda, 0xb0, 0x13, 0x84, 
-	0x94, 0x87, 0xb3, 0x25, 0xca, 0x29, 0x1b, 0xe, 0x99, 0xce, 
-	0x64, 0x1e, 0x92, 0xb6, 0xf8, 0xc3, 0xc9, 0x83, 0x7b, 0x3, 
-	0xd0, 0x20, 0xa4, 0x41, 0x71, 0xb0, 0x6f, 0x2a, 0x9a, 0x9b, 
-	0xc0, 0x26, 0xfe, 0x44, 0x83, 0x33, 0x8e, 0x28, 0x89, 0x1, 
-	0xd9, 0x50, 0xe0, 0x86, 0x42, 0x2, 0x6c, 0x49, 0xdc, 0x81, 
-	0x7e, 0xc1, 0x2, 0xc, 0xdb, 0xbb, 0x6, 0x49, 0xfb, 0x8c, 
-	0xe9, 0xa, 0x73, 0x9, 0x3c, 0x32, 0x82, 0x8c, 0xc1, 0x3d, 
-	0x9e, 0x43, 0x7e, 0xc6, 0x77, 0x87, 0x12, 0x81, 0xe9, 0x8b, 
-	0x63, 0x1e, 0x4c, 0x9f, 0x3e, 0x2b, 0x1b, 0xf7, 0x4d, 0x2e, 
-	0xb1, 0x1c, 0x4a, 0x3a, 0x43, 0x8d, 0xc3, 0x65, 0x94, 0xd4, 
-	0xe0, 00, 0xf8, 0x77, 0x1, 0xf0, 0x9b, 0xf0, 0x5e, 0x28, 
-	0x80, 0x33, 0x39, 0x82, 0x9c, 0x1b, 0x4f, 0xd8, 0xff, 0xa6, 
-	0x63, 0xff, 0x9b, 0xe0, 0xe, 0xf8, 00, 0x36, 0x1, 0xfe, 
-	0xdc, 0xeb, 0xaf, 0xbf, 0xe1, 0xa1, 0x56, 0xb8, 0x98, 0x48, 
-	0x80, 0xbd, 0x73, 0xe7, 0xae, 0x3d, 0x8f, 0x3f, 0xfe, 0x87, 
-	0xd, 0x28, 0x1b, 0x1b, 0x2b, 0x19, 0x4b, 0xe8, 0x8c, 0xb6, 
-	0x39, 0x2, 0xea, 0x95, 0x7, 0x32, 0xf0, 0x77, 0xb0, 0x79, 
-	0xcc, 0x51, 0x24, 0xb4, 0x4, 0x32, 0xc0, 0x2d, 0x9c, 0x38, 
-	0x20, 0xf1, 0xf4, 0x6b, 0x11, 0xe, 0x4c, 0xd1, 0x2a, 0xe3, 
-	0xd4, 0x18, 0xeb, 0x5b, 0x9c, 0x15, 0x7c, 0x94, 0xd, 0xca, 
-	0xdd, 0xd9, 0x12, 0x15, 0x1c, 0x16, 0x29, 0x79, 0x99, 0xb6, 
-	0xc8, 0x98, 0xc8, 0xb4, 0xe4, 0x31, 0x9c, 0x7c, 0xa0, 0x40, 
-	0xdd, 0x98, 0xe, 0x9e, 0x81, 0xf2, 0x59, 0xfb, 0xdd, 0xc4, 
-	0xa0, 0x28, 0xd9, 0x41, 0xe5, 0x77, 0x28, 0xe0, 0x96, 0x4, 
-	0x18, 0x97, 0x8e, 0x89, 0x3b, 0xd0, 0xa7, 0x59, 0x80, 0xd6, 
-	0x65, 0x58, 0xf3, 0x54, 0xfc, 0x60, 0x21, 0x7e, 0x34, 0x9d, 
-	0x30, 0xe3, 0x5c, 0x98, 0xe4, 0x4c, 0x9f, 0x79, 0x92, 0xf1, 
-	0xd4, 0xda, 0xfc, 0xdd, 0x28, 0xb6, 0xb8, 0x6c, 0xdd, 0x47, 
-	0x9a, 0x30, 0x35, 0xa6, 0x70, 0xe8, 0xbc, 0x3, 0xa7, 0xbe, 
-	0x7e, 0xef, 0xf3, 0x9f, 0xff, 0xfc, 0x8d, 0x48, 0x9f, 00, 
-	0xe7, 0x46, 0x6e, 0x4a, 0xa9, 0x54, 0xc, 0x82, 0xda, 0x9c, 
-	0xa2, 0x16, 0x17, 0xd, 0x4e, 0xad, 0x4d, 0xed, 0x27, 0x83, 
-	0x6c, 0xad, 00, 0xf8, 0xce, 0xf5, 0xeb, 0xdf, 0x7e, 0xfe, 
-	0xb5, 0xd7, 0x5e, 0xf7, 0x4, 0xff, 0xd6, 0x15, 0xe2, 0x5d, 
-	0x10, 0x12, 0x60, 0xef, 0xd8, 0xb1, 0x73, 0xdf, 0x13, 0x4f, 
-	0x3c, 0xfe, 0x3e, 0xa, 0x21, 0x83, 0x83, 0x62, 0x79, 0xb4, 
-	0xfd, 0x70, 0xeb, 0xd6, 0x4d, 0xbf, 0xda, 0xbb, 0xef, 0x2a, 
-	0xec, 0xea, 0x3a, 0xc9, 0x42, 0xd2, 0x3c, 0xff, 0xc9, 0x9a, 
-	0xd5, 0xe6, 0x95, 0x38, 0xb3, 0x2c, 0x39, 0xcc, 0x8e, 0x38, 
-	0xf9, 0x98, 0x58, 0x34, 0x6, 0x57, 0xe5, 0x4c, 0xd4, 0x1a, 
-	0x9b, 0x26, 0x3d, 0x9, 0x76, 0xb5, 0x1a, 0xf3, 0xf5, 0x6f, 
-	0xa8, 0xf8, 0x25, 0x4b, 0x24, 0xda, 0x90, 0x7c, 0xd6, 0x2f, 
-	0xfb, 0xde, 0x1c, 0xa0, 0x25, 0xb8, 0x29, 0x63, 0x2, 0x40, 
-	0xfa, 0x94, 0x9, 0xab, 0x2c, 0xe, 0x29, 0xd1, 0x10, 0x91, 
-	0xb8, 0x24, 0x18, 0xca, 0x8e, 0x3f, 0x89, 0x14, 0xc8, 0xc3, 
-	0x2a, 0xd7, 0x21, 0x5e, 0x19, 0xd2, 0x2d, 0xe0, 0x2b, 0x1a, 
-	0x9a, 0x9b, 0x9b, 0xd4, 0x43, 0x69, 0x6e, 0x51, 0xb8, 0x61, 
-	0xd3, 0xa2, 0xb0, 0x85, 0x25, 0x8b, 0xca, 0x17, 0x60, 0x8b, 
-	0x49, 0x60, 0x7, 0xd3, 0x2e, 0xc3, 0x7, 0xf1, 0x7e, 0xc4, 
-	0x24, 0x4c, 0x15, 0x40, 0xb, 0xb8, 0x59, 0x9, 0x5c, 0xb8, 
-	0x32, 0x12, 0x2b, 0xb2, 0x24, 0xf, 0xfa, 0x92, 0xfe, 0xff, 
-	0x67, 0xef, 0x3c, 00, 0xe5, 0xaa, 0xad, 0xf4, 0x7f, 0x67, 
-	0x5e, 0x75, 0xef, 0xc6, 0xc6, 0xc6, 0xf8, 0xd9, 0x60, 0xd3, 
-	0x5b, 0x68, 0x81, 0x40, 0x8c, 0xe9, 0xc5, 0xb4, 00, 0x9, 
-	0x29, 0x1b, 0xb2, 0x29, 0x9b, 0x6c, 0x7a, 0x1, 0x92, 0x6c, 
-	0x28, 0x9, 0x4, 0x8, 0x21, 0x5b, 0xd9, 0x4d, 0x1, 0x7, 
-	0x96, 0x9a, 0xb0, 0xf4, 0x1e, 0x30, 0xc5, 0x74, 0x1b, 0x9b, 
-	0x62, 0x7a, 0x33, 0xa6, 0x1a, 0xb0, 0x1, 0x1b, 0x1b, 0x5c, 
-	0x5e, 0x99, 0xff, 0xf7, 0xd3, 0xcc, 0x37, 0x4f, 0x33, 0x6f, 
-	0xe6, 0xbd, 0x99, 0x79, 0xcf, 0x90, 0xdd, 0x7f, 0x64, 0xeb, 
-	0x49, 0xa3, 0xab, 0x7b, 0x24, 0x1d, 0x9d, 0x4f, 0xe7, 0x48, 
-	0x57, 0x57, 0x97, 0xf2, 00, 0xb7, 0x3a, 0x5a, 0x6f, 0x3, 
-	0xf6, 0xad, 0xd6, 0x86, 0x9, 0x2e, 0x13, 0x80, 0xeb, 0xfb, 
-	0x57, 0x1c, 0xf8, 0x70, 0xf2, 0x31, 0xd9, 0x33, 0xd9, 0x6e, 
-	0xc9, 0x31, 0x9, 0xfe, 0x1, 0x66, 0xe6, 0x49, 0x78, 0xc0, 
-	0x6d, 0xe7, 0xce, 0x8a, 0x55, 0x49, 0xea, 0xba, 0xeb, 0xae, 
-	0x9b, 0x93, 0xeb, 0x87, 0xa3, 0xe, 0x39, 0xe4, 0x90, 0xba, 
-	0x91, 0x23, 0xb1, 0xd2, 0x3e, 0x64, 0x27, 0x1e, 0xb6, 0x6b, 
-	0xe5, 0x79, 0xe9, 0x3, 0xf, 0x24, 0xb, 0xee, 0xbe, 0xbb, 
-	0x7d, 0xe8, 0xab, 0xaf, 0x2d, 0xdf, 0x65, 0xe9, 0x5b, 0xfd, 
-	0xf5, 0x6, 0xc7, 0xc7, 0xf5, 0xd1, 0x80, 0xd7, 0x2e, 0x7c, 
-	0xf2, 0xc9, 0xbb, 0x96, 0xac, 0x5c, 0xb9, 0x42, 0x8f, 0xbf, 
-	00, 0x78, 0x98, 0x66, 0x5c, 0xaa, 0x27, 0x3, 0x5f, 0xdf, 
-	0x76, 0xeb, 0xc7, 0x75, 0x28, 0x30, 0x3, 0xdb, 0xc8, 0xb4, 
-	0x1a, 0x21, 0x80, 0x27, 0x73, 0xf5, 0xa6, 0xd7, 0x42, 0x3d, 
-	0xa6, 0xba, 0xe4, 0x89, 0x27, 0x93, 0x3a, 0x69, 0xe2, 0xc5, 
-	0xda, 0x9c, 0x32, 0x66, 0xe0, 0x80, 0x64, 0xe5, 0xda, 0xd6, 
-	0x84, 0xaf, 0x8b, 0x70, 0x2a, 0xcb, 0x9e, 0x1a, 0x4, 0xec, 
-	0xf4, 0xce, 0x6a, 0x52, 0xa7, 0xe7, 0xd7, 0xf5, 0x35, 0x3e, 
-	0x33, 0x67, 0xff, 0xbb, 0xf6, 0x1f, 0xf0, 0x71, 0xbf, 0x34, 
-	0xd3, 0xbd, 0x78, 0xd1, 0xb, 0xb9, 0xc0, 0xf2, 0xa4, 0xdf, 
-	0x8, 0x6b, 0x75, 0xc8, 0x2b, 0xb4, 0x19, 0xf8, 0xd8, 0xd7, 
-	0x8e, 0x9c, 0x59, 0xb6, 0x2d, 0x13, 0xb5, 0xd0, 0x6, 0x5f, 
-	0x9a, 0xee, 0x6d, 0xae, 0x7b, 0xc1, 0xa9, 0xe7, 0xdc, 0x36, 
-	0xc9, 0xc1, 0x9e, 0x65, 0xa6, 0xe4, 0xbc, 0xbb, 0x5b, 0x70, 
-	0xe7, 0x2a, 0x14, 0x13, 0x21, 0x5e, 0x2f, 0x6, 0x35, 0xab, 
-	0xf2, 0x13, 0x35, 0x62, 0xe5, 0xb2, 0x54, 0x1f, 0xd0, 0x68, 
-	0x5c, 0x3c, 0xc2, 0x9, 0x78, 0x1d, 0x6a, 0x10, 0xc9, 0xb5, 
-	0x73, 0x9a, 0xbb, 0xe5, 0xcc, 0x54, 0x3, 0xdb, 0x5a, 0x9b, 
-	0xdd, 0x68, 0xea, 00, 0xbd, 0xc2, 0x38, 0xa1, 0xd7, 0x65, 
-	0x64, 0x4b, 0xca, 0xfe, 0x8d, 0xcb, 0xa3, 0x4c, 0xe6, 0xe0, 
-	0x7a, 0xb3, 0xc, 0x80, 0x9f, 0xa2, 0xad, 0xaa, 0x53, 0xce, 
-	0x3a, 0xeb, 0xac, 0xff, 0xcc, 0xe5, 0xa7, 0xe1, 0x2c, 0x88, 
-	0x10, 0x2, 0x64, 0xe2, 0x84, 0xf6, 0x81, 0x31, 0x2c, 0xfc, 
-	0x68, 0xe4, 0xe6, 0x71, 0xc8, 0x30, 0x6d, 0x73, 0x7d, 0x56, 
-	0xb, 0x33, 0x3a, 0x5d, 0x30, 0xf9, 0x94, 0x5e, 0x1e, 0xa9, 
-	0x53, 0x9a, 0xa2, 0x1f, 0x8e, 0x5b, 0xf3, 0xc6, 0xe2, 0xe4, 
-	0xad, 0x5b, 0x67, 0x25, 0xef, 0xde, 0x7f, 0x5f, 0xc2, 0x4b, 
-	0xe3, 0xa3, 0x33, 0x19, 0x84, 0x6b, 0x24, 0xc7, 0xe2, 0xe4, 
-	0x6a, 0xd0, 0x76, 0xc8, 0xc6, 0x1b, 0x1d, 0xfd, 0xea, 0x8a, 
-	0x95, 0x37, 0xdf, 0xbc, 0xe8, 0x85, 0xff, 0x3e, 0xf7, 0xe1, 
-	0x5, 0xcc, 0x21, 0x30, 0xd3, 0xd7, 0x7c, 0xf2, 0xa2, 0x4b, 
-	0x8e, 0xf9, 0xfa, 0x36, 0xdb, 0xc, 0x38, 0x66, 0xab, 0x2d, 
-	0x5f, 0xcc, 0xe5, 0x4d, 0x38, 0x35, 0x5, 0x7f, 0xd0, 0x46, 
-	0x1b, 0x85, 0xf7, 0xb4, 0x9f, 0xd6, 0xe1, 0x12, 0x9b, 0x8c, 
-	0x18, 0x9e, 0xf0, 0x82, 0x88, 0x4e, 0x39, 0x75, 0xb6, 0x7c, 
-	0x38, 0xf2, 0xcb, 0x5f, 0x49, 0x34, 0x7, 0xcc, 0xff, 0xae, 
-	0x36, 0xa2, 0xd5, 0xec, 0x94, 0xf8, 0x17, 0x80, 0xc7, 0x93, 
-	0x11, 0x6, 0x77, 0x3, 0xdc, 0xb, 0x5e, 0xf4, 0x57, 0x6f, 
-	0x57, 0xcf, 0x25, 0xb7, 0x19, 0xbd, 0xd6, 0xcb, 0x96, 0xd4, 
-	0xb4, 0x81, 0x6d, 0xd9, 0x46, 0x36, 0x88, 0x53, 0x5e, 0x35, 
-	0xe, 0x7c, 0xe9, 0xde, 0xb1, 0xaa, 0x1b, 0x78, 0x8b, 0xc1, 
-	0x1d, 0x3, 0x3c, 0xcc, 0xbb, 0x95, 0x2f, 0xc8, 0x4d, 0x4c, 
-	0xbf, 0x12, 0x70, 0x7b, 0x74, 0x80, 0x60, 0xf0, 0x5a, 0x84, 
-	0xda, 0x54, 0x9a, 0x7b, 0xad, 0x98, 0x54, 0xc9, 0xfd, 0x71, 
-	0x79, 0x5, 0x71, 0x1a, 0x4c, 0x9d, 0xcc, 0xc, 0x69, 0xbc, 
-	0x60, 0xde, 0x14, 0x64, 0xea, 0xe5, 0xf, 0xe8, 0x53, 0x8e, 
-	0x4d, 0x26, 0x6d, 0x6e, 0xc8, 0x4c, 0xd4, 0x2b, 0x93, 0x1a, 
-	0x69, 0xfb, 0xc, 0xdc, 0x94, 0x11, 0xb7, 0x83, 0x38, 0xe5, 
-	0xb1, 0x8a, 0x3e, 0x69, 0xd2, 0x64, 0xad, 0xd0, 0x36, 0x7c, 
-	0xe9, 0xe4, 0x93, 0x4f, 0x1e, 0x27, 0xff, 0x4f, 0x6a, 0xe, 
-	0x3d, 0xcc, 0xfc, 0x14, 0x30, 0xa3, 0xb9, 0x1d, 0x2a, 0x9a, 
-	0x64, 0x18, 0xf9, 0xf, 0x3d, 0xf4, 0xd0, 0x4f, 0xa8, 0x63, 
-	0xf7, 0x51, 0xa7, 0xe, 0xa5, 0x63, 0xa5, 0x75, 0x52, 0x68, 
-	0x85, 0x47, 0x1f, 0x7d, 0x84, 0x95, 0xf4, 0xed, 0xe, 0x3f, 
-	0xfc, 0x30, 0x29, 0xb3, 0xe1, 0xe4, 0x5f, 0xa7, 0x6e, 0xf9, 
-	0xa3, 0x8f, 0x24, 0x8b, 0xfe, 0xeb, 0xbf, 0xe2, 0x32, 0x4a, 
-	0xf1, 0x2c, 0xc8, 0xc0, 0xf8, 0x41, 0x3, 0xf, 0xfa, 0xca, 
-	0x96, 0x5b, 0x1f, 0xb4, 0xcb, 0xd8, 0xf1, 0x5f, 0xfd, 0xfb, 
-	0x1b, 0x6f, 0xbc, 0x5e, 0x37, 0xd1, 0xb6, 0xf6, 0xdf, 0x3d, 
-	0xf2, 0xc8, 0x8a, 0xbd, 0x5a, 0x5a, 0xbe, 0xdc, 0xda, 0xde, 
-	0xde, 0x38, 0x69, 0xd8, 0xd0, 0xff, 0x54, 0xfd, 0x83, 0x84, 
-	0xfb, 00, 0x6, 0x80, 0x8d, 0x2b, 0x6, 0xf6, 0x90, 0x43, 
-	0xe, 0x4d, 0xf4, 0xb0, 0xba, 0x57, 0xc0, 0x86, 0x2e, 0x40, 
-	0xd6, 0x23, 0x5b, 0xbd, 0x9f, 0xfe, 0x34, 0x73, 0xef, 0xa0, 
-	0xbd, 0xe9, 0x1b, 0x6, 0x4f, 0x83, 0xaf, 0x5a, 0xd0, 0x41, 
-	0xb7, 0xd8, 0xa1, 0x65, 0xd5, 0x67, 0x19, 0x16, 0xf0, 0x90, 
-	0x67, 0xca, 0xa0, 0xec, 0xb8, 0xc, 0xe2, 0xd5, 0x94, 0xc5, 
-	0xfd, 0xc2, 0x59, 0x9b, 0x68, 0x4f, 0xd6, 0x7e, 0x9, 0x3e, 
-	0x67, 0x5, 0xaf, 0xf1, 0x31, 0xb8, 0x4b, 0xf5, 0x49, 0xa8, 
-	0x5e, 0x4f, 0xe0, 0xf4, 0x8d, 0x74, 0x8, 0x3e, 0x80, 0x5b, 
-	0x66, 0xc8, 0xd6, 0x5a, 0xf4, 0x22, 0x5e, 0xb5, 0x43, 0xf0, 
-	0xf1, 0x34, 0x94, 0xd0, 0xc0, 0x66, 0x1b, 0x1f, 0xe6, 0x2c, 
-	0x1a, 0xaf, 0xb7, 0x2e, 0x2e, 0x3, 0xfa, 0xf6, 0xcc, 0xbb, 
-	0x30, 0x9f, 0x64, 0xaa, 0x5, 0x1, 0xeb, 0x6d, 0x39, 0xbe, 
-	0xdf, 0xed, 0xa1, 0x4d, 0xee, 0x58, 0xe2, 0xda, 0x9d, 0xc6, 
-	0x26, 0x96, 0xba, 0xa3, 0x8f, 0xfe, 0x4c, 0x72, 0xc3, 0xd, 
-	0x37, 0xee, 0x7e, 0xc2, 0x9, 0x27, 0x1c, 0x7b, 0xca, 0x29, 
-	0xa7, 0xfc, 0xda, 0xf7, 0x29, 0xc4, 0x44, 0x67, 0x61, 0x8d, 
-	0x51, 0xb7, 0x4d, 0xb, 0x40, 0xfd, 0xb5, 0xe2, 0xfe, 0xd, 
-	0x6d, 0x6d, 0xdc, 0x52, 0x6f, 0x1d, 0xad, 0x27, 0xa0, 0xb7, 
-	0x4a, 0x8, 0x85, 0xed, 0x35, 0x3, 0xb4, 0xb, 0x6a, 0x90, 
-	0x56, 0xce, 0x57, 0x3f, 0xfb, 0xec, 0x33, 0xb, 0x2f, 0xbf, 
-	0xfc, 0x8a, 0x49, 0x47, 0x1e, 0x79, 0x44, 0x1d, 0x6f, 0x26, 
-	0xad, 0x2b, 0xf7, 0xd2, 0x1f, 0x7e, 0x9f, 0x2c, 0xd3, 0x39, 
-	0xe3, 0x76, 0x9c, 0x36, 0xfa, 0xc2, 0xbb, 0xcb, 0x52, 0x57, 
-	0xea, 0xb1, 0x16, 0xa7, 0xab, 0xe0, 0x9a, 0xf4, 0xee, 0xf6, 
-	0xa7, 0xa6, 0x4c, 0x4d, 0x26, 0xf, 0x1b, 0x9a, 0xe1, 0xc0, 
-	0x42, 0xd2, 0x36, 0x1b, 0x39, 0xe2, 0xb7, 0xb3, 0x3f, 0x77, 
-	0xf4, 0x8c, 0x4f, 0x5e, 0x7c, 0xe9, 0x97, 0xf8, 0x2d, 0x97, 
-	0x3a, 0xe2, 0xaa, 0xab, 0xfe, 0xa2, 0xb0, 0xf9, 0xe2, 0xef, 
-	0x7f, 0xff, 0xfe, 0x7e, 0x23, 0x46, 0xee, 0x30, 0xa9, 0xa3, 
-	0xad, 0x71, 0xcd, 0xf3, 0xcf, 0x67, 0x5a, 0x87, 0xd, 0x4f, 
-	0xd5, 0xbf, 0xfb, 0x4e, 0x92, 0x92, 0x11, 0xa0, 0xcd, 0xe9, 
-	0x49, 0x5a, 0xfd, 0x3f, 0x60, 0xfa, 0x9e, 0x49, 0x87, 0x4e, 
-	0x86, 0xe9, 0xa7, 0xf7, 0xbd, 0x7b, 0x63, 0x2a, 0x87, 0x92, 
-	0x73, 0x7f, 0xb4, 0xfe, 0x11, 0x76, 0xad, 0xd1, 0xff, 0x68, 
-	0x6e, 0x6b, 0x6f, 0xfa, 0xc8, 0x72, 0x48, 0x58, 0xd, 0xf0, 
-	0x62, 0xfa, 0xc4, 0x91, 0x5b, 0xb6, 0xa4, 0xf2, 0x74, 0x3, 
-	0xb, 0xc1, 0x72, 0x6d, 0x59, 0x24, 0xac, 0xc5, 0x81, 0x33, 
-	0x6d, 0x8c, 0xda, 0x44, 0x72, 0xc4, 0xb6, 0x65, 0x3, 0x3b, 
-	0xe0, 0x50, 0xbf, 0xe1, 0x39, 0xb2, 0x5c, 0x9d, 0x59, 0x2e, 
-	0xc6, 0x96, 0x4, 0xb6, 0x8, 0xd5, 0x9, 0x84, 0xfa, 0x2a, 
-	0xcb, 0xfa, 0xd1, 0x32, 0xa6, 0x52, 0x2b, 0x74, 0x6e, 0x64, 
-	0x31, 0x20, 0x78, 0x94, 0xa0, 0x86, 0xc0, 0x1, 0x97, 0x5b, 
-	0x21, 0xc5, 0xae, 0xd9, 0xcc, 0x50, 0x77, 0x1e, 0xa3, 0x28, 
-	0x9e, 0x45, 0x29, 0xe6, 0x47, 0x7d, 0xa9, 0xf5, 0x5c, 0x16, 
-	0x9d, 0x49, 0x9c, 0x72, 0x10, 0x1e, 0x4, 0xe9, 0xf1, 0xc7, 
-	0x9f, 0x68, 0xff, 0xe4, 0x27, 0x77, 0xf, 0x87, 0x2a, 0x7c, 
-	0xea, 0x53, 0x87, 0x37, 0x5f, 0x71, 0xc5, 0x95, 0x7, 0xeb, 
-	0xc8, 0xa6, 0xf4, 0xa9, 0xa7, 0x9e, 0x7a, 0x66, 0xae, 0x9d, 
-	0x6e, 0x2f, 0x66, 0x6c, 0xc7, 0xb4, 0x69, 0xd3, 0x8e, 0x50, 
-	0xdd, 0xb6, 0x96, 0xc5, 0xdb, 0x5f, 0x87, 0x34, 0xde, 0x2b, 
-	0x81, 0x59, 0x29, 0x60, 0x37, 0x88, 0x37, 0xcd, 0x1a, 0x28, 
-	0xb4, 0x70, 0xdc, 0xb4, 0x99, 0xda, 0xd0, 0x20, 0x80, 0xbf, 
-	0x70, 0xd5, 0x55, 0x57, 0x4f, 0x46, 0x83, 0x33, 0x20, 0xf6, 
-	0xb5, 0x7b, 0xe7, 0x81, 0xfb, 0x93, 0x15, 0x4f, 0x3f, 0xad, 
-	0x1a, 0x61, 0x54, 0x24, 0xc9, 0x13, 0xe2, 0xdb, 0x39, 0x8f, 
-	0x3e, 0x9a, 0x7a, 0x40, 0xc7, 0x30, 0x15, 0xbb, 0xeb, 0xf4, 
-	0x6a, 0xea, 0xce, 0xe3, 0xd6, 0x4f, 0x7d, 0x55, 0x47, 0x1a, 
-	0x6d, 0x9e, 0xb5, 0xd4, 0xeb, 0x1b, 0xeb, 0xea, 0x77, 0xbb, 
-	0xee, 0xa8, 0x4f, 0x1d, 0x35, 0xe3, 0xb2, 0x2b, 0x98, 0x4a, 
-	0x20, 0x90, 0xfd, 0x4e, 0x39, 0xe5, 0xd4, 0x9f, 0xad, 0x19, 
-	0x37, 0x6e, 0xbb, 0x3, 0xf, 0x3f, 0xac, 0x51, 0xe7, 0x47, 
-	0x27, 0xcf, 0x3f, 0xfa, 0x68, 0x32, 0xef, 0xd1, 0x47, 0x3b, 
-	0xb6, 0x11, 0xf0, 0xd2, 0x5a, 0x4d, 0xc7, 0xe6, 0xd4, 0x5e, 
-	0x66, 0xa9, 0xf0, 0x41, 0x49, 0x93, 0x34, 0x16, 0x7c, 0x44, 
-	0xbb, 0x76, 0x8a, 0x61, 0x71, 0xc9, 0x95, 0xff, 0x66, 0x1a, 
-	0x3, 0xf0, 0x78, 0xfc, 0x9, 0xf0, 0xdc, 0x47, 0xc, 0xf4, 
-	0x6, 0x37, 0x7d, 0xd7, 0x5b, 0xc7, 0xca, 0xbc, 0x68, 0x87, 
-	0x85, 0x35, 0xe8, 0x1a, 0xe0, 0xbd, 0x29, 0x43, 0x38, 0x6b, 
-	0xd0, 0x20, 0xbe, 0xa5, 0xea, 0x66, 0x5e, 0x1a, 0xe0, 0x56, 
-	0xb8, 0x65, 0x1, 0xde, 0x93, 0x6, 0xe3, 0x46, 0x7b, 0x13, 
-	0xab, 0x17, 0xc3, 0x37, 0xeb, 0xed, 0x7c, 0x1b, 0x66, 0xba, 
-	0xd1, 0x84, 0xa2, 0xc9, 0xeb, 0x9d, 0xbd, 0x6, 0xb6, 0x3b, 
-	0xc8, 0xf4, 0x61, 0x30, 0x3e, 0xd7, 0xa1, 0xe1, 0x68, 0x64, 
-	0xe7, 0xe9, 0x8b, 0xd0, 0xe5, 0x10, 0x2, 0x68, 0xb, 0xe, 
-	0x47, 0x35, 0x9, 0x9c, 0x69, 0xe, 0x9a, 0xa0, 0x1c, 0xcc, 
-	0x6d, 00, 0xde, 0xd2, 0x32, 0xe9, 0x20, 0x34, 0xb8, 0x92, 
-	0x78, 0xd2, 0x80, 0x67, 0xa2, 0xd9, 0xa0, 0x77, 0x9b, 0xb7, 
-	0x92, 0x9, 0xb6, 0x8b, 0x3a, 0x72, 0xf0, 0xf4, 0xe9, 0xd3, 
-	0xef, 0xd4, 0xd4, 0xe1, 0x2d, 0x9, 0xe4, 0x5a, 0xb4, 0xb7, 
-	0xd2, 0x57, 0x2b, 0x7d, 0xb9, 0x5e, 0x6b, 0x7c, 0x58, 0xe0, 
-	0x67, 0x3a, 0xb4, 0xe6, 0x91, 0x47, 0x1e, 0x9e, 0x77, 0xe5, 
-	0x95, 0x57, 0xb5, 0x2d, 0x5b, 0xb6, 0x5c, 0xb7, 0xf7, 0x9d, 
-	0xd3, 0x77, 0x6b, 0x93, 0x57, 0xce, 0x3b, 0x2f, 0x69, 0xcf, 
-	0xed, 0x2a, 0x9b, 0xad, 0x93, 0x58, 0x4e, 0x7b, 0xe4, 0xd1, 
-	0xa4, 0x14, 0xb0, 0x5d, 0xea, 0xe3, 0x3a, 0xcb, 0xed, 0xa4, 
-	0x7, 0xe6, 0x24, 0x77, 0xbe, 0xfc, 0x4a, 0x48, 0x52, 0x83, 
-	0x87, 0x8d, 0x6a, 0xee, 0xff, 0xdb, 0xe9, 0x1b, 0x6d, 0xc4, 
-	0x4b, 0xd7, 0xfd, 0x1, 0xb6, 0xd6, 0xf, 0x8e, 0xd2, 0x60, 
-	0xd4, 0xf, 0x3e, 0xd4, 0xe9, 0x49, 0xc5, 0x54, 0xbd, 0xc1, 
-	0x35, 0x78, 0xc4, 0xc8, 0x64, 0x41, 0x2a, 0xd5, 0xb1, 0x4a, 
-	0x7a, 0x64, 0xb5, 0xd2, 0xd7, 0xa, 0xcc, 0xee, 0x2f, 0x64, 
-	0xc2, 0xf2, 0xe1, 0x72, 0x7a, 0x13, 0x6a, 0xb3, 0x15, 0xb7, 
-	0x87, 0x57, 0x34, 0xe9, 0x23, 0xcb, 0x44, 0x5c, 0xe, 0x7d, 
-	0xd8, 0x1b, 0x27, 0xf3, 0x99, 0xa3, 0xc0, 0x98, 0x77, 0xe7, 
-	0x81, 0x4d, 0x1c, 0xba, 0xf6, 0x94, 0x57, 0x8d, 0x3, 0x67, 
-	0xea, 0xef, 0x16, 0xdd, 0x3, 0xa8, 0xd, 0x6c, 0x34, 0xb7, 
-	0xf1, 0x58, 0x16, 0x33, 0x95, 0x80, 0xdb, 0x44, 0x8, 0x79, 
-	0xbe, 0x3d, 0x46, 0xe6, 0x4b, 0x33, 0xcf, 0x74, 0x7b, 0xe3, 
-	0xdc, 0x71, 0x66, 0x84, 0x80, 0x90, 0x11, 0xcd, 0xb2, 0x15, 
-	0xad, 0xb4, 0xac, 0x98, 0x89, 0xc4, 0xdd, 0x89, 0x74, 0xa8, 
-	0x1e, 0x7f, 0xa5, 0x24, 0x64, 0xbd, 0x2e, 0xc3, 0x75, 0x89, 
-	0xcb, 0x82, 0x3e, 0x1e, 0x80, 0x33, 0xc5, 0x58, 0xb2, 0x64, 
-	0x69, 0x4a, 0xef, 0x3b, 0x17, 0x94, 0x65, 0x80, 0x4f, 0x9c, 
-	0xd8, 0x32, 0x43, 00, 0x3f, 0x4e, 0x74, 0x58, 0x49, 0x6, 
-	0xe0, 0x4d, 0x6a, 0xfb, 0xb6, 0xb2, 0x2a, 0x86, 0x4b, 0x8, 
-	0x9f, 0x16, 0x90, 0xdf, 0x57, 0x87, 0xb6, 0x2b, 0x7f, 0x5b, 
-	0xc, 0x70, 0xd5, 0x7f, 0xb5, 0x1e, 0xef, 0x3c, 0x2d, 0x80, 
-	0x37, 0x6b, 0x61, 0xf0, 0xbd, 0xd9, 0xb3, 0xef, 0xbc, 0x5e, 
-	0xa7, 0xaa, 0xb6, 0x31, 0xcf, 0xeb, 0x2b, 0xf7, 0xea, 0x25, 
-	0x17, 0x6b, 0x38, 0xcf, 0x56, 0x7b, 0xed, 0x36, 0xdb, 0x24, 
-	0xdf, 0xba, 0xee, 0xba, 0xe4, 0x7e, 0x1d, 0xba, 0xa0, 0x15, 
-	0x67, 0xe, 0xb1, 0x28, 0x28, 0x86, 0x35, 0x35, 0x7d, 0xf, 
-	0x2e, 0x9c, 0x83, 0xf6, 0xad, 0xe3, 0x8e, 0x4b, 0xfe, 0x59, 
-	0xdf, 0xc0, 0xe6, 0x23, 0x3, 0x38, 0xd, 0xd6, 0x1d, 0x3f, 
-	0xde, 0x7e, 0xbb, 0x33, 0x4e, 0x3d, 0xf5, 0x97, 0x5, 0xc0, 
-	0x8e, 0x9, 0xec, 0xb1, 0xc7, 0x34, 0x9d, 0x64, 0xd2, 0xc6, 
-	0xe7, 0x7a, 0xa, 0xde, 0xc1, 0xc6, 0xf2, 0x81, 0xb7, 0x96, 
-	0x91, 0xf8, 0x9e, 0x5a, 0xe3, 0xd2, 0x80, 0x29, 0xe4, 0xcb, 
-	0x56, 0x95, 0xe5, 0xce, 0xa1, 0xfb, 0xb2, 0x56, 0xfa, 0xdc, 
-	0x7, 0x7d, 0x59, 0x9, 0x5a, 0x77, 0xec, 0xdc, 0x4a, 0xed, 
-	0x76, 0x54, 0xb, 0x6a, 0xd7, 0x43, 0x34, 0xe1, 0x65, 0xa3, 
-	0x2c, 0x34, 0x56, 0xaf, 0xd, 0x70, 0xb0, 0x68, 0x80, 0xd3, 
-	0x59, 0xca, 0x92, 0xeb, 0x34, 0xdf, 0xa8, 0xb0, 0x12, 0x70, 
-	0x93, 0x3d, 0xf, 0x70, 0x81, 0x70, 0x8a, 0x84, 0x8b, 0x15, 
-	0xde, 0xaa, 0x9d, 0x19, 0x8, 0x43, 0xe3, 0x46, 0xb3, 0x58, 
-	0xa4, 0x43, 0xe1, 0xd8, 0x2e, 0x58, 0x35, 0xcd, 0xe2, 0x1b, 
-	0x5c, 0x6, 0x21, 0xe5, 0x98, 0xd1, 0x8, 0x90, 0x16, 0xa7, 
-	0xfa, 0x64, 0x4e, 0xef, 0x32, 0x5d, 0x86, 0x43, 0xc0, 0x2d, 
-	0x33, 0x9a, 0x53, 0x54, 0xda, 0x5b, 0x5a, 0x5a, 0x4a, 0xbe, 
-	0xf8, 0x52, 0x2, 0xe0, 0xb2, 0x45, 0x93, 0xfe, 0x1a, 0x30, 
-	0x5b, 0x4, 0xe8, 0x66, 0x9, 0x21, 0xab, 0xcd, 0x98, 0xa4, 
-	0xe1, 0xc0, 0x87, 0x62, 0x80, 0xb, 0x50, 0x4b, 0x5, 0xf2, 
-	0x8c, 0x6, 0x82, 0xfe, 0x7a, 0x19, 0xe5, 0xae, 0xd9, 0xb3, 
-	0xef, 0xba, 0x51, 0xe6, 0x7e, 0x1b, 0x8f, 0x11, 0xfb, 0xc2, 
-	0xad, 0xc4, 0x1c, 0x7, 0x58, 0x5a, 0xd9, 0xdd, 0xee, 0x2b, 
-	0x5f, 0x49, 0x8e, 0x3f, 0xfe, 0xf8, 0xf0, 0x96, 0x1a, 0xed, 
-	0xf9, 0xfa, 0xd7, 0xc3, 0x96, 0xf1, 0x7c, 0x31, 0xda, 0x1e, 
-	0x1b, 0xae, 0x6b, 0x45, 0x3a, 0xa4, 0xbd, 0xa5, 0x41, 0x8d, 
-	0x23, 0x8c, 0x39, 0xb5, 0x54, 0x3c, 0x49, 0xf7, 0xeb, 0xd7, 
-	0x7f, 0x7f, 0xb5, 0xe7, 0xd3, 0xd6, 0xd8, 0xf9, 0x1b, 0x73, 
-	0x11, 0xcc, 0xe5, 0x96, 0x96, 0x89, 0x99, 0x85, 0xb, 0x5f, 
-	0xc, 0xaf, 0x68, 0xc2, 0xbb, 0xd8, 0xfa, 0xa1, 0xef, 0xf0, 
-	0xf0, 0xb7, 0xb7, 0x4e, 0x72, 0x1b, 0x16, 0xb8, 0x18, 0x78, 
-	0x3d, 0x10, 0x13, 0xc6, 0xb2, 0xd8, 0xdb, 0x72, 0x90, 0xdf, 
-	0x27, 0x9f, 0x7c, 0x32, 0x2c, 0x7e, 0x5a, 0xf6, 0xe2, 0x36, 
-	0xd4, 0x4a, 0x5f, 0x78, 0x6b, 0x13, 0xb8, 0x5b, 0xc4, 0x3, 
-	0xc0, 0x5d, 0xc, 0xec, 0xb2, 0x18, 0x2e, 0x7b, 0x41, 0x44, 
-	0xac, 0x75, 0xc, 0xec, 0x30, 0x89, 0xd7, 0xbc, 0x62, 0x3, 
-	0x31, 0x8a, 0x29, 0x52, 0xd5, 0x2e, 0x6e, 0x1c, 0x71, 0x1a, 
-	0xce, 0x89, 0x19, 0x9c, 0x80, 0x99, 0x64, 0x56, 0x85, 0xc5, 
-	0x88, 0xaa, 0x89, 0x96, 0xb8, 0xc1, 0xb4, 0x61, 0xb0, 0xbd, 
-	0x3a, 0x35, 0x23, 0x41, 0xeb, 0xbd, 0x94, 0xe4, 0xca, 0xa3, 
-	0xc, 0xfb, 0x58, 0x20, 0x11, 0x1e, 0xd, 0x56, 0xe9, 0x9d, 
-	0x76, 0xda, 0xd1, 0xfc, 0xeb, 0x52, 0xc3, 0x8, 0xe0, 0x7, 
-	0xe7, 0x34, 0x38, 0xda, 0x9b, 0x57, 0x9d, 0xea, 0x5, 0xf2, 
-	0x76, 0xf1, 0x25, 0xdc, 0x5b, 0xa, 0xe0, 0x2, 0xf5, 0x2a, 
-	0xd, 0x52, 0xad, 0x1a, 0x8, 0xf4, 0xbd, 0xf8, 0xe6, 0x55, 
-	0x97, 0x5d, 0xf6, 0xa7, 0xdb, 0xee, 0xb9, 0xe7, 0xee, 0x9b, 
-	00, 0xb8, 0x5e, 0x31, 0xed, 0x52, 0x56, 0x35, 0x9, 0x6f, 
-	0xdd, 0x7b, 0x4f, 0x22, 0x3b, 0x3f, 0xf0, 0x68, 0xb5, 0xe6, 
-	0xa8, 0x3, 0xf4, 0xe2, 0x87, 0x16, 0x73, 0x2, 0xf, 0xb5, 
-	0xa0, 0xc3, 0x42, 0x64, 0x1, 0xb9, 0xf3, 0xcf, 0x3f, 0x5f, 
-	0x53, 0x8d, 0x4f, 0x85, 0x17, 0x34, 0x7c, 0x81, 0x93, 0x4e, 
-	0xfd, 0xaa, 0x67, 0x63, 0x47, 0x47, 0xff, 0x7d, 0xa6, 0x6e, 
-	0x1c, 0x4c, 0x71, 0x5f, 0x2f, 0xe, 0xf5, 0xa5, 0x4b, 0x4e, 
-	0x11, 0xcd, 0x6b, 0x6f, 0x34, 0x2b, 0xa0, 0x33, 0x28, 0x8, 
-	0xe1, 0x73, 0x5f, 0x38, 0x59, 0x6d, 0x68, 0xd5, 0xb0, 0x93, 
-	0xcc, 0x72, 0x1, 0x7d, 0xe2, 0xb8, 0xde, 0x96, 0x13, 0xb6, 
-	0xa, 0x4b, 0x8e, 0xf5, 0xf6, 0x5f, 0x18, 0xe4, 0xa1, 0x8d, 
-	0xb7, 0x9c, 0x38, 0xac, 0xb6, 0x2d, 0xb2, 0x98, 0xea, 0xd5, 
-	0xd7, 0x3c, 0xf, 0xb4, 0xe6, 0x36, 0xc8, 0xc1, 0x26, 0xb2, 
-	0x52, 0x12, 0xc7, 0x25, 0x13, 0xa3, 0xc2, 0x63, 0x60, 0x87, 
-	0xb8, 0xa, 0xd9, 0x50, 0xa3, 0x48, 0xd7, 0x7, 0x92, 0xd1, 
-	0x4d, 0xdd, 0x45, 0xdd, 0x40, 0x1a, 0xd, 0x28, 0x74, 0x12, 
-	0x49, 0xd2, 0xdc, 0xd4, 0x96, 0xc, 0x19, 0x5c, 0xd3, 0xfa, 
-	0x5c, 0x97, 0xa2, 0xdc, 0x41, 0x84, 0x94, 0xe1, 0x51, 0x1a, 
-	0x40, 0xe9, 0xd9, 0x76, 0x4f, 0xed, 0xed, 0x42, 0xaf, 0x5c, 
-	0x82, 0xe9, 0xbb, 0x3d, 0x8, 0x25, 0x9a, 0xe7, 0xa5, 0x97, 
-	0x5e, 0xee, 0x60, 0x67, 0x14, 0x8f, 0xc1, 0xba, 0x73, 0x11, 
-	0xc0, 0x31, 0xd1, 0x7f, 0x2c, 0x33, 0x7b, 0xa9, 0xee, 0x6f, 
-	0x13, 0x88, 0x46, 0xaa, 0xce, 0x69, 0xd5, 0xbd, 0x24, 0xc0, 
-	0x75, 0xad, 0x5e, 0x5e, 0x6f, 0x4e, 0xb7, 0x2f, 0x91, 0x35, 
-	0x82, 0x96, 0x7f, 0x8f, 0xaf, 0xa2, 0x48, 0x6b, 0xdc, 0xac, 
-	0x55, 0x74, 0x1, 0x9c, 0x7d, 0x24, 0xd5, 0x3b, 0xac, 0xa7, 
-	0x39, 0xf, 0xcc, 0xe1, 0x2b, 0x6, 0xa1, 0xdc, 0xdb, 0x73, 
-	0x27, 0xaa, 0x30, 0x58, 0xe1, 0xb8, 0xce, 0xa2, 0x54, 0x25, 
-	0xee, 0xc, 0x6d, 0x76, 0xc1, 0x41, 0xab, 0x2e, 0x77, 0x9e, 
-	0x7a, 0xb9, 0xfb, 0xe0, 0x93, 0x1e, 0xad, 0xea, 00, 0x97, 
-	0xc5, 0x5, 0xda, 0xdb, 0x3, 0x26, 0x7d, 0x88, 0x87, 0xcf, 
-	0xbd, 0x75, 0x2a, 0x27, 0x9c, 0x6e, 0x83, 0x4c, 0x40, 0xbf, 
-	0x14, 0xc0, 0x29, 0xab, 0x37, 0xe, 0x39, 0x1e, 0x34, 0x20, 
-	0x85, 0x25, 0x1a, 0x14, 0x57, 0x5c, 0x7f, 0xcb, 0x4a, 0xb5, 
-	0xf4, 0x85, 0xb7, 0x6, 0x59, 0x6b, 0xbc, 0xc4, 0x81, 0x82, 
-	0x35, 0xb0, 0x6d, 0x96, 0x23, 0xd3, 0xf4, 0x59, 0xe8, 0x37, 
-	0x85, 0x79, 0x57, 0x52, 0xd8, 0x73, 0xf6, 0xbb, 0x6f, 0x20, 
-	0xc, 0xc0, 0x56, 0x58, 0xaf, 0x42, 0x5a, 0x7a, 0x12, 0xdc, 
-	0x3c, 0xf5, 0x32, 0x11, 0x1a, 0x9, 0x73, 0xe7, 0xcd, 0x9b, 
-	0x27, 0x55, 0xb5, 0x3a, 0x19, 0x3f, 0x6e, 0x98, 0x4c, 0xd0, 
-	0xfa, 0x2e, 0x95, 0x2b, 0x73, 0x7b, 0xd9, 0x64, 0x33, 0x8f, 
-	0x4e, 0x33, 0x53, 0x89, 0x3, 0x3a, 0x4c, 0xf2, 0xde, 0x2c, 
-	0x2, 0xc6, 0x85, 0xba, 0x1c, 0xca, 0xb0, 0xa6, 0xa1, 0x1c, 
-	0xe2, 0xb2, 0x44, 0x52, 0xdd, 0x69, 0xed, 0x98, 0x4e, 0xc, 
-	0x70, 0x69, 0x95, 0x9d, 0x5, 0xf0, 0x55, 0xda, 0x8, 0xc1, 
-	0x7, 0xc, 0x1a, 0xcb, 0x1, 0x7c, 0xd1, 0xa2, 0x45, 0x2d, 
-	0x2, 0xda, 0xa, 0x95, 0xf3, 0x82, 0x68, 0x61, 0x8b, 0xa3, 
-	0xae, 0xdf, 0xbb, 0xe4, 0x92, 0x8b, 0x6f, 0xbd, 0xf7, 0xde, 
-	0x7b, 0xfe, 0x72, 0xf9, 0xe5, 0x97, 0x57, 0xad, 0xc1, 0x1, 
-	0x2e, 0xef, 0x63, 0xaf, 0x7d, 0xee, 0xf9, 0xec, 0x84, 0x59, 
-	0x4, 0x97, 0xe8, 0xc4, 0x51, 0x9c, 0xd6, 0x58, 0x42, 0x8, 
-	0xef, 0x38, 0x1d, 0xa7, 0x12, 0xb7, 0x7e, 0xf4, 0xbe, 0xf5, 
-	0xca, 0x67, 0x9f, 0xe9, 0xf1, 0x96, 0x9d, 0x77, 0xde, 0x29, 
-	0x2d, 0x4b, 0x24, 0x98, 0xb3, 0xc8, 0x5, 0xde, 0xfd, 0x7, 
-	0xaf, 0x89, 0x13, 0xf6, 0xd6, 0xd1, 0x6, 0x56, 0xc8, 0x91, 
-	0x7, 0xfa, 0xb, 0x90, 0xe3, 0xdd, 0x9f, 0xe, 0x7b, 0x53, 
-	0xe, 0xed, 0xd8, 0x70, 0xc2, 0xc8, 0x8e, 0xa6, 0xc6, 0xb6, 
-	0x84, 0xcd, 0x33, 0x94, 0xe5, 0x36, 0xd0, 0xe, 0x9c, 0xc3, 
-	0x4a, 0xcb, 0x1, 0x6f, 0x5a, 0x54, 0x35, 0xb8, 0x83, 0x5, 
-	0xad, 0x7b, 0x6b, 0x3, 0x77, 0x51, 0xa1, 0x1e, 00, 0x4c, 
-	0x6c, 0x7d, 0x26, 0xf9, 0xb5, 0x3a, 0x1a, 0x4a, 0xe7, 0x61, 
-	0x8a, 0x67, 0x3a, 0x56, 0x48, 0x78, 0x6, 0x26, 0xfb, 0xed, 
-	0xb3, 0x73, 0xf8, 0x2a, 0x46, 0xad, 0x34, 0x7d, 0x1f, 0xb4, 
-	0xed, 0x2c, 0x1c, 0x74, 0x22, 0xe6, 0x2a, 0xf3, 0xd4, 0x12, 
-	0x6b, 0xe, 0xce, 0x5e, 0x55, 0xe8, 0xce, 0x72, 0x88, 0x80, 
-	0xd0, 0x89, 0x98, 0xae, 0xf0, 0x46, 0x73, 0xa4, 0x8a, 0xe9, 
-	0x45, 00, 0xdf, 0x51, 0xf5, 0x1b, 0x23, 00, 0x35, 0xce, 
-	0x99, 0x33, 0xe7, 0x63, 0xaa, 0x73, 0x73, 0x31, 0xc0, 0x65, 
-	0xee, 0xb5, 0xe8, 0x1d, 0xf4, 0xb1, 0xda, 0x88, 0xf3, 0xba, 
-	0x2c, 0x1e, 0x36, 0x8a, 0x18, 0xdc, 0x1, 0xe0, 0x17, 0x5f, 
-	0x7c, 0xf1, 0x2d, 0xf7, 0xdd, 0x77, 0xef, 0xad, 0x57, 0x5c, 
-	0x81, 0x6, 0xaf, 0xcc, 0x44, 0x37, 0xb0, 0xef, 0xbf, 0x7f, 
-	0xce, 0xc3, 0x4f, 0x3c, 0xfb, 0xcc, 0x63, 0xae, 0x78, 0xfa, 
-	0x83, 0xf7, 0x83, 0x49, 0x8e, 0xd9, 0xad, 0xa3, 0x9e, 0xc3, 
-	0x3b, 0xef, 0x3a, 0xf1, 0x34, 0xd9, 0x6e, 0xbb, 0xed, 0x12, 
-	0x7d, 0x5e, 0xa9, 0x5b, 0xcb, 0x64, 0x58, 0xbf, 0x66, 0x93, 
-	0x49, 0x9a, 0x46, 0xf7, 0xbc, 0xbb, 0x8c, 0x85, 0x3a, 0x16, 
-	0x54, 0x79, 0x54, 0xc5, 0x34, 0xcd, 00, 0x67, 0xb0, 0xa4, 
-	0xff, 0xaa, 0x5, 0x43, 0xbe, 0xf0, 0xa2, 0x8, 0xfd, 0x2f, 
-	0xcb, 0x33, 0x1c, 0xe2, 00, 0x5d, 0x7b, 0xfa, 0xcf, 0xf2, 
-	0x52, 0x74, 0x4b, 0xd5, 0x3f, 0xeb, 0xf4, 0xec, 0x7f, 0xbf, 
-	0x7d, 0x77, 0x4e, 0x8d, 0x1d, 0xa3, 0x93, 0x69, 0xea, 0x56, 
-	0x27, 0x3a, 0x91, 0x35, 0xf, 0x70, 0x88, 0xc5, 0x32, 0x5a, 
-	0x29, 0x71, 0xc0, 0xad, 0xe9, 0xda, 0x28, 0xe5, 0x8f, 0xb5, 
-	0xb6, 0x95, 0x2e, 0x64, 0x4a, 0x2a, 0x46, 0x3, 0xb7, 0x54, 
-	0x39, 0xbe, 0x99, 0x3c, 0x6, 0x36, 0x7, 00, 0xe, 0xaf, 
-	0x45, 0x73, 0xd3, 0x28, 0x3c, 0x20, 0x40, 0x48, 0xda, 0x5a, 
-	0x97, 0x27, 0xeb, 0x8d, 0xd2, 0x3e, 0xe2, 0x69, 0xdb, 0x26, 
-	0x83, 0x6, 0xea, 0x83, 0x6f, 0xd9, 0x3d, 0x10, 0xa5, 0xea, 
-	0x51, 0x55, 0x9a, 0x1, 0x47, 0x67, 0xb9, 0xf3, 0x24, 0x2c, 
-	0x3c, 0x66, 0xab, 0x8a, 0x4e, 0x4f, 0x99, 0x2d, 0xc, 0x94, 
-	0x81, 0x70, 0x20, 0x88, 0x2, 0x9d, 0x8e, 0x46, 0xde, 0xb2, 
-	0x24, 0xa3, 0xbb, 0xa3, 0x7, 0xc0, 0x8f, 0x38, 0xe2, 0x53, 
-	0xcd, 0x1b, 0x6c, 0x30, 0xa1, 0x45, 0xfc, 0x19, 0x29, 0xed, 
-	0x3d, 0x5c, 0x1f, 0x41, 0xd8, 0xeb, 0xbe, 0xfb, 0xee, 0xdb, 
-	0x5a, 0xe6, 0xdd, 0x44, 0xf1, 0x6b, 0x53, 0x7d, 0xa9, 0x64, 
-	0xba, 0x16, 0x6b, 0x36, 0xd6, 0x73, 0xee, 0x57, 0x74, 0x8, 
-	0xc1, 0xff, 0xe8, 0xa4, 0x97, 0xd7, 0x44, 0x13, 0x9b, 0x99, 
-	0xa5, 0x72, 0x90, 0x1c, 00, 0xae, 0x4f, 0xf, 0xdf, 0xac, 
-	0xfb, 0x66, 0x1, 0x70, 0x59, 0x2, 0x4a, 0x2e, 0xef, 0x62, 
-	0x60, 0x9f, 0x7f, 0xfe, 0x1f, 0x67, 0xe9, 0x43, 0xf7, 0x3c, 
-	0x6f, 0xf, 0xae, 0x21, 0x5d, 0x97, 0xe8, 0x2b, 0x2b, 0x89, 
-	0x3e, 0x60, 0x98, 0xcc, 0x9e, 0x3d, 0x9b, 0xf, 0x13, 0xa0, 
-	0xdd, 0xf9, 0xcc, 0x71, 0x48, 0xef, 0x4e, 0x6, 0x1a, 0x75, 
-	0x6f, 0xde, 0x65, 0x2a, 0x33, 0x73, 0xb5, 0xd7, 0x5f, 0xdb, 
-	0x36, 0x3b, 0xf4, 0x24, 0xae, 0x73, 0xa3, 0x9, 0x3c, 0x86, 
-	0xb7, 0x38, 0xf8, 0x5c, 0xb, 0x30, 0xf2, 0xf5, 0xc8, 0x45, 
-	0x72, 0x96, 0x48, 0x78, 0x24, 0x6, 0x4d, 0xf7, 0xa3, 0xe5, 
-	0xb3, 0xb7, 0x65, 0x68, 0xf, 0x7d, 0x90, 0xe7, 0x4f, 0xee, 
-	0xb6, 0x55, 0x32, 0x66, 0xb4, 0x96, 0x51, 0x3a, 0x56, 0x26, 
-	0x3a, 0x43, 0x2f, 0xc, 0x58, 0xb5, 0xd2, 0x86, 0xd7, 0xba, 
-	0x17, 0x8d, 0xa, 0x63, 0x63, 0x80, 0xdb, 0xa2, 0x46, 0xe6, 
-	0x30, 0xb8, 0xb, 0x64, 0xaf, 0x27, 0x70, 0xe7, 0x58, 0x92, 
-	0x35, 0xcb, 0xb5, 0x52, 0x3b, 0x22, 0xb7, 0xc8, 0xe3, 0xf4, 
-	0xaa, 0x42, 0x3a, 0xa, 0x60, 0xaf, 0x5d, 0xf3, 0x6e, 0x32, 
-	0x7a, 0xa4, 0x8e, 0x9, 0xde, 0xe3, 0x63, 0x32, 0x93, 0xa8, 
-	0x6b, 0xa8, 0x59, 0x55, 0xb4, 0x4a, 0x65, 0x76, 0x7, 0xb9, 
-	0xc3, 0x1c, 0xaa, 0xce, 0x19, 0x75, 0x6a, 0x77, 0x6d, 0x2d, 
-	0x45, 0xae, 0x64, 0x9a, 0xcb, 0xe0, 0x22, 0xed, 0x41, 0x40, 
-	00, 0x36, 0x42, 0x99, 0x4a, 0xa5, 0x53, 0x93, 0x26, 0x4d, 
-	0x2e, 0x79, 0x5f, 0x4f, 0x89, 00, 0x5c, 0x3b, 0xd9, 0x9a, 
-	0x4, 0xf0, 0x31, 0x2, 0xf8, 0x40, 0x1d, 0xd9, 0xb4, 0x42, 
-	0x60, 0x1e, 0x2d, 0xb, 0x67, 0x33, 0x1, 0x6b, 0x9c, 00, 
-	0xbf, 0x56, 0x9a, 0x6d, 0x81, 0xce, 0x7, 0xfb, 0x8d, 0x4e, 
-	0x4d, 0x9d, 0x2d, 0x7a, 0x6c, 0x61, 0xc5, 0x3, 0xf0, 0x58, 
-	0x83, 0xaf, 0xd0, 0x1, 0x8, 0x37, 0xe9, 0xd1, 0xd5, 0x6d, 
-	0x9a, 0x83, 0x87, 0x63, 0x93, 0x75, 0xbd, 0x8b, 0x33, 0xb0, 
-	0x79, 0xbb, 0xb, 0x60, 0x2b, 0xc3, 0x8a, 0x5, 0x3a, 0x99, 
-	0x55, 0x3b, 0xd1, 0xc2, 0x88, 0x30, 0x63, 0xa3, 0xc9, 0x89, 
-	0xe6, 0xf2, 0xe1, 0xe9, 0x2, 0xef, 0xbc, 0x6b, 0xe1, 0x2b, 
-	0x58, 0x40, 0x2a, 0x1b, 0x29, 0xa, 0x56, 0x8a, 0x89, 0xb2, 
-	0xc6, 0xa0, 0xaf, 0xb1, 0x84, 0x9f, 0x5c, 0x9b, 0xb1, 0xf1, 
-	0x46, 0x21, 0xae, 0xb7, 0x8b, 0x92, 0xfe, 0x93, 0xb3, 0x71, 
-	0xe7, 0x2d, 0x17, 0x4e, 0x9e, 0x3c, 0x9, 0xad, 0xaa, 0x23, 
-	0x8b, 0x3a, 0xf, 0x1c, 0x84, 0xa7, 0xf4, 0xa1, 0x81, 0x5d, 
-	0x2b, 0x38, 0xe2, 0x32, 0x91, 0x3, 0x59, 0x71, 0xa1, 0xef, 
-	0xe8, 0x3f, 0xcb, 0x88, 0x81, 0x4e, 0x19, 0xa4, 0xd5, 0xea, 
-	0x8c, 0xaf, 0x26, 0xc9, 0xf5, 0x1e, 0x9f, 0xdc, 0x26, 0x59, 
-	0x6f, 0xf4, 0x80, 0xa4, 0xa3, 0x7d, 0x45, 0x1, 0xc0, 0xab, 
-	0x6d, 0x87, 0x4c, 0x7d, 0xa6, 0x95, 0x1d, 0xb2, 0xa, 0x79, 
-	0x16, 0x19, 0x2b, 0xdb, 00, 0x6a, 0xa5, 0x15, 0x80, 0xda, 
-	0x75, 0xef, 0x49, 0xe0, 0xb9, 0x8e, 0xe7, 0x66, 0x9d, 0x6e, 
-	0x33, 0x78, 0x3, 0xd9, 0xfe, 0x35, 0x3d, 0x6, 0x3, 00, 
-	0x3a, 0x20, 0x30, 0x59, 0xf5, 0xc1, 0xdb, 0xc9, 0x88, 0xe1, 
-	0x4d, 0xc9, 0x5e, 0x7b, 0xee, 0x90, 0xf4, 0x1f, 0xd0, 0x9c, 
-	0xac, 0x55, 0xba, 0xa4, 0x25, 0x7b, 0xc, 0x89, 0x6b, 0x55, 
-	0x43, 0x68, 0xd0, 0xb9, 0xb3, 0x2c, 0x14, 0x74, 0x1a, 0xfb, 
-	0xc8, 0x8b, 0x9f, 0xd1, 0xd6, 0x50, 0x44, 0xb8, 0xc5, 0x9d, 
-	0xef, 0x72, 0x6c, 0x3a, 0x62, 0x92, 0x8f, 0x1a, 0xc5, 0x17, 
-	0x23, 0x6a, 0x5e, 0x6b, 0xc, 0x1b, 0x5d, 0x8e, 0x3a, 0xea, 
-	0x48, 0x36, 0xba, 0x4c, 0x56, 0x9d, 0xdb, 0x5, 0xee, 0xab, 
-	0xb4, 0x19, 0x66, 0x96, 0x4e, 0xe4, 0xb8, 0x42, 0xe1, 0xbf, 
-	0xeb, 0x99, 0xf6, 0x69, 0x3a, 0x2d, 0xf5, 0x49, 0x55, 0x84, 
-	0xe5, 0x5d, 0x54, 0x9a, 0x1, 0xce, 0x9b, 0x58, 0xd6, 0xde, 
-	0x41, 0x83, 0x2b, 0xdf, 0x8d, 0xe2, 0xf7, 0x1d, 0xa5, 00, 
-	0xde, 0x9, 0xec, 0xb9, 0xf3, 0xcf, 0x3b, 0xef, 0x8f, 0xb7, 
-	0xe6, 0xee, 0x5d, 0x7e, 0xc5, 0xd3, 0xcf, 0x2c, 0xd0, 0xf9, 
-	0xe0, 0x41, 0x50, 0xd8, 0xeb, 0xcd, 0x5b, 0x5a, 0xe4, 0x7d, 
-	0xf5, 0xd5, 0x57, 0x95, 0xa5, 0x32, 0xc7, 0x3d, 0xde, 0x37, 
-	0x2e, 0x94, 0x24, 0x3, 0xb2, 0x9b, 0x47, 0x7a, 0xbc, 0x99, 
-	0xb9, 0xb0, 0xf8, 0x97, 0x61, 0xcb, 0x2e, 0xd6, 0x1d, 0xc0, 
-	0xf6, 0xc0, 0x9, 0x8f, 0xe1, 0x77, 0xb5, 0xa0, 0x28, 0x55, 
-	0x28, 0x72, 0x20, 0x70, 0xa7, 0xa0, 0x1d, 0x7b, 0xcb, 0x4f, 
-	0xa9, 0x7b, 0xaa, 0x4b, 0x93, 0x85, 0xaa, 0x1b, 0x64, 0x84, 
-	0x24, 0x4d, 0xcd, 0x8d, 0xc9, 0x1e, 0xd3, 0xb6, 0x4b, 0x46, 
-	0x49, 0x91, 0xad, 0x59, 0xfd, 0x6e, 0x58, 0x63, 0x62, 0x40, 
-	0xa9, 0xa5, 0x1d, 0x7a, 0x4a, 0xd2, 0x26, 0x3f, 0x46, 0xa4, 
-	0x6d, 0x45, 0x7, 0x4c, 0xea, 0xb7, 0xf1, 0xd9, 0x5, 0xe0, 
-	0x59, 0xb5, 0xd9, 0xb5, 0xf6, 0x64, 0x8c, 0x7d, 00, 0xb9, 
-	0x98, 0x32, 0x4e, 00, 0x27, 0x5e, 0x95, 0xb3, 0xc6, 0x7e, 
-	0x7f, 0xe5, 0x92, 0x64, 0xe4, 0x88, 0xc6, 0x64, 0xef, 0x3d, 
-	0xb7, 0xd7, 0xca, 0x6b, 0x63, 0x18, 0x3d, 0xf5, 0x60, 0x42, 
-	0xa3, 0x52, 0xa, 0x9b, 0xbd, 0x4b, 0xe5, 0xaa, 0x29, 0x24, 
-	0x66, 0x18, 0x71, 0x83, 0x9b, 0xd5, 0x5e, 0x16, 0xd3, 0x34, 
-	0x28, 0x55, 0x43, 0xae, 0xdb, 0xbc, 0x6, 0x36, 0xc2, 0x41, 
-	0x59, 0x8, 0xa2, 0xb6, 0x88, 0x76, 0x6c, 0xbb, 0xed, 0xb6, 
-	0x55, 0xf3, 0xa6, 0xb8, 0x20, 0x9b, 0xe8, 0x7a, 0xb4, 0xb5, 
-	0xbb, 0x70, 0xb6, 0x5c, 0x7b, 0xd1, 0x7f, 0xa5, 0x3c, 0x68, 
-	0xe7, 0xd5, 0xf2, 0xc, 0xac, 0x74, 0x6e, 0xbc, 0x97, 0x18, 
-	0x80, 0x17, 0xbb, 0xb0, 0xf8, 0xf0, 0xdf, 0xff, 0x7d, 0xfe, 
-	0xd, 0xfa, 0xb6, 0x35, 0xf1, 0xe9, 0xda, 0x8b, 0xde, 0xc0, 
-	0x6a, 0xb7, 0x81, 0x3d, 0x77, 0xee, 0x83, 0x73, 0xcf, 0x3b, 
-	0x6f, 0x26, 0xc0, 0x66, 0x60, 0xc0, 0xa3, 0xfd, 0xdf, 0x9f, 
-	0xf7, 0xc6, 0xe2, 0xdf, 0xed, 0xb4, 0xfe, 0xb8, 0xef, 0xab, 
-	0x5d, 0xe9, 0x43, 0xf4, 0xf1, 0x81, 0x39, 0xaf, 0x2f, 0x4e, 
-	0xf8, 0x5e, 0x57, 0x25, 0x6e, 0xb, 0xbd, 0xae, 0x7b, 0xa8, 
-	0xee, 0x9, 0x4e, 0x63, 0xc4, 0xfa, 0x47, 0x1c, 0x51, 0xc9, 
-	0x6d, 0xf9, 0x3c, 0xda, 0xcd, 0x97, 0xd6, 0xa3, 0x37, 0x4c, 
-	0xf3, 0xfc, 0x69, 0xa2, 0xd2, 0xe6, 0xe1, 0xba, 0xfb, 0x54, 
-	0x73, 0xcf, 0x60, 0x39, 0xe4, 0x6f, 0xaa, 0x32, 0x82, 0x1c, 
-	0x20, 0xf, 0xb1, 0x55, 0x60, 0x59, 0x71, 0xbf, 0x52, 0x46, 
-	0xad, 0x8e, 0x7a, 0xd6, 0xd7, 0xa7, 0x15, 0xb4, 0xa7, 0x90, 
-	0x6d, 0xe4, 0x7c, 0xfa, 0xb4, 0x6d, 0x92, 0x3b, 0xee, 0x7c, 
-	0x38, 0x59, 0xfa, 0xce, 0xd2, 0x60, 0xb9, 0xea, 0x7c, 0xf5, 
-	0x50, 0x7, 0x6b, 0xf9, 0x4a, 0xca, 0x92, 0x69, 0xae, 0xb7, 
-	0x5f, 0xfb, 0xaf, 0xa7, 0xbc, 0x6, 0xb7, 0xc3, 0x18, 0xa7, 
-	0x5, 0xa4, 0xca, 0x81, 0x9b, 0x4c, 0xbe, 0x89, 0x96, 0x12, 
-	0xe7, 0x8d, 0x9a, 0xf1, 0x1a, 0xf9, 0xaa, 0x7a, 0x66, 0x5, 
-	00, 0x30, 0xc5, 0xdf, 0x5b, 0xfe, 0x66, 0x32, 0x62, 0x58, 
-	0x83, 0x80, 0xbd, 0x83, 0x16, 0x63, 0xfa, 0xe7, 0x80, 0x1d, 
-	0x64, 0x50, 0x6f, 0x68, 0x35, 0x9, 0xdd, 0x59, 0x37, 0x73, 
-	0xe6, 0xcc, 0x5c, 0xac, 0xba, 00, 0xa6, 0x6a, 0xc5, 0x99, 
-	0x93, 0x50, 0x2, 0xb0, 0xe9, 0x28, 0xd2, 0x58, 0xa0, 0xd1, 
-	0xa3, 0x4, 0xc8, 0xf7, 0x6a, 0xf0, 0x70, 0x6d, 0xa0, 0x89, 
-	0xf3, 0xa8, 0x6f, 0xd, 0x83, 0x49, 0x8e, 0xf9, 0xda, 0x17, 
-	0xce, 0x8b, 0x6c, 0x2, 0xf8, 0x8c, 0x9f, 0xfd, 0xec, 0x84, 
-	0xd4, 0xa9, 0xa7, 0x9e, 0x72, 0x46, 0x44, 0xd7, 0x60, 0xee, 
-	0x9, 0xe0, 0xd8, 0x96, 0x1d, 0x7f, 0xfc, 0xe3, 0xb9, 0xd7, 
-	0x6a, 0xf0, 0x4, 0x10, 0x7b, 0x1c, 0x76, 0xd8, 0xa1, 0x8d, 
-	0x57, 0x5f, 0x7d, 0xf5, 0xda, 0x79, 0xf3, 0xe6, 0xdf, 0x3f, 
-	0x73, 0xe6, 0xb9, 0x37, 0xeb, 0x3a, 0x73, 0x6c, 0xe8, 0x5, 
-	0x60, 0x13, 0x9e, 0xfd, 0xc8, 0x82, 0x6b, 0x76, 0x1c, 0xbb, 
-	0xfe, 0xb7, 0x15, 0x6f, 0x1c, 0xad, 0xc1, 0xe0, 0x38, 0x99, 
-	0xe3, 0x67, 0xa9, 0xff, 0x16, 0xe8, 0x85, 0x88, 0xee, 0xdc, 
-	0xd6, 0x5a, 0xd3, 0xf8, 0xd1, 0x4e, 0x3b, 0x26, 0xa3, 0x72, 
-	0x8f, 0xcb, 0x78, 0xa3, 0x6b, 0xe8, 0x8e, 0x3b, 0x75, 0x77, 
-	0x4b, 0x97, 0x6b, 0x1c, 0x8a, 0xd9, 0xdc, 0xdc, 0x2f, 0xec, 
-	0x22, 0xb3, 0x45, 0x44, 0x88, 0x56, 0x77, 0x7f, 0xc2, 0xff, 
-	0x6a, 0x40, 0xd1, 0xa5, 0x10, 0x25, 0xb0, 0xa8, 0x26, 0x85, 
-	0x93, 0xd7, 0xde, 0xd0, 0xc4, 0x6b, 0x9d, 0x23, 0xec, 0x3f, 
-	0x7, 0xdc, 0xbd, 0x1, 0x38, 0xf2, 0x2c, 0xc7, 0x1b, 0xb2, 
-	0x2, 0x78, 0x46, 0xef, 0x33, 0xf4, 0xd7, 0x29, 0xb9, 0xdb, 
-	0x27, 0xb7, 0xdf, 0x31, 0x3f, 0x79, 0xe7, 0xdd, 0x25, 0x61, 
-	0x31, 0x59, 0xaf, 0x3, 0x87, 0xbd, 0xf3, 0xa5, 0xea, 0x57, 
-	0x2a, 0x4d, 0x1b, 0x7e, 0xf8, 0x70, 0x24, 0x8b, 0x6a, 0xe0, 
-	0x31, 0xf6, 0xc6, 0xa9, 0x43, 0x43, 0x29, 0x4c, 0xce, 0x4b, 
-	0xd1, 0x72, 0x46, 0x3, 0x22, 0x10, 0x93, 0xd0, 0xa9, 0xbf, 
-	0xfb, 0x13, 0xaf, 0xc8, 0x19, 0xd8, 0xcb, 0x97, 0xbd, 0x91, 
-	0xc, 0x1f, 0x56, 0x9f, 0xec, 0xbb, 0xf7, 0x8e, 0x1, 0xd8, 
-	0x41, 0xe3, 0x9, 0x7c, 0xe2, 0xa8, 0x5e, 0xd8, 0xaf, 0xcb, 
-	0x34, 0x68, 0xa8, 0x9b, 0x38, 0x61, 0x74, 0xb2, 0xe8, 0xa5, 
-	0xca, 0x34, 0x44, 0xa9, 0xc2, 0xc5, 0xc7, 0xf0, 0x85, 0x4e, 
-	0x83, 0xcf, 0xa3, 0x31, 0x56, 0x43, 0x5f, 0x69, 0x6d, 0xb, 
-	0x1, 0xa1, 0xe9, 0x13, 0xb2, 0xfb, 0x8d, 0x79, 0x11, 0x2b, 
-	0xe5, 0x7d, 0xe5, 0x22, 0x80, 0x1f, 0x24, 0x80, 0x27, 0x55, 
-	0x2, 0x1c, 0x60, 0xd3, 0xc9, 0x84, 0xed, 0xe7, 0x9c, 0x73, 
-	0xce, 0x15, 0xab, 0x56, 0xad, 0x79, 0x47, 0x56, 0xcc, 0xd1, 
-	0x3a, 0xa1, 0xf5, 0xae, 0x73, 0xce, 0xf9, 0x3, 0x2b, 0xed, 
-	0xbc, 0x8d, 0x86, 0x35, 00, 0xb8, 0x31, 0xe5, 0xd1, 0xde, 
-	0x2b, 0x9f, 0x5d, 0xb2, 0xe4, 0x83, 0xcb, 0x9f, 0x7f, 0x66, 
-	0xff, 0x4f, 0x6d, 0x34, 0xf5, 0x62, 0x75, 0xfe, 0x98, 0x29, 
-	0xc3, 0x87, 0x25, 0xa7, 0xee, 0xbe, 0x9b, 0xe, 0x39, 0x7c, 
-	0x2e, 0xb9, 0x54, 0xbb, 0xcf, 0x56, 0x31, 0x8d, 0x8a, 0x1c, 
-	0x27, 0xa7, 0x7c, 0x76, 0xb3, 0x4d, 0x13, 0xb4, 0x3c, 0x83, 
-	0x1, 0x4e, 0x6f, 0x3a, 0x24, 0x93, 0x7f, 0xf0, 0x3, 0xb4, 
-	0x41, 0x94, 0xb3, 0xe7, 0x28, 0xb, 0x47, 00, 0x99, 0x85, 
-	0x40, 0xfa, 0x2c, 0x6, 0x38, 0xfc, 0x85, 0xd7, 0x7d, 0xe1, 
-	0xa0, 0x1d, 0xf7, 0x1f, 0xf2, 0xc8, 0x6f, 0xbe, 0xbb, 0xdd, 
-	0xbf, 0xb9, 0x55, 0xc0, 0x16, 0x7a, 0x6a, 0xd4, 0xde, 0x1b, 
-	0x4a, 0x8e, 0x25, 0xcf, 0xa9, 0x86, 0x7a, 0xbe, 0x4d, 0xa1, 
-	0xbd, 0xa, 0xc, 0x1c, 0xa2, 0x3d, 0x44, 0xa, 0xd, 0xc5, 
-	0x36, 0xeb, 0xb6, 0x79, 0xc9, 0x3b, 0xcb, 0xde, 0x4c, 0xf4, 
-	0x44, 0x84, 0x2f, 0xa4, 0x4, 0xd, 0x5e, 0x49, 0x9b, 0xc0, 
-	0x9d, 0x2c, 0xe7, 0x11, 0xca, 0x6b, 0x60, 0x1b, 0xa3, 0xfc, 
-	0x76, 0xbc, 0x80, 0x54, 0x17, 0xcd, 0xcd, 0x90, 0x53, 0x90, 
-	0x23, 0x22, 0x26, 0x73, 0x66, 0xa0, 0x16, 0xa7, 0x8a, 0x2e, 
-	0x97, 0xfe, 0x9, 0xb3, 0x78, 0xdc, 0xf5, 0xee, 0x3b, 0x8b, 
-	0x93, 0xe1, 0x43, 0xd3, 0xc9, 0x3e, 0x7b, 0xed, 0x20, 0xe1, 
-	0xcf, 0x32, 0xd5, 0x20, 0x21, 0xf, 0xf4, 0x30, 0x93, 0xe, 
-	0xdc, 0x7f, 0xd7, 0xd2, 0x84, 0x2a, 0x4c, 0x3d, 0xfb, 0xb7, 
-	0x57, 0x28, 0x67, 0x53, 0x18, 0x81, 0xc3, 0xe0, 0x21, 0xa6, 
-	0x12, 0xca, 0xf1, 0x25, 0x91, 0xe2, 0x36, 0x55, 0x48, 0xb5, 
-	0x30, 0x9b, 0xeb, 0xed, 0x90, 0xfa, 0x23, 0x80, 0xef, 0xbe, 
-	0xbb, 0x4c, 0x5b, 0x4d, 0x87, 0xf7, 0x99, 0x75, 0xe0, 0x52, 
-	0x7b, 0x9, 0x70, 0xea, 0x3, 0x3, 0x40, 0xc4, 0x9a, 0x8b, 
-	0x2e, 0xba, 0xe0, 0x86, 0xc5, 0x8b, 0x17, 0xbf, 0x78, 0xdb, 
-	0x6d, 0xb7, 0x3e, 0x9f, 0x4b, 0x7, 0xa5, 0x80, 0x1b, 0x8f, 
-	0xd9, 0xf, 0xb8, 0x9, 0x57, 0x9d, 0x75, 0xdf, 0xdc, 0xa7, 
-	0xf7, 0x9c, 0x30, 0xf1, 0xf7, 0x43, 0x1a, 0x9a, 0x3e, 0xa3, 
-	0x87, 0x18, 0x53, 0x1, 0xad, 0x8e, 0x2b, 0xc6, 0x67, 0x6e, 
-	0x7e, 0xf1, 0xc5, 0x94, 0xde, 0xcd, 0x56, 0x36, 0x81, 0x58, 
-	0xfd, 0xb6, 0x6f, 0x4b, 0x4b, 0x81, 0x49, 0xd4, 0x34, 0x66, 
-	0x6c, 0x32, 0x7c, 0xd7, 0x5d, 0x92, 0x4a, 0x1e, 0x81, 0x5, 
-	0x22, 0x45, 0x7f, 0x86, 0xf, 0x1f, 0xa6, 0xef, 0x8e, 0xbd, 
-	0x90, 0x62, 0x87, 0x33, 0xfc, 0xf5, 0x1c, 0x95, 0xbe, 0x34, 
-	0xc0, 0x6b, 0x5, 0x9e, 0x8b, 0x92, 0xf5, 0x19, 0x34, 0xab, 
-	0x68, 0x4a, 0xb3, 0x76, 0x6e, 0x92, 0xa1, 0x5f, 0x53, 0xa9, 
-	0xf6, 0xe4, 0x9b, 0x5f, 0xff, 0x54, 0xcd, 0xe0, 0xa6, 0xc, 
-	0xac, 0x45, 0xe4, 0x9a, 0x10, 0xfa, 0x96, 0x97, 0xc1, 0x2, 
-	0xf8, 0x5e, 0xd2, 0xe0, 0xb3, 0x6e, 0x17, 0xc0, 0xdf, 0x7d, 
-	0x23, 0xe0, 0x83, 0xbd, 0xf9, 0x95, 0xb4, 0x7, 0x7a, 0xca, 
-	0xc7, 0x4e, 0x46, 0x83, 0x3b, 0x6, 0xb5, 0xe5, 0xdb, 0x61, 
-	0x68, 0x2a, 0x19, 0xba, 0x73, 0xbe, 0xce, 0x4d, 0xa2, 0x9d, 
-	0xee, 0xf, 0x83, 0x7b, 0x72, 0x34, 0x8, 0x60, 0xbf, 0xbd, 
-	0xf4, 0xb5, 0x64, 0xa8, 0x5e, 0xcf, 0xde, 0x5b, 0xc0, 0x1e, 
-	0x3a, 0x74, 0x60, 0xd2, 0xa1, 0xc7, 0x22, 0xf8, 0xf6, 0xe, 
-	0x2d, 0x66, 0xe4, 0xbc, 0x24, 0x3, 0x8b, 0x36, 0x7f, 0xcd, 
-	0x79, 0xaa, 0xd, 0xcd, 0x40, 0x87, 0x39, 0x60, 0x63, 0xc2, 
-	0x65, 0x34, 0x52, 0x17, 0x34, 0xba, 0xa7, 0xfa, 0x77, 0x77, 
-	0x9d, 0xb6, 0x59, 0xa3, 0x20, 0x78, 0xfc, 0x56, 0x27, 0x76, 
-	0x8c, 0x1b, 0x37, 0xbe, 0xcf, 0xca, 0x88, 0xcb, 0x37, 0xc0, 
-	0x5b, 0x5a, 0x5a, 0xd0, 0xe0, 0x3f, 0xd6, 0x35, 0xd4, 0x23, 
-	0x13, 0x51, 0x3a, 0x9a, 0x79, 0x17, 0x3e, 0x68, 0x68, 0x85, 
-	0x5e, 0x64, 0x3, 0xa4, 0x78, 0x34, 0x32, 0x2f, 0xf9, 0xf3, 
-	0xb8, 0xec, 0x5d, 0x1, 0x7b, 0xae, 0xc2, 0x77, 0x72, 0x69, 
-	0x7c, 0xc8, 0x8b, 0x74, 0xae, 0x63, 0x96, 0xb3, 0x4a, 0x8e, 
-	0x16, 0x7, 0xec, 0x6d, 0xfb, 0xff, 0xe9, 0xb2, 0x7f, 0x7f, 
-	0xee, 0x9d, 0x77, 0xbe, 0xa5, 0x38, 0x3b, 0x57, 0x48, 0xc7, 
-	0xa5, 0xf6, 0x13, 0x98, 0x67, 0xe8, 0x14, 0x15, 0x3c, 0x71, 
-	0x37, 0x1a, 0x2d, 0x5d, 0xaf, 0xd7, 0x69, 0x27, 0x7c, 0xe9, 
-	0x4b, 0xc9, 0xe8, 0x7d, 0xf6, 0xcd, 0xe6, 0xae, 0xe1, 0xaf, 
-	0xa6, 0x36, 0xa9, 0x4c, 0xa6, 0x23, 0xbc, 0x59, 0x65, 0x3e, 
-	0xbb, 0x2f, 0xdd, 0xb7, 0x84, 0xbd, 0x71, 0xb2, 0x10, 0x52, 
-	0xe2, 0x6b, 0x28, 0x83, 0xfe, 0xc3, 0xc7, 0x65, 0x58, 0x46, 
-	0xab, 0x95, 0x41, 0xe7, 0x47, 0x9e, 0xd3, 0x75, 0xe9, 0x94, 
-	0x65, 0xdc, 0x21, 0xd7, 0x87, 0xc, 0x1d, 0xa0, 0xc5, 0xe4, 
-	0xed, 0x85, 0x8b, 0x54, 0xc0, 0x7, 0x38, 0xa1, 0xfc, 0x9e, 
-	0x5c, 0x4e, 0x9, 0xd2, 0xef, 0x9e, 0x6b, 0xc7, 0xe0, 0xe6, 
-	0x76, 0x77, 0x45, 0x9e, 0x94, 0xc1, 0x9b, 0x4f, 0x88, 0x22, 
-	0xce, 0x6c, 0x22, 00, 0xa5, 0x1f, 0x85, 0x74, 0xe7, 0xa8, 
-	0x28, 0xcf, 0xf5, 0x96, 0x2e, 0x79, 0x35, 0x19, 0xaa, 0x97, 
-	0xbc, 0x30, 0x45, 0x86, 0xd, 0xb, 0xcf, 0xe9, 0xc2, 0x8, 
-	0xc6, 0x75, 0x3a, 0xc7, 0xa1, 0xd, 0x85, 0xb8, 0xe3, 0x6a, 
-	0x8d, 0x53, 0x2f, 0xd3, 0x26, 0x4e, 0x87, 0x61, 0xe6, 0xf5, 
-	0xa5, 0x59, 0xe, 0x5d, 0x1c, 0xb4, 0xed, 0x79, 0x46, 0xaf, 
-	0xef, 0x7b, 0x99, 0x5f, 0xd9, 0xc, 0x7d, 0xf8, 0xb7, 0x6, 
-	0x80, 0x3, 0xd0, 0x60, 0x66, 0x2b, 0x4, 0xb8, 00, 0x18, 
-	0xf, 0xa0, 0xe3, 0xd0, 0x73, 0x6d, 0xf2, 0x72, 0xf, 0x1e, 
-	0xb5, 0xcc, 0x20, 0x91, 0xfa, 0xe2, 0xd, 0x37, 0x2c, 0xd8, 
-	0xf9, 0x82, 0xb, 0xb7, 0x7a, 0xe9, 0xbd, 0x15, 0xa7, 0xaf, 
-	0x6a, 0x6c, 0x5c, 0xda, 0x5e, 0xdf, 0xd0, 0x5, 0x55, 00, 
-	0xba, 0xff, 0xc4, 0x89, 0xc9, 0xfa, 0x47, 0x1e, 0x99, 0x6c, 
-	0xfe, 0x9b, 0x7f, 0xe, 0x71, 0xdd, 0x5b, 0xb3, 0xd3, 0x7e, 
-	0x4, 0x7d, 0x16, 0xb8, 0x1f, 0x87, 0xfc, 0x7, 0xfe, 0x22, 
-	0x27, 0xf0, 0xd9, 0x3, 0x29, 0xfd, 0xdb, 0x5b, 0xc7, 0xc2, 
-	0x22, 0xb, 0x75, 0xd0, 0xb6, 0x87, 0x66, 0x90, 0x3b, 0xcd, 
-	0x66, 0x2c, 0x9b, 0xbd, 0x91, 0x43, 0xe8, 0x95, 0xa3, 0x83, 
-	0xa2, 0x63, 0x51, 0x19, 0x7c, 0x80, 0x13, 0xf0, 0x42, 0xde, 
-	0xee, 0x1c, 0x4a, 0x55, 0x16, 0x6e, 0x76, 0x75, 0x31, 0xb, 
-	0x64, 0xe4, 0xcd, 0xbe, 0x24, 0x8e, 0xcb, 0x21, 0xd5, 0x37, 
-	0xc5, 0x21, 0x9a, 0x5b, 0x53, 0xac, 0xf2, 0x9a, 0x9b, 0xa, 
-	0xb2, 0x57, 0xfc, 0xcd, 0x37, 0x5f, 0xd6, 0x1c, 0x23, 0xa3, 
-	0x11, 0x6a, 0x3b, 0xed, 0xd6, 0x1a, 0x28, 0xa6, 0xf9, 0x9d, 
-	0x56, 0x80, 0xcd, 0xfc, 0x86, 0xc7, 0x1, 0xa4, 0xe1, 0xa9, 
-	0x57, 0x36, 0xbd, 0xbb, 0xc6, 0xf5, 0x7c, 0xad, 0xb0, 0xd3, 
-	0x11, 0x8, 0x3a, 0x47, 0xc, 0x49, 0xf5, 0x25, 0xb8, 0x8b, 
-	0x3b, 0x9c, 0x72, 0xc4, 0x97, 0xf0, 0xd1, 0xf7, 0x9e, 0xeb, 
-	0x58, 0x7b, 0xe, 0x3, 0x5c, 0x8b, 0x6c, 0x95, 0xce, 0xc1, 
-	0xad, 0xcd, 0x6d, 0x7e, 0xb3, 0x10, 0x4a, 0x7f, 0xe2, 0x60, 
-	0x96, 0x41, 0xcc, 0xdc, 0x1b, 0x30, 0x93, 0x8f, 0xd0, 0x52, 
-	0x86, 0x86, 0x40, 0x3e, 0x9a, 0x9f, 0xfd, 0xd8, 0xf6, 0x93, 
-	0xdf, 0x1f, 0x37, 0x6e, 0xc0, 0x1, 0x3b, 0x6e, 0x9f, 0x4a, 
-	0xaf, 0xd1, 0xf6, 0x50, 0xb6, 0xa1, 0x8a, 0xb7, 0x8d, 0x3a, 
-	0xac, 0xb1, 0x5e, 0xf3, 0xe4, 0x7e, 0x1b, 0x4c, 0x50, 0xb6, 
-	0xbe, 0x71, 0xf4, 0x95, 0x56, 0xf8, 0xc3, 0x62, 0x17, 0x80, 
-	0x36, 0xa8, 0x91, 0xad, 0x18, 0x2c, 0x56, 0xa, 0xb5, 0x94, 
-	0x4a, 0x19, 0x92, 0xe3, 0x14, 0x8f, 0xdc, 0xdc, 0x9f, 0x96, 
-	0x17, 0xda, 0x65, 0x79, 0xed, 0x64, 0x57, 0x75, 0xa5, 0xc8, 
-	0x58, 0xd4, 0xd, 0xb1, 0xac, 0xa7, 0x55, 0x77, 0x59, 0xa7, 
-	0xe2, 0x2c, 0xd7, 0x52, 0xa9, 0xba, 0x80, 0x8b, 0xbd, 0xf6, 
-	0xdc, 0x36, 0xb9, 0x65, 0xd6, 0xfc, 0xe4, 0x2d, 0xe1, 0xe5, 
-	0xa1, 0x87, 0x52, 0x61, 0xf7, 0x9f, 0x64, 0xa9, 0x64, 0x61, 
-	0x39, 0xa5, 0xca, 0x22, 0x6, 0x19, 0xf0, 0xf4, 0xa5, 0x43, 
-	0x45, 0xb3, 0x40, 0x17, 0x5f, 0x64, 0xf9, 0x64, 0x47, 0xc0, 
-	0xee, 0xc0, 0xed, 0x1b, 0x8, 0x71, 0x10, 0x6b, 0x2e, 0xa7, 
-	0xb9, 0x61, 0xfc, 0xc3, 0x3a, 0x96, 0xe7, 0x8d, 0xc5, 0x2f, 
-	0x9, 0xd8, 0x1d, 0xc9, 0xde, 0xd3, 0x3f, 0xa6, 0xc7, 0x5e, 
-	0xb2, 0xc9, 0x3, 0xb3, 0xb2, 0xab, 0x91, 0x2c, 0x2c, 0xe0, 
-	0x49, 0xb, 0xe9, 0x8a, 0x77, 0xc8, 0x3c, 0x3f, 0xed, 0x8c, 
-	0xff, 0xd6, 0xf1, 0xb3, 0xef, 0x63, 0x19, 0x24, 0x3f, 0x3e, 
-	0xf6, 0xb, 0x6a, 0xf8, 0xe0, 0xf0, 0xfb, 0xd4, 0x33, 0xce, 
-	0x57, 0xfe, 0x8c, 0x9e, 0x7f, 0xe, 0x4b, 0x8e, 0xfd, 0xc1, 
-	0x67, 0xc3, 0xf5, 0x50, 0x93, 0x92, 0x7f, 0xb2, 0x65, 0x58, 
-	00, 0xc8, 0x92, 0x6b, 0x63, 0x98, 0xd3, 0x97, 0xbc, 0xa5, 
-	0x8a, 0x44, 0xb, 0x81, 0x43, 0x84, 0xa1, 0x53, 0xe0, 0xf4, 
-	0x4a, 0x97, 0x34, 0xd8, 0xba, 0x76, 0xdd, 00, 0x1c, 0x69, 
-	0x42, 0xeb, 0xe2, 0x3c, 0xcf, 0xa6, 0xe3, 0x1, 0x2a, 0xa0, 
-	0x65, 0x44, 0xe6, 0x3a, 0x80, 0xa5, 0x1f, 0xd, 0x6e, 0x3, 
-	0x9c, 0xdf, 00, 0x9b, 0x10, 0x87, 0x5c, 0x4, 0x60, 0xeb, 
-	0xa0, 0x85, 0x13, 0xf5, 0x14, 0x22, 0x7f, 0xd0, 0x42, 0xb8, 
-	0xba, 0xe, 0xff, 0xc0, 0x47, 0x4, 0x1c, 0x50, 0x1b, 0x70, 
-	0xe6, 0xb9, 0xfb, 0xd6, 0xfd, 0x5a, 0x6b, 0x35, 0xa0, 0x8f, 
-	0x87, 0xbe, 0xcb, 0xc8, 0xd3, 0xca, 0xc9, 0x66, 0x90, 0xd1, 
-	0x7c, 0x62, 0x61, 0xe4, 0xc5, 0x45, 0xaf, 0x27, 0xe7, 0xfd, 
-	0xf7, 0xd, 0x21, 0xf1, 0xa7, 0xc7, 0x7f, 0x51, 0x56, 0x40, 
-	0xe7, 0xc2, 0xe1, 0xfd, 0xf, 0x3c, 0x9e, 0x5c, 0x71, 0xf5, 
-	0x9d, 0xe1, 0x9d, 0xfe, 0x49, 0x13, 0x47, 0x27, 0xfb, 0xef, 
-	0xbb, 0x43, 0x90, 0xf9, 0x5b, 0x67, 0xcd, 0x4b, 0x1e, 0x59, 
-	0xb0, 0x30, 0xc8, 0xf0, 0x61, 0x7, 0x7f, 0x22, 0xd9, 0x6a, 
-	0xcb, 0xc9, 0x1, 0x1f, 0x7b, 0x4f, 0xdf, 0x2e, 0xb9, 0xf5, 
-	0xf6, 0xf9, 0x1, 0x37, 0xf, 0x3f, 0x9c, 0x4a, 0xf4, 0x38, 
-	0x35, 0xd4, 0xad, 0xb0, 0x44, 0x75, 0x46, 0x76, 0xce, 0x6d, 
-	0x70, 0xd3, 0x87, 0xf8, 0xd8, 0x15, 0xff, 0xe, 0xc8, 0x8f, 
-	0x33, 0x94, 0x8a, 0x9b, 0x10, 0x61, 0x63, 0x29, 0xcd, 0xd, 
-	0xb3, 0xd9, 0x43, 0xbb, 0xf8, 0xf5, 0x45, 0xc9, 0xe0, 0x81, 
-	0xed, 0xda, 0x79, 0xb6, 0xad, 0xe, 0xc7, 0x1c, 0x12, 0xc0, 
-	0xe5, 0x8e, 0x29, 0x15, 0xd2, 0x59, 0x5a, 0x2d, 0x4f, 0xb6, 
-	0xd9, 0x7a, 0x4a, 0x58, 0x64, 0xb8, 0xf5, 0xb6, 0x7, 0x93, 
-	0xb3, 0x7f, 0x7b, 0x79, 0xb8, 0xef, 0x9c, 0x3f, 0x5e, 0x9b, 
-	0xdc, 0x3a, 0xeb, 0xc1, 0x90, 0xbe, 0xe3, 0xe, 0x9b, 0x86, 
-	0x7a, 0x95, 0xa2, 0x41, 0x5a, 0xb6, 0xd3, 0xb3, 0x55, 0x8f, 
-	0xf3, 0x90, 0x8e, 0x2b, 0x37, 0x1a, 0x66, 0xef, 0xa8, 0xfe, 
-	0x2f, 0x65, 0xe0, 0xa0, 0xcf, 0xe8, 0xf, 0xfd, 0x52, 0x7c, 
-	0xa9, 0x9e, 0x72, 0xcf, 0x77, 0x18, 0xe0, 0x2d, 0x9a, 0x83, 
-	0x9f, 0x70, 0xc2, 0x89, 0xc7, 0xeb, 0xe, 0xe6, 0xde, 0x78, 
-	0x34, 0x73, 0xc, 0x5e, 0xc0, 0xca, 0xa3, 0x2e, 0x7c, 0x58, 
-	0x28, 0x53, 0x88, 0xf9, 0x6d, 0xef, 0x34, 0xe7, 0x89, 0x7, 
-	0x5, 0xe8, 0x34, 0x9d, 0x7a, 0xea, 0x2f, 0x4f, 0xf8, 0x30, 
-	0x81, 0xad, 0x32, 0x3, 0x1f, 0x19, 0xe4, 0x31, 0xcb, 0xad, 
-	0xb5, 0x9, 0xdd, 0xaf, 0xe4, 0xe9, 0xad, 0x63, 0x1, 0x17, 
-	0x67, 0xd9, 0xc9, 0xca, 0x4f, 0xb6, 0x4f, 0xf9, 0xeb, 0x74, 
-	0x97, 0x59, 0x1c, 0x2e, 0x59, 0xb2, 0x2c, 0xb9, 0xee, 0x86, 
-	0x7b, 0x83, 0xd7, 0x61, 0x13, 0xf9, 0xba, 0x91, 0x6f, 0xbb, 
-	0x6d, 0xa7, 0x24, 0xb, 0x17, 0xbe, 0x96, 0xdc, 0xff, 0xc0, 
-	0x93, 0xa9, 0x3f, 0x5f, 0x7e, 0x57, 0xf2, 0xe6, 0x5b, 0xef, 
-	0xea, 0x95, 0xd8, 0xf7, 0x92, 0x99, 0xe7, 0xdf, 0x9c, 0xdc, 
-	0x77, 0xff, 0x13, 0x3a, 0xc4, 0x63, 0x59, 0xb2, 0xe9, 0x26, 
-	0x1b, 0xe6, 0xef, 0x1, 0x27, 0x6c, 0xc1, 0x6, 0x37, 0xe0, 
-	0x7, 0x1c, 0x41, 0xa7, 0xd8, 0xe5, 0xe4, 0xb, 0x70, 0x1b, 
-	0x8f, 0x64, 0x71, 0x9c, 0xb0, 0x8b, 0x63, 0x74, 0xef, 0xce, 
-	0xc5, 0x37, 0xa3, 0xee, 0x9b, 0x8a, 0x35, 0x37, 0x15, 0xa1, 
-	0x42, 0xaf, 0xbd, 0xb6, 0x48, 0xaf, 0xba, 0xb5, 0x69, 0x47, 
-	0xce, 0x36, 0xd2, 0xb4, 0x43, 0xf3, 0x95, 0xe7, 0x7a, 0xb1, 
-	0x87, 0x99, 0xf6, 0x5c, 0x3b, 0x70, 0xff, 0x8f, 0x27, 0xbb, 
-	0xee, 0xb2, 0x65, 0xa8, 0xc7, 0xd5, 0xd7, 0xde, 0x9d, 0xdc, 
-	0x7e, 0xe7, 0xfc, 0xe4, 0x4f, 0x97, 0xcd, 0xa, 0xbf, 0xf, 
-	0xd8, 0xef, 0xe3, 0xc9, 0xee, 0x9f, 0xd8, 0xa6, 0xb, 0x8d, 
-	0x62, 0x9a, 0x9d, 0x4a, 0xa7, 0x4b, 0xe7, 0x70, 0xf4, 0x4d, 
-	0x77, 0x6d, 0xac, 0xe8, 0x9a, 0xcb, 0x73, 0xbd, 0x1d, 0x2, 
-	0x6e, 0xb, 0x4b, 0x45, 0x84, 0xfa, 0x20, 0x93, 0x1, 0x3e, 
-	0x71, 0xe2, 0x44, 0xbd, 0x2e, 0x7a, 0x12, 00, 0x67, 0x2e, 
-	0x46, 0xc7, 0xd3, 0x50, 0xf7, 0x29, 0x12, 0x2, 0x60, 0xd1, 
-	0xdc, 0x98, 0xde, 0x80, 0x18, 0xed, 0xed, 0x45, 0x33, 0x7e, 
-	0xc7, 0xa6, 0x38, 0xf9, 0xe9, 0x6f, 0x24, 0xbf, 0x51, 0xc0, 
-	0x3e, 0xb1, 0xbb, 0x83, 0x16, 0x94, 0x67, 0x9d, 0x39, 0xf8, 
-	0xb9, 0x56, 0xe7, 0x98, 0xe3, 0xc, 0x6c, 0xf8, 0x6d, 0x47, 
-	0x5f, 0xf4, 0xc6, 0x79, 0x20, 0x36, 0x4d, 0xf7, 0x6d, 0xa0, 
-	0x2b, 0xda, 0xa4, 0xc7, 0x69, 0x5d, 0xe2, 0x79, 0x3, 0x7, 
-	0xa9, 0x2b, 0x94, 0x6f, 0xe, 0x4, 0x3e, 0xf1, 0x67, 0x7f, 
-	0x2f, 0xd, 0x9d, 0xe8, 0x59, 0x7a, 0x87, 0xe4, 0x78, 0x76, 
-	0x2, 0xc8, 0xd7, 0xac, 0x69, 0x95, 0xf6, 0xad, 0x4b, 0xbe, 
-	0xf7, 0x6d, 0x56, 0xe2, 0x79, 0x42, 0xd6, 0x79, 0x1f, 0x78, 
-	0x1, 0x37, 0xe0, 0xe7, 0xb5, 0x57, 0x5f, 0x2c, 0x9, 0x70, 
-	0x64, 0x58, 0xf7, 0x60, 0x81, 0x19, 0x93, 0xf4, 0x33, 0xde, 
-	0xbf, 0xbb, 0xb0, 0xc4, 0x82, 0xd0, 0xe5, 0x42, 0xee, 0x46, 
-	0xa7, 0x9b, 0x80, 0x1e, 0xe1, 0x15, 0x2, 0x45, 0x2f, 0x30, 
-	0x24, 0xaf, 0xbe, 0xb2, 0x30, 0x19, 0xd8, 0x6f, 0x6d, 0x6e, 
-	0x2f, 0xed, 0xb0, 0x82, 0x8a, 0xbb, 0x11, 0x8c, 0x70, 0xf, 
-	0x3d, 0xf2, 0x5c, 0xf2, 0xf0, 0x23, 0xcf, 0x27, 0x8f, 0x3c, 
-	0xfa, 0x42, 0xf2, 0xe8, 0x63, 0xb, 0x93, 0xc7, 0x1e, 0x7f, 
-	0x51, 0x79, 0xb3, 0x8c, 0xfc, 0xe9, 0xf1, 0x7f, 0x97, 0xc, 
-	0xe8, 0xdf, 0x1c, 0xee, 0x3d, 0xee, 0x27, 0xff, 0xa9, 0x4e, 
-	0x6d, 0xf, 0x66, 0xcb, 0x8f, 0xbe, 0x7f, 0x74, 0x49, 0x7a, 
-	0xa6, 0xdb, 0x19, 0xba, 0xaa, 0x59, 0x70, 0x93, 0x4e, 0x27, 
-	0x31, 0x5, 0xe9, 0x2b, 0xcd, 0xdd, 0x59, 0x56, 0xa7, 00, 
-	0xd0, 0xae, 0xbe, 0xa2, 0xdf, 0xd9, 0x82, 0x9e, 0x63, 0x9d, 
-	00, 0xdf, 0xf0, 0xe0, 0x13, 0x4f, 0x3c, 0xf9, 0x78, 0xed, 
-	0xfb, 0x1f, 0xa4, 0xbb, 0xe8, 0x7c, 0x3a, 0x88, 0xfe, 0x2a, 
-	0x6, 0x37, 0xc0, 0xb6, 0x96, 0x26, 0x34, 0xe0, 0xd1, 0xf0, 
-	0xc, 0x2, 0x38, 0x80, 0xdd, 0x70, 0xea, 0xa9, 0xa7, 0x9d, 
-	0xf4, 0x51, 0x1, 0x3b, 0x54, 0xa2, 0xe, 0x93, 0x39, 0xfb, 
-	0x24, 0xc2, 0x3c, 0x2f, 0x6, 0x1c, 0xf9, 0x6a, 0x75, 0x58, 
-	0x6, 0x38, 0xd3, 0x74, 0x48, 0x5a, 0x31, 0x58, 0x5d, 0x7e, 
-	0x1c, 0x4a, 0x20, 0xc9, 0x1a, 0x5c, 0x9c, 0xee, 0xf8, 0x96, 
-	0x9b, 0x4f, 0x4a, 0xe, 0x3a, 0x60, 0xe7, 0x70, 0xfd, 0xc1, 
-	0xf9, 0xcf, 0x25, 0x77, 0xde, 0xf5, 0x68, 0x88, 0x7f, 0xe6, 
-	0xa8, 0x69, 0x7a, 0xbd, 0x79, 0x64, 0xbe, 0x5c, 0xe7, 0x27, 
-	0x5c, 0x6f, 0xf4, 0xb0, 0x80, 0x9f, 0x81, 0xfd, 0x5b, 0x3, 
-	0x9e, 0xc0, 0x55, 0xec, 0x72, 0xb8, 0x33, 0xf8, 0xb2, 0xd, 
-	0xc8, 0x66, 0x28, 0x17, 0xf, 0x82, 0x10, 0xd3, 0x28, 0x15, 
-	0xcf, 0xdf, 0x2c, 0x26, 0xf0, 0x41, 0x82, 0x7c, 0x1e, 0x46, 
-	0x55, 0xed, 0x79, 0x4e, 0xfa, 0xf7, 0x5b, 0x93, 0x6c, 0xba, 
-	0xe9, 0x86, 0xc9, 0xe8, 0xf5, 0x86, 0x86, 0x47, 0x5a, 0xf9, 
-	0xc, 0xb9, 0x8, 0x95, 0x7f, 0x6f, 0xc5, 0xfb, 0xc9, 0xcf, 
-	0x4e, 0xfa, 0x63, 0xc1, 0x25, 0x5e, 0x1a, 0xb9, 0xe4, 0x82, 
-	0xa9, 0xe1, 0x1e, 0x46, 0xaf, 0xef, 0x7c, 0xfb, 0xc8, 0xe4, 
-	0xf4, 0x5f, 0x5d, 0xa8, 0xc6, 0x67, 0x99, 0xf7, 0xe3, 0xe3, 
-	0x3e, 0x9f, 0xc, 0x1c, 0xd4, 0xaf, 0x24, 0xcd, 0x98, 0x10, 
-	0xf4, 0x43, 0xb7, 0xe4, 0x98, 0x9e, 0xfd, 0x2d, 0x89, 0xcd, 
-	0x2e, 0x76, 0xc5, 0x59, 0x7b, 0x1d, 0x37, 0x6d, 0x42, 0x84, 
-	0x82, 0x35, 0x83, 0xf, 0x5b, 0x73, 0xbb, 0x11, 0x6, 0xb8, 
-	0xde, 0xd6, 0x3a, 0xf4, 0xab, 0x5f, 0xfd, 0xea, 0x6b, 0xa7, 
-	0x9f, 0x7e, 0xfa, 0x39, 0xba, 0x86, 0xca, 0xf3, 0xa0, 0x8d, 
-	0xba, 0x83, 0x39, 0x9d, 0x6a, 0x4f, 0x3f, 0x4a, 0xb8, 0xd0, 
-	0xc7, 0xfa, 0xda, 0x4b, 0xbd, 0xbe, 0x6a, 0xd2, 0xb2, 0xfe, 
-	0xfa, 0x63, 0x3f, 0x53, 0xee, 0x68, 0xa4, 0x12, 0xf7, 0xf6, 
-	0x79, 0x92, 0x16, 0xd4, 0xc2, 0x80, 0xee, 0xf9, 0x70, 0xcc, 
-	0x73, 0xc7, 0x7b, 0x5b, 0x28, 00, 0xcf, 0xf6, 0x5f, 0x21, 
-	0x6b, 0x42, 0xbf, 0x4a, 0xe1, 0x4, 0xae, 0x75, 0x62, 0x38, 
-	0x39, 0xea, 0xe8, 0x13, 0x92, 0x57, 0x5f, 0xcb, 0x6e, 0xb2, 
-	0x8a, 0xeb, 0xb0, 0xd7, 0x7e, 0xdf, 0xcd, 0x57, 0x85, 0x67, 
-	0xd8, 0xbf, 0x38, 0xf9, 0x2b, 0xe1, 0xf7, 0x67, 0x3e, 0xfd, 
-	0xc9, 0xe4, 0x81, 0x39, 0x4f, 0xea, 0xbd, 0xf8, 0xf7, 0xc2, 
-	0x58, 0x30, 0x69, 0xd2, 0xd8, 0xe4, 0xe0, 0x19, 0x1f, 0xf, 
-	0xb2, 0x9c, 0x62, 0xa7, 0x75, 0x56, 0x64, 0xf3, 0xf7, 0x12, 
-	0x1, 0x3f, 0x9b, 0x6e, 0xba, 0x41, 0xb2, 0xe0, 0xf1, 0x97, 
-	0x2, 0xae, 0x74, 0x2, 0x6e, 0x98, 0x6b, 0x73, 0xd, 0xdc, 
-	0xa9, 0xbe, 0xc, 0xbe, 0xc6, 0xa3, 0x43, 0x2e, 0x13, 0x8f, 
-	0x7f, 0x93, 0x96, 0x17, 0x82, 0xf0, 0xa3, 0xc4, 0x1f, 0xdf, 
-	0x10, 0x42, 0x35, 0xca, 0xbf, 0x43, 0x56, 0x46, 0x13, 0x9d, 
-	0xc8, 0x99, 0xac, 0x5e, 0xd3, 0xa4, 0xa3, 0x65, 0x5e, 0xd2, 
-	0x88, 0xa3, 0x2d, 0x8a, 00, 0xac, 0x9c, 0x2f, 0x51, 0x40, 
-	0x9c, 0x77, 0xec, 0x7a, 0xc3, 0xb, 0x72, 0xc, 0xd1, 0xa6, 
-	0x97, 0xf8, 0x7a, 0xf7, 0xf1, 0xec, 0xad, 0x74, 0x98, 0x5d, 
-	0xdc, 0x9, 0x4e, 0xeb, 0x6d, 0x8, 0xcd, 0xd8, 0xc7, 0xe5, 
-	0xf5, 0x96, 0x76, 0x2d, 0xf7, 0x67, 0x5, 0x94, 0xfd, 0xed, 
-	0x6d, 0x88, 0xb, 0x23, 0x3b, 0xa3, 0xaf, 0xcd, 0x35, 0x48, 
-	0x92, 0x8e, 0x66, 0x2e, 0xe5, 0xb9, 0x66, 0x97, 0xd2, 0x7, 
-	0x7, 0x53, 0x13, 0x27, 0x4e, 0xfa, 0xb2, 0x6, 0xed, 0xb0, 
-	0x5a, 0xed, 0xb, 0x1f, 0x76, 0x18, 0xf3, 0xd7, 0xf1, 0x6c, 
-	0x3b, 0x3b, 0xcd, 0xe5, 0xbe, 0xa8, 0x13, 0xb4, 0xed, 0x1c, 
-	0xf, 0x49, 0x25, 0xe4, 0x17, 0x4b, 0xd2, 0x5e, 0xaf, 0xa6, 
-	0xfa, 0xb6, 0x7c, 0x5a, 0xb8, 0x26, 0x65, 0x62, 0x19, 0x6d, 
-	0x94, 0x9, 0x3e, 0x48, 0x8a, 0xc9, 0x6e, 0x60, 0xff, 0xa6, 
-	0x2c, 0xd8, 0x4a, 0xd0, 0xf6, 0x3d, 0xe0, 0x7, 0x1c, 0x81, 
-	0x27, 0x70, 0x55, 0x6c, 0x25, 0xe7, 0x68, 0x81, 0x41, 0x7b, 
-	0x93, 0x2f, 0x19, 0x5a, 0xcd, 0x97, 0xbc, 0x58, 0x9c, 0x28, 
-	0xf3, 0x53, 0xeb, 0x1c, 0xad, 0x52, 0x18, 0x9d, 0xdb, 0xcb, 
-	0x19, 0x5d, 0x60, 0xfc, 0xc2, 0x85, 0xdd, 0x20, 0xed, 0x45, 
-	00, 00, 0x20, 00, 0x49, 0x44, 0x41, 0x54, 0xcf, 0x24, 
-	0xb3, 0xef, 0x5e, 0x90, 0x7c, 0x72, 0xb7, 0x2d, 0x93, 0x71, 
-	0xeb, 0x8f, 0x2c, 0xb8, 0x15, 0xc6, 0xd, 0xd4, 0x1b, 0x60, 
-	0xbf, 0x3f, 0xfb, 0xbb, 0xf9, 0x15, 0xca, 0x76, 0x69, 0xfd, 
-	0xb5, 0xad, 0xfa, 0xda, 0xa6, 0xee, 0xc5, 0xbf, 0xff, 0xc1, 
-	0xea, 0xe4, 0x97, 0x67, 0x5c, 0x50, 0x70, 0xdf, 0x2f, 0x4e, 
-	0x3b, 0x3f, 0xb9, 0xe8, 0xbc, 0x9f, 0xe9, 0x18, 0xa6, 0xce, 
-	0xd5, 0xc8, 0x82, 0xc, 0xb9, 0x1f, 0x41, 00, 0x82, 0xc, 
-	0x17, 0x5e, 0xc5, 0x5c, 0x5e, 0x17, 0xe0, 0x8b, 0x69, 0xa2, 
-	0x1, 0x30, 0x21, 0x3f, 0xa, 0xc7, 0x4b, 0x20, 0x3a, 0x79, 
-	0x65, 0x8d, 0xb6, 0x94, 0x5e, 0xf3, 0xbb, 0xdf, 0xfd, 0xf6, 
-	0x26, 0xd5, 0xc1, 0x73, 0xb2, 0x78, 0x84, 0xf, 0x12, 0x2c, 
-	0x1e, 0x75, 0x4a, 0xa4, 0x32, 0xaa, 0xde, 0x8, 0x8, 0xd7, 
-	0xf0, 0xc4, 0x19, 0x10, 0xea, 0xfe, 0xf9, 0x9f, 0xcf, 0xfa, 
-	0xf5, 0x37, 0xbe, 0xf1, 0xcd, 0x56, 0x1d, 0x9b, 0xfc, 0x79, 
-	0x69, 0xef, 0x66, 0x9e, 0x9, 0x7f, 0xd8, 0xe, 0x6b, 0x28, 
-	0xf4, 0xa9, 0xe4, 0xc6, 0x61, 0x5f, 0xd7, 0x1, 0xba, 0xb0, 
-	0x20, 0xa6, 0x4f, 0x1c, 0xa0, 0x5, 0x99, 0x54, 0x81, 0x81, 
-	0x71, 0xb9, 0x82, 0xbf, 0x27, 0xab, 0xf2, 0x3, 0xc9, 0x28, 
-	0x6e, 0xe1, 0xa2, 0xc5, 0xc9, 0xf9, 0x17, 0xc0, 0xee, 0x24, 
-	0xf9, 0xe9, 0xf1, 0x9f, 0xcf, 0xcb, 0xe7, 0x18, 0x29, 0xa7, 
-	0xf0, 0x34, 0x48, 0xe9, 0x37, 0xdc, 0x38, 0x37, 0x59, 0xf8, 
-	0xe2, 0x9b, 0x21, 0xf, 0x7f, 0x16, 0x3c, 0xbe, 0x48, 0x5b, 
-	0x4f, 0x1f, 0xd2, 0x16, 0xec, 0xed, 0x13, 0x9d, 0x1a, 0x92, 
-	0x67, 0xbc, 0x33, 0xbc, 0xf6, 0xfa, 0x52, 0xe1, 0xe7, 0xb1, 
-	0xe4, 0xfd, 0xd5, 0xcd, 0xfa, 0x4a, 0xcd, 0xd4, 0x4, 0x5c, 
-	0xc5, 0x8e, 0x5, 0x46, 0xc9, 0xb3, 0xa7, 0x4f, 0xf1, 0xa5, 
-	0xb2, 0x71, 0x9b, 0x6f, 0x65, 0x33, 0xc4, 0x17, 0xc4, 0xc, 
-	0xc0, 0x1d, 0x27, 0x85, 0xf8, 0x16, 0x5b, 0x6c, 0x91, 0xb4, 
-	0xb4, 0x4c, 0x9, 0x15, 0xa3, 0x82, 0xaf, 0x2f, 0x5e, 0xaa, 
-	0xca, 0x17, 0xfe, 0x4b, 0xeb, 0xe5, 0x85, 0x31, 0x63, 0x86, 
-	0x5, 0xbf, 0x9e, 0xcc, 0xf, 0x4c, 0x90, 0x51, 0xa3, 0x86, 
-	0x4, 0x33, 0x85, 0x9c, 0xff, 0x76, 0xf6, 0xff, 0x84, 0x95, 
-	0x45, 0x8, 0x7e, 0xf6, 0xd3, 0x7b, 0x5, 0xba, 0xaf, 0x68, 
-	0x24, 0xfb, 0xfd, 0x39, 0xd7, 0x16, 0x51, 0x2a, 0xa4, 0xeb, 
-	0x5f, 0x85, 0x5d, 0x11, 0x6e, 0xf7, 0x5c, 0x38, 0x6c, 0x31, 
-	0xcc, 0xa6, 0xf4, 0xed, 0x5f, 0x84, 0x1, 0x93, 0x3c, 0x1e, 
-	0xc9, 0xfb, 0xb6, 0x84, 0xf2, 0xd4, 0x72, 0xc0, 0x5e, 0xbb, 
-	0x60, 0xc1, 0xe3, 0xb7, 0xfe, 0xe6, 0x37, 0x67, 0x5d, 0xa6, 
-	0xb7, 0xd2, 0xc, 0x52, 0x80, 0x8d, 0x3, 0xb0, 0x76, 0xb1, 
-	0x9c, 0x3a, 0xcd, 0xa1, 0xf3, 0x11, 0xa6, 0x74, 0x10, 0x44, 
-	0xc7, 0x2f, 0x7f, 0x79, 0xca, 0xb9, 0x1a, 0x30, 0x74, 0xde, 
-	0xc3, 0x95, 0x6b, 0x7c, 0x86, 0x9a, 0x33, 0x7f, 0x18, 0x61, 
-	0x96, 0x9f, 0xae, 0x56, 0xdf, 0x97, 0xc8, 0xe0, 0xac, 0xbe, 
-	0x2b, 0x28, 0x20, 00, 0x5b, 0x45, 0x21, 0x4f, 0xec, 0x24, 
-	0xb3, 0x5c, 0x39, 0xfc, 0xc4, 0xae, 0x5b, 0x26, 0xfb, 0xec, 
-	0xbd, 0x43, 0xf0, 0x3b, 0x7c, 0x6c, 0x6a, 0xbe, 0x52, 0x7b, 
-	0xee, 0xa1, 0xef, 0x8f, 0xe7, 0xd2, 0xb7, 0xda, 0x6a, 0x72, 
-	0xb8, 0xef, 0xe5, 0x57, 0xdf, 0x4c, 0x2e, 0xb9, 0xec, 0xce, 
-	0x90, 0x67, 0x8b, 0xcd, 0x26, 0x48, 0xd9, 0x65, 0x2d, 0xd2, 
-	0xb, 0x2e, 0xbe, 0x4d, 0x6f, 0x86, 0x2d, 0xef, 0x42, 0x1b, 
-	0xbc, 0x18, 0xd8, 0xe0, 0x8, 0x3c, 0x15, 0x3b, 0xa6, 0xc0, 
-	0x72, 0xfc, 0x9, 0xfd, 0x54, 0x7c, 0xbd, 0xd4, 0xef, 0xaa, 
-	0xc0, 0x2d, 0x2, 0x6b, 0x99, 0x7, 0x95, 0x72, 0x9c, 0xd0, 
-	0xb1, 0xe1, 0x86, 0x1b, 0x9, 0xe0, 0x4d, 0x5a, 0x40, 0x58, 
-	0x90, 0x2c, 0x6, 0xe0, 0x30, 0xa9, 0x1b, 0x1f, 0x58, 0x29, 
-	0x26, 0xcf, 0x99, 0xfb, 0x44, 0x72, 0xcd, 0x75, 0xf7, 0x6, 
-	0xb2, 0xfb, 0xef, 0xbb, 0x63, 0xf2, 0xed, 0x6f, 0x1e, 0x96, 
-	0x6c, 0xb9, 0x45, 0x4b, 0xf8, 0x7d, 0xe9, 0x65, 0xb7, 0x69, 
-	0xe1, 0xed, 0x85, 0x6e, 0xe9, 0x64, 0xcb, 0x28, 0x55, 0x2b, 
-	0x71, 0x42, 0xb, 0x6a, 0x39, 0xc6, 0x94, 0xce, 0xd0, 0xcb, 
-	0x54, 0xe6, 0x87, 0xe5, 0x78, 0xd2, 0x4b, 0xd2, 0x65, 0x6f, 
-	0x37, 0xb0, 0x1f, 0x7a, 0xe8, 0xe1, 0xbb, 0xce, 0x3e, 0xfb, 
-	0xdf, 0xaf, 0x51, 0x46, 0x83, 0xd7, 0x21, 0xf7, 0xc6, 0xf1, 
-	0xb2, 0xb4, 0x72, 0x17, 0x2c, 0xe8, 0x16, 0x9c, 0xd4, 0xaf, 
-	0x7f, 0x7d, 0xe6, 0x45, 0x4f, 0x3c, 0xf1, 0xe4, 0xf5, 0x2, 
-	0xf8, 0xda, 0xf, 0x1b, 0xe0, 0xf0, 0x93, 0x95, 0xe5, 0x75, 
-	0xe5, 0x90, 0x7, 0xe4, 0xa2, 0x34, 0x7d, 0xc1, 0xb9, 0x1b, 
-	0x99, 0xcd, 0x5e, 0xeb, 0xbc, 0xb5, 0x38, 0x2f, 0x56, 0xdc, 
-	0x29, 0xa7, 0x5d, 0xc0, 0x34, 0x29, 0xc5, 0xaa, 0xf8, 0x51, 
-	0x47, 0xec, 0x92, 0x1c, 0x7d, 0xd4, 0x6e, 0xa1, 0xa8, 0xf, 
-	0x56, 0xad, 0x49, 0x7e, 0xfb, 0xfb, 0xeb, 0xb, 0xe8, 0x83, 
-	0x13, 0xf0, 0x2, 0x6e, 0xc0, 0xf, 0x38, 0x2a, 0xe5, 0x72, 
-	0x32, 0xdc, 0x55, 0xb3, 0x96, 0xca, 0x9c, 0x4b, 0xab, 0x16, 
-	0xdc, 0x6b, 0x4a, 0x69, 0x6e, 0xd3, 0xdf, 0x6a, 0xab, 0xad, 
-	0x74, 0xd6, 0xd6, 0xe4, 0xa0, 0xc1, 0xef, 0x90, 0x89, 0xbe, 
-	0xf8, 0xad, 0xb7, 0xb5, 0x92, 0xd3, 0xfd, 0xbf, 0x95, 0xab, 
-	0x3e, 0xc8, 0xfc, 0xf2, 0x57, 0x17, 0x7, 0x12, 0x6c, 0x6, 
-	0xf8, 0x87, 0x7f, 0x38, 0x38, 0xdc, 0xf1, 0x5d, 0x3d, 0x32, 
-	0xc0, 0x31, 0xa2, 0x9e, 0x72, 0xfa, 0x85, 0xc9, 0x2a, 0x3d, 
-	0x72, 0xea, 0x8e, 0x12, 0x23, 0x6c, 0x29, 0xc7, 0xfd, 0x7d, 
-	0xd, 0x3e, 0xcc, 0x39, 0x1c, 0x21, 0x8f, 0x3e, 0x28, 0x83, 
-	0x57, 0x3f, 0x3f, 0xc, 0xd7, 0xf9, 0x3e, 0xf6, 0xbc, 0x7, 
-	0x64, 0x8a, 0xdf, 0xa8, 0x32, 0x19, 0x6d, 0x69, 0xbc, 0xcd, 
-	0x6e, 0x87, 0x71, 0x75, 0xc, 0xde, 0x38, 0x2d, 0x8e, 0x9b, 
-	0x79, 0xdc, 0xb, 0xbd, 0x10, 0xfe, 0xdb, 0xbf, 0xfd, 0xcb, 
-	0x9f, 0x75, 0xa, 0xcc, 0x2d, 0x1f, 0x26, 0xc0, 0x91, 0x2f, 
-	0x34, 0x6b, 0xa9, 0x27, 0x10, 0xe6, 0x7b, 0x5c, 0xf1, 0x5a, 
-	0xe2, 0x39, 0xcd, 0x1d, 0xfa, 0xcf, 0xf7, 0x9b, 0x36, 0x8c, 
-	0xc8, 0x8, 0xf7, 0xdd, 0xc9, 0x1a, 0xd7, 0xec, 0x8a, 0xf3, 
-	0xfd, 0xf9, 0xf2, 0x3b, 0x92, 0x5, 0x8f, 0xbd, 0x10, 0x2e, 
-	0xef, 0xbe, 0xdb, 0xa6, 0xb2, 0x50, 0x7, 0x27, 0x9b, 0x6d, 
-	0xbe, 0x81, 0xf6, 0x72, 0xb4, 0x84, 0xb4, 0x87, 0x1e, 0x79, 
-	0x21, 0xb9, 0x4d, 0xef, 0x76, 0x73, 0x1f, 0xf8, 00, 0x27, 
-	0x98, 0xe2, 0xe0, 0x6, 0xfc, 0x94, 0x73, 0xf0, 0x45, 0x75, 
-	0x4, 0xdc, 0xa1, 0x8a, 0xe5, 0xf2, 0xc5, 0xe9, 0x55, 0xcd, 
-	0xb9, 0x75, 0x63, 0xb7, 0xe0, 0x86, 0x41, 0xfa, 0x98, 0x5d, 
-	0x10, 0xf6, 0x57, 0x5f, 0x79, 0x21, 0x99, 0x7d, 0xe7, 0x63, 
-	0xc9, 0x1e, 0xbb, 0x6f, 0xa5, 0xd, 0x2d, 0x7a, 0x15, 0x52, 
-	00, 0x90, 0xbd, 0x23, 0xd1, 0x29, 0xf4, 0xfd, 0x4, 0xe8, 
-	0xcb, 0x2f, 0x39, 0xb1, 0x70, 0xc5, 0x59, 0x79, 0x36, 0x9d, 
-	0x32, 0x21, 0xb9, 0xf7, 0x8e, 0x7f, 0x8f, 0xeb, 0x9a, 0xbd, 
-	0xb7, 0x30, 0x25, 0xfb, 0xb, 0xda, 0xf8, 0x12, 0xae, 0xaf, 
-	0xc1, 0x4d, 0x1b, 0x2d, 0x8, 0x14, 0xe7, 0x38, 0xaf, 0x29, 
-	0x56, 0x73, 0x30, 0x62, 0x89, 0xaa, 0xf6, 0x98, 0x64, 0x60, 
-	0xcf, 0x99, 0xf3, 0xe0, 0x83, 0x7a, 0x4f, 0xfb, 0x16, 0xdd, 
-	0xc0, 0x88, 0xe2, 0x47, 0x5a, 0x74, 0x3c, 0x66, 0x1b, 0x92, 
-	0x87, 0x37, 0x43, 0x2, 0xb0, 0x55, 0xcf, 0x62, 0x80, 0xc7, 
-	0xbf, 0xc9, 0x6b, 0xcf, 0xbd, 0xd0, 0xa, 0xf4, 0xfe, 0xf3, 
-	0x3f, 0xcf, 0xbe, 0xf2, 0xeb, 0x5f, 0xff, 0x6, 0x73, 0xf9, 
-	0x3d, 0xf4, 0x39, 0xa4, 0xc6, 0x75, 0x3d, 0x7, 0x87, 0x8f, 
-	0x68, 0x43, 0x3b, 0xaa, 0xdd, 0xb5, 0xea, 0xbe, 0x5a, 0x5b, 
-	0xc8, 0x60, 0x5f, 0xbc, 0x6e, 0x2, 0xa5, 0x50, 0xe, 0x72, 
-	0x84, 0x8c, 0x76, 0x23, 0x53, 0x1f, 0xdb, 0x7a, 0xe3, 0x42, 
-	0xd9, 0x24, 0x7f, 0xce, 0x7d, 0xfa, 0x53, 0xd3, 0x92, 0x23, 
-	0xe, 0xdd, 0x4d, 0xaf, 0x1f, 0xbf, 0x9c, 0x79, 0xfb, 0xed, 
-	0x77, 0xb4, 0x20, 0x93, 0xa5, 0xf7, 0xc3, 0xef, 0x1c, 0x12, 
-	0x16, 0xc8, 0x58, 0x24, 0x63, 0x2a, 0xb7, 0xe4, 0xcd, 0x65, 
-	0x32, 0xc5, 0x1f, 0x4f, 0x3e, 0x58, 0xd5, 0x9c, 0x8c, 0xdf, 
-	0x60, 0x52, 0xc0, 0x4d, 0x77, 0xed, 0x44, 0x73, 0xab, 0xce, 
-	0x55, 0x69, 0x90, 0x9e, 0x34, 0xb7, 0x6b, 0x1d, 0x42, 0x1, 
-	0x45, 0x1f, 0x78, 0xec, 0x7e, 0xf1, 0x88, 0xa, 0x2, 0xf0, 
-	0x71, 0xe3, 0x27, 0x65, 0x35, 0xb8, 0x4c, 0x8e, 0xb7, 0xb4, 
-	0x2b, 0x7, 0x90, 0x95, 0xf2, 0x30, 0xd9, 0x23, 0x69, 0xa9, 
-	0xeb, 0x95, 0xa6, 0x59, 0x94, 0x8b, 0x47, 0x7c, 0x75, 0x64, 
-	0x46, 0xf3, 0x51, 0xf3, 0xbe, 0xd7, 0x21, 0xed, 0x2b, 0xf6, 
-	0x6d, 0x6d, 0xad, 0x99, 0x95, 0x2b, 0xfb, 0xae, 0x8c, 0x52, 
-	0x95, 0x34, 0xb0, 0x1f, 0x78, 0x60, 0xee, 0x7c, 0x1, 0xfb, 
-	0x56, 0xe5, 0x61, 0x87, 0x19, 0x2b, 0x3c, 0x78, 0x83, 0x9c, 
-	0xce, 0x31, 0xc0, 0xdd, 0x77, 0x80, 0x98, 0x7e, 0x2e, 0xf6, 
-	0x4e, 0xd7, 0xa5, 0x30, 0x8f, 0x3, 0x51, 0xbe, 0x1f, 0xed, 
-	0xd, 0xcd, 0x40, 0x5f, 0x16, 0xc2, 0x35, 0x3a, 0x86, 0xfa, 
-	0x6e, 0x8e, 0x6c, 0x5a, 0xd7, 0x26, 0x3a, 0xe0, 0x5e, 0xb3, 
-	0x66, 0x6d, 0xd8, 0x9b, 0x10, 0xf7, 0xa5, 0x79, 0xae, 0x3a, 
-	0xf5, 0x1a, 0xec, 0x94, 0x21, 0x4d, 0x18, 0x4e, 0xc3, 0x85, 
-	0x6e, 0x1, 0x4d, 0x71, 0xad, 0x52, 0x99, 0x2b, 0x97, 0xcf, 
-	0x32, 0x1d, 0x8, 0xeb, 0x8f, 0xf3, 0xf1, 0x9b, 0xf8, 0x92, 
-	0xa5, 0xcb, 0x65, 0x8a, 0x6b, 0xf1, 0x6c, 0x55, 0x53, 0xc0, 
-	0x9, 0x78, 0x71, 0x3d, 0x7c, 0x4f, 0x71, 0x98, 0xb3, 0x68, 
-	0xe8, 0x13, 0xfa, 0xd5, 0x3e, 0xce, 0xe6, 0xfe, 0xce, 0xa7, 
-	0xf5, 0x4, 0x6e, 0x32, 0xe6, 0x6f, 0x52, 0xc5, 0x3e, 0xe8, 
-	0x9, 0xdc, 0xdc, 0x40, 0xa7, 0xb0, 0x47, 0x76, 0xfd, 0xf5, 
-	0x5b, 0x42, 0x3, 0x68, 0xc8, 0xd2, 0xb7, 0xb5, 0x90, 0x50, 
-	0x34, 0x97, 0x81, 0x34, 0x2b, 0xa3, 0xd9, 0xd5, 0xd1, 0xee, 
-	0xe7, 0xe7, 0xc5, 0xf7, 0x16, 0xff, 0x8e, 0xaa, 0x99, 0x67, 
-	0x14, 0xc, 0x63, 0x7, 0x59, 0x5f, 0x82, 0x9b, 0xf6, 0xe1, 
-	0x68, 0x23, 0x9e, 0x32, 0xd8, 0x4d, 0xb5, 0x64, 0xc9, 0x5b, 
-	0x79, 0x3e, 0x65, 0x73, 0xf4, 0xdd, 0xdf, 0x4e, 0x60, 0xcf, 
-	0x79, 0xe8, 0xbc, 0xf3, 0x66, 0xde, 0x26, 0xca, 0xde, 0x3a, 
-	0xca, 0x88, 0x42, 0x1c, 0xef, 0xd, 0x2a, 00, 0x14, 0x70, 
-	0xe2, 0x90, 0x5c, 0xbc, 0x1f, 0x91, 0xa1, 0x81, 0x63, 0x5f, 
-	0xbc, 0xaa, 0x6e, 0x80, 0x3, 0x6a, 0xe8, 0xb1, 0x9b, 0x2d, 
-	0x6c, 0x57, 0xfd, 0xc3, 0x1f, 0x7e, 0x7f, 0xb5, 0x4e, 0x70, 
-	0x11, 0xc0, 0x2f, 0x6f, 0xa5, 0x3e, 0xeb, 0xca, 0xe9, 0xab, 
-	0x1d, 0x61, 0x30, 0x86, 0xaf, 0xf8, 0x98, 0xcf, 0x4e, 0xeb, 
-	0x6d, 0xd9, 0xc, 0x50, 0x78, 0xd3, 0x2f, 0xa4, 0x57, 0xc9, 
-	0x9c, 0xbb, 0x7b, 0x59, 0x45, 0x9e, 0x99, 0x7b, 0xc7, 0x32, 
-	0x8a, 0x7c, 0xf2, 0xfb, 0x6d, 0xe1, 0x20, 0x2c, 0x9e, 0xad, 
-	0x6a, 0x4c, 0xc6, 0xa, 0x1f, 0xe5, 0xf6, 0x92, 0x17, 0xd6, 
-	0x49, 0xa3, 0xae, 0x94, 0xaa, 0xf0, 0x47, 0x9f, 0x58, 0xce, 
-	0x1c, 0x92, 0x35, 0x8e, 0xe7, 0x6f, 0xed, 0xce, 0x2c, 0xef, 
-	0xb4, 0x8d, 0xb2, 0x37, 0x6b, 0x95, 0xbf, 0x43, 0x7, 0x71, 
-	0x60, 0xad, 0xf5, 0xec, 0xe8, 0x14, 0xce, 0xb8, 0x66, 0xa4, 
-	0x5a, 0xfc, 0xfa, 0xc2, 0xb0, 0x68, 0xb0, 0xfb, 0x27, 0x36, 
-	0xd3, 0x97, 0x45, 0xfa, 0x17, 0x34, 0x5a, 0x95, 0xd6, 0xeb, 
-	0x7d, 0x6b, 0x53, 0xb7, 0xdf, 0xf9, 0x68, 0xf2, 0xda, 0x62, 
-	0x5e, 0x3f, 0xae, 0xde, 0x5, 0xb, 0x2a, 0xd5, 0x28, 0x29, 
-	0xee, 0x1c, 0x85, 0x2d, 0x8, 0xd2, 0xdc, 0x29, 0x8d, 0xd4, 
-	0x34, 0x3e, 0x7b, 0xb1, 0x7a, 0xf2, 0xf9, 0x3b, 0x4c, 0xd3, 
-	0x9, 0xfc, 0xc6, 0xc4, 0xaa, 0xab, 0x4b, 0xa7, 0x5f, 0x7e, 
-	0xf9, 0x95, 0x8e, 0x8f, 0x7d, 0xec, 0x63, 0xbd, 0x2e, 0xc3, 
-	0xb4, 0x1d, 0x1a, 0xd8, 0x9c, 0x2b, 0xae, 0x53, 0x4a, 0x1, 
-	0x36, 0xef, 0x5d, 0xc3, 0x28, 0xbf, 0xae, 0x69, 0xa0, 0xd3, 
-	0xf1, 0x6, 0xb6, 0x3b, 0x9b, 0xc1, 0xdb, 0x75, 0x4a, 0x9d, 
-	0x78, 0xe2, 0x89, 0xd3, 0x7e, 0xf1, 0x8b, 0x5f, 0xcc, 0x56, 
-	0x1a, 0xd7, 0x9d, 0x47, 0xd1, 0x7c, 0x1e, 0xd2, 0xe8, 0x60, 
-	0xe4, 0x2, 0x80, 0x3, 0x7e, 0xe2, 0xf8, 0xf4, 0x39, 0xe7, 
-	0xfc, 0x5e, 0x8b, 0x77, 0x5f, 0x83, 0xde, 0x27, 0x8e, 0x3c, 
-	0xf2, 0x48, 0xbe, 0x82, 0xa1, 0x68, 0xdf, 0x3a, 0x9d, 0xfa, 
-	0xaa, 0xf7, 0xac, 0xdb, 0x74, 0x42, 0x70, 0x2a, 0x98, 0xb1, 
-	0x84, 0x1e, 0x44, 0xcd, 0x7f, 0xc2, 0xde, 0x38, 0xe4, 0x41, 
-	0xe0, 0x4e, 0xf1, 0xda, 0x67, 0x4c, 0x1f, 0x9a, 0x19, 0xc9, 
-	0xd1, 0x79, 0x17, 0xce, 0xce, 0xa5, 0x57, 0x5f, 0xce, 0xb8, 
-	0xb1, 0x83, 0xb4, 0x5d, 0x7a, 0x33, 0xc0, 0x28, 0xd1, 0xef, 
-	0xe0, 0xdd, 0x74, 0xa8, 0x6, 0x99, 0x67, 0x8f, 0xf9, 0xbd, 
-	0xf, 0x3c, 0x93, 0x7c, 0xb0, 0xba, 0x5f, 0x32, 0x66, 0xec, 
-	0xc4, 0x6e, 0xdf, 0x2, 0x2b, 0x6e, 0x1f, 0xb8, 0x93, 0x2c, 
-	0xd3, 0x27, 0xb8, 0xb8, 0xef, 0xca, 0xc5, 0x43, 0xa7, 0x65, 
-	0xb3, 0x97, 0xfe, 0xcb, 0x8d, 0x79, 0xaf, 0xa, 0xaf, 0x64, 
-	0x4, 0xa9, 0xd4, 0xd1, 0x29, 0x12, 0xf8, 0x64, 0xae, 0xe6, 
-	0x38, 0x6f, 0xbe, 0xf1, 0x62, 0x32, 0xfb, 0x9e, 0x27, 0x92, 
-	0xdd, 0x76, 0xd9, 0x54, 0xf, 0xf7, 0xb5, 0xcd, 0x34, 0xf7, 
-	0x8f, 0x67, 0xdd, 0xad, 0x6d, 0xda, 0x72, 0xf7, 0xba, 0x3e, 
-	0xbe, 0x5e, 0x3f, 0xb6, 0x52, 0xd2, 0x85, 0xf9, 0x2, 0xba, 
-	0x75, 0x86, 0xda, 0x98, 0x31, 0x21, 0x3d, 0xee, 0x30, 0xc0, 
-	0xad, 0x13, 0x35, 0xe1, 0x70, 0xf5, 0x3d, 0x15, 0x95, 0x12, 
-	0xb, 0x16, 0xed, 0x2, 0xd4, 0x4e, 0x63, 0x1e, 0xaa, 0x32, 
-	0x7a, 0x45, 0x3f, 0x2a, 0x2a, 0x1f, 0x2d, 0x2, 0xf6, 0x2c, 
-	0x5d, 00, 0xd4, 0xcb, 0x73, 0x21, 0x1a, 0x95, 0xdf, 0x84, 
-	0x74, 0xba, 0x4d, 0x73, 0xb4, 0x36, 0x7d, 0x66, 0x33, 0x9c, 
-	0x7a, 0xa5, 0xcf, 0x3c, 0xf3, 0xac, 0xd3, 0xb4, 0xf8, 0xf7, 
-	0xb5, 0x33, 0xcf, 0x3c, 0xf3, 0x17, 0xc7, 0x1d, 0x77, 0xdc, 
-	0xd9, 0xb9, 0x3c, 0xf0, 0x25, 0x1e, 0xc4, 0xfd, 0x9b, 0x81, 
-	0xc2, 0xf7, 0x17, 0x84, 0x3a, 0xa2, 0xe9, 0x9a, 0x4c, 0xe6, 
-	0xab, 0xd0, 0xdc, 0x75, 0x5d, 00, 0x1c, 0x3e, 0xc2, 0x5b, 
-	0xe6, 0xa6, 0xf0, 0xd7, 0x7c, 0x26, 0xc4, 0x91, 0xd6, 0x5b, 
-	0xa7, 0xc7, 0x7d, 0x28, 0x2a, 0x75, 0x23, 0x4d, 0xeb, 0xa4, 
-	0xa9, 0x2d, 0xb7, 0xb2, 0xc0, 0xb4, 0xb, 0x4d, 0x2f, 0x33, 
-	0x69, 0xa9, 0x3b, 0xf8, 0x6a, 0xcb, 0x7a, 0xf5, 0xf5, 0x37, 
-	0xc2, 0xfe, 0x8d, 0x35, 0x6b, 0xf5, 0x3a, 0x29, 0xdd, 0xa0, 
-	0xea, 0x12, 0xbe, 0xbb, 0x7c, 0xa5, 0x5e, 0x26, 0x79, 0x2e, 
-	0x58, 0xb2, 0x63, 0xc6, 0x4e, 0x8, 0xc0, 0x76, 0x9b, 0x2a, 
-	0x29, 0x3, 0xdc, 0xc9, 0x63, 0x32, 0x19, 0x8f, 0xee, 0x2b, 
-	0xff, 0xee, 0x42, 0xa6, 0x3b, 0xcd, 0xed, 0xcc, 0xbe, 0x99, 
-	0x2f, 0x35, 0x2c, 0xd1, 0x88, 0x7, 0xd1, 0x2c, 0x57, 0x9c, 
-	0xa3, 0x9b, 0x10, 0x6, 0x6e, 0xbf, 0xfd, 0xf6, 0x3a, 0x33, 
-	0xaa, 0x5d, 0xef, 0xad, 0x2e, 0x92, 0x49, 0xf2, 0x44, 0xb2, 
-	0xeb, 0xc7, 0xa7, 0xea, 00, 0x85, 0xc6, 0xa0, 0xd5, 0x45, 
-	0x33, 0xbd, 0x76, 0xed, 0x1a, 0x8d, 0x72, 0xd9, 0xe7, 0x8e, 
-	0x5f, 0xfe, 0xf2, 0x97, 0xbb, 0xa1, 0x56, 0xfa, 0x12, 0xd6, 
-	0x81, 0x40, 0x1c, 0xde, 0x24, 0xc2, 0xc, 0x37, 0xe8, 0xc, 
-	0xc2, 0xbe, 0x34, 0xcb, 0x4d, 0x9b, 0x9a, 0x40, 0x1f, 0xf, 
-	0xb8, 0xf9, 0x46, 0x17, 0x67, 0xa9, 0xf1, 0x35, 0xc9, 0xbe, 
-	0x70, 0x65, 0x80, 0x8d, 0xb6, 0x46, 0x73, 0xe3, 0x1d, 0x37, 
-	0xb8, 0xe9, 0x78, 0x3, 0x3b, 00, 0x5a, 0xbf, 0xe9, 0xa7, 
-	0xba, 0x33, 0xcf, 0xfc, 0xf5, 0xc9, 0x3a, 0x72, 0xfe, 0xf3, 
-	0x7, 0x1f, 0x3c, 0x23, 0xb9, 0xf6, 0xda, 0xeb, 0x7e, 0x74, 
-	0xc6, 0x19, 0x67, 0xac, 0xa7, 0x73, 0xc6, 0x4f, 0xd3, 0x35, 
-	0x46, 0x6a, 0xfa, 0x93, 0xfb, 0x7c, 0x2f, 0x21, 0xf7, 0x33, 
-	0x60, 0x18, 0x49, 0xe, 0x95, 0x94, 0xa4, 0xce, 0x3d, 0xf7, 
-	0x9c, 0xab, 0x89, 0xc8, 0xf5, 0x29, 0xc0, 0xe1, 0x1f, 0x53, 
-	0x1c, 0xb6, 0x5a, 0xba, 0xef, 0x8, 0xcd, 0x73, 0x3, 0x9b, 
-	0xb4, 0xde, 0x38, 0xe4, 0x81, 0x79, 0x31, 0xf4, 0xa0, 0x65, 
-	0x3f, 0x6d, 0xda, 0xb4, 0x70, 0xbc, 0x34, 0x9b, 0xb4, 0xbc, 
-	0xf0, 0x55, 0x4d, 0x39, 0x33, 0x67, 0xce, 0x14, 0xf4, 0x78, 
-	0x72, 0xb2, 0x26, 0xa3, 0xfe, 0x13, 0xd9, 0xec, 0x26, 0xaa, 
-	0x65, 0xcb, 0x56, 0x26, 0x73, 0xe7, 0x2d, 0x4c, 0x56, 0x7e, 
-	0xd0, 0xa4, 0xd5, 0xf3, 0xd, 0xaa, 0xd2, 0xd8, 0x2e, 0x5f, 
-	0xf4, 0xf8, 0x96, 0x1a, 0x7, 0x6d, 0x18, 0x8f, 0x5c, 0x72, 
-	0x9c, 0xb0, 0x8b, 0x2b, 0xc7, 0x25, 0x67, 0x76, 0xc8, 0x8d, 
-	0x80, 0xfb, 0x75, 0x8d, 0x7a, 0x8c, 0xea, 0x55, 0x39, 0x46, 
-	0x28, 00, 0x3e, 0x72, 0xd4, 0x4, 0x35, 0xb0, 0x21, 0xb9, 
-	0xe7, 0xbe, 0xa7, 0xb4, 0xd7, 0xbc, 0x73, 0xde, 0xb6, 0x7a, 
-	0xf5, 0x9a, 0xb8, 0x9c, 0xaa, 0x68, 0xc7, 0x99, 0x8b, 0x85, 
-	0x80, 0xdf, 0x9c, 0xc4, 0x22, 0xa6, 0xc4, 0xc2, 0x19, 0xdf, 
-	0x52, 0x71, 0x3c, 0xa6, 0x6d, 0xa1, 0x40, 00, 0xec, 0x35, 
-	0xe8, 0x65, 0x5e, 0x7d, 0xf5, 0xd5, 0x3e, 0x69, 0x47, 0x37, 
-	0xc0, 0x46, 0x53, 0x5b, 0x7b, 0x3, 0x70, 0x4c, 0x72, 0x40, 
-	0x48, 0x9f, 0x18, 0xa0, 0x8a, 0x6, 0x8b, 0x8c, 0xb9, 0x75, 
-	0xf3, 0xe9, 0xa7, 0xff, 0xea, 0x14, 0xbd, 0x54, 0xf2, 0x5, 
-	0xed, 0x36, 0xeb, 0xcf, 0x21, 0x5, 0x3a, 0x1, 0xb5, 0xff, 
-	0xe8, 0xd1, 0xeb, 0xfd, 0xdd, 0xa9, 0xa7, 0x9e, 0xfa, 0x4f, 
-	0xba, 0xae, 0xfd, 0xbd, 0xe1, 0x8d, 0x32, 0xb6, 0x1c, 0xb2, 
-	0xd, 0x10, 0x79, 0xa0, 0xd, 0xd0, 0x2, 0xf8, 0xd0, 0xa6, 
-	0xa3, 0x18, 0x40, 0x3c, 0xa0, 0x60, 0x39, 0xac, 0x4, 0xe0, 
-	0xf, 0x3e, 0x38, 0xef, 0x5e, 0xed, 0x6b, 0xef, 0xb3, 0x39, 
-	0x38, 0xfc, 0xd3, 0xa7, 0x88, 0xc3, 0x62, 0x1a, 00, 0x47, 
-	0x6e, 0xec, 0x55, 0x66, 00, 0x21, 0xbc, 0xef, 0xad, 0x93, 
-	0x1c, 0x7, 0x22, 0x80, 0xcf, 0xfd, 0x6a, 0x9a, 0xa4, 0xf5, 
-	0xd6, 0x21, 0xcf, 0xc, 0x1e, 0xb8, 0x95, 0xef, 0xaf, 0x49, 
-	0x1e, 0x98, 0xfb, 0x7c, 0xf2, 0xde, 0xca, 0xfa, 0x64, 0xd8, 
-	0xf0, 0x71, 0xf9, 0x39, 0x76, 0xb5, 0xed, 0xd0, 0x97, 0x66, 
-	0xe0, 0xf3, 0x52, 0x91, 0x84, 0x30, 0x7d, 0x54, 0x2c, 0x6b, 
-	0xc5, 0xbf, 0xcb, 0x6a, 0x60, 0xdf, 0x1c, 0x87, 0x1d, 0x22, 
-	0xbe, 0x58, 0xa3, 0x6b, 0x17, 0x22, 0x2a, 0xa8, 0x47, 0x7, 
-	0x8, 0x30, 0xd1, 0x87, 0xd, 0x1f, 0x9f, 0xac, 0x78, 0xbf, 
-	0x3e, 0xb9, 0x57, 00, 0x5f, 0xb9, 0x42, 0xb2, 0xa9, 0x39, 
-	0x49, 0xeb, 0x5a, 0x81, 0xf, 0xd3, 0xba, 0xf, 0x9c, 0x99, 
-	0x86, 0x50, 0x10, 0xa7, 0x5c, 0x34, 0x7b, 0x5f, 0x68, 0x6f, 
-	0xb, 0x2, 0x2, 0x60, 0x21, 0x20, 0x8d, 0xb2, 0xd4, 0x90, 
-	0xf4, 0x33, 0xcf, 0x3c, 0xdb, 0xeb, 0x46, 0x54, 0x1, 0x6c, 
-	00, 0x7, 0xf0, 00, 0x36, 0x40, 0xb4, 0xc6, 0xc5, 0x1a, 
-	0xb, 0xc0, 0xd6, 0xdb, 0x5d, 0x3f, 0x5f, 0x6f, 0xbd, 0xd1, 
-	0x9f, 0x3, 0xd8, 0xde, 0x32, 0xcc, 0x3c, 0x53, 00, 0xef, 
-	0x37, 0x66, 0xcc, 0x98, 0xbf, 0x3b, 0xe9, 0xa4, 0x93, 0x8e, 
-	0x53, 0x5e, 0x3, 0x1c, 0x70, 0x73, 0x1f, 0x8d, 0xb1, 0x36, 
-	0x67, 0xfe, 0xd, 0xc0, 0x19, 0x44, 0x62, 0x8b, 0x61, 0x9d, 
-	00, 0xfc, 0xe9, 0xa7, 0x9f, 0xd1, 0x40, 0xbc, 0x8a, 0x8f, 
-	0x2, 0x6, 0xfe, 0xc2, 0x57, 0xf3, 0x9a, 0x7e, 0x24, 0xee, 
-	0x3e, 0x50, 0x7d, 0x6a, 0x72, 0xc8, 0x1, 0x26, 0xae, 0xe9, 
-	0x99, 0xa6, 0xcb, 0x32, 0x7d, 0xc2, 0x5a, 0x1c, 0x4f, 0xc8, 
-	0x91, 0xe7, 0xe, 0x2d, 0xa8, 0xe9, 0xbb, 0x8e, 0x7a, 0x79, 
-	0xe4, 0xd9, 0x64, 0xf9, 0x7b, 0xe9, 0x64, 0xf0, 0x90, 0xb1, 
-	0xe1, 0x29, 0x12, 0xe5, 0xba, 0x8c, 0x6a, 0xe8, 0x33, 0xe8, 
-	0x45, 0xe0, 0x36, 0xc0, 0x1d, 0x42, 0x2a, 0x60, 0x15, 0x13, 
-	0xd8, 0x74, 0xbb, 0x1b, 0xa6, 0x9c, 0x29, 0x4f, 0x40, 0x5, 
-	0x2c, 0x16, 0x73, 0x2a, 0x31, 0xe5, 0x4d, 0xbf, 0x20, 0x84, 
-	0x81, 0x68, 0xf0, 0xc1, 0x43, 0xd6, 0x97, 0xe6, 0xae, 0x4b, 
-	0xee, 0x9f, 0xf3, 0x9c, 0xbe, 0x40, 0x92, 0xdd, 0x5f, 0x5e, 
-	0x90, 0xb1, 0xca, 0x1f, 0x66, 0x96, 0x43, 0x3, 0x8f, 0x90, 
-	0x32, 0xd1, 0xaa, 0x95, 0x7e, 0xa1, 0xb2, 0xbb, 0xa2, 0xdd, 
-	0xe1, 0xa6, 0xb, 0x6d, 0x4, 0x91, 0xe, 0xe3, 0x58, 0x63, 
-	0x95, 0x11, 0x8e, 0xee, 0xe9, 0x8e, 0x46, 0x77, 0xd7, 0x7a, 
-	0x1, 0x6c, 0xc0, 0x8d, 0x34, 0x2, 0x4c, 0xfa, 0x87, 0x83, 
-	0x16, 0xf4, 0xda, 0x66, 0xe9, 0xb7, 0xbb, 00, 0xf8, 0xe1, 
-	0x87, 0x1f, 0xde, 0x3c, 0x7e, 0xfc, 0x6, 0x5f, 0xf8, 0xa7, 
-	0x7f, 0xfa, 0xa7, 0xef, 0x29, 0x3f, 00, 0x8f, 0xf, 0x7c, 
-	0xf8, 0xd0, 0x1, 0xce, 0x74, 0x4a, 0xda, 0x29, 0xf0, 0x32, 
-	0xe6, 0x2b, 0x71, 0xf8, 0x8d, 0x37, 0xff, 0x55, 0xd7, 0x9a, 
-	0x1d, 0x72, 0xa0, 0x8f, 0x24, 0x86, 0xc7, 0x60, 0xee, 0x47, 
-	0x42, 0x9c, 0xc3, 0x5e, 0x95, 0x23, 0xd4, 0x48, 0x6d, 0x4b, 
-	0x99, 0xac, 0x49, 0xe6, 0xcd, 0x7f, 0x31, 0x59, 0xf6, 0x5e, 
-	0x2a, 0xe9, 0x3f, 0x70, 0x74, 0xd8, 0xa0, 0x62, 0x60, 0xd7, 
-	0x52, 0x79, 0xc9, 0x70, 0x9d, 0xea, 0xad, 0x5, 0x81, 0xe0, 
-	0x2, 0x90, 0x15, 0x73, 0x8, 0x46, 0xbb, 0xb8, 0xee, 0xc0, 
-	0x4d, 0x66, 0xdf, 0x4, 0x91, 0xe, 0x99, 0xe4, 0xef, 0x6a, 
-	0x60, 0xe0, 0xed, 0x91, 0x2e, 0x84, 0xba, 0x4b, 0x88, 0x99, 
-	0x45, 0x67, 0xb1, 0x8a, 0x3e, 0x70, 0xf0, 0xd8, 0x64, 0xd9, 
-	0x8a, 0x54, 0x32, 0x47, 0xc, 0x58, 0xae, 0xd7, 0x41, 0x39, 
-	0x21, 0xb2, 0xb7, 0x8e, 0x72, 0xec, 0x29, 0x87, 0x38, 0x1d, 
-	0x86, 0x59, 0xae, 0x47, 0x2c, 0x6e, 0x4b, 0xaf, 0x8a, 0x31, 
-	0x7d, 0x42, 0x77, 0x16, 0x65, 0x1, 0x98, 0xf, 0x3e, 0x78, 
-	0x3f, 0xf3, 0xc2, 0xb, 0x2f, 0xc0, 0xab, 0xaa, 0x5d, 0x1f, 
-	0x2, 0xbb, 0x59, 0xc0, 0xee, 0xf1, 0xa0, 0x5, 0x56, 0xba, 
-	0xa5, 0xd1, 0x9b, 0x36, 0xdc, 0x70, 0xe2, 0x17, 0x7e, 0xf2, 
-	0x93, 0x9f, 0x7c, 0x53, 0x15, 0x6, 0xe0, 0xbc, 0x25, 0xe2, 
-	0x13, 0x36, 0x3f, 0x54, 0x80, 0xbf, 0xf0, 0xc2, 0xc2, 0x8c, 
-	0x84, 0xb7, 0x3, 0x9e, 0x32, 0x95, 0x82, 0xa7, 0xf6, 0xe6, 
-	0xb3, 0xc1, 0x8, 0xef, 0x6b, 0x75, 0xc8, 0x81, 0xac, 0xcf, 
-	0xb0, 0x68, 0x17, 0xcb, 0x8, 0x71, 0x5c, 0xdc, 0xbf, 0xb5, 
-	0x94, 0xc1, 0x67, 0x84, 0x90, 0xe7, 0xf9, 0x8f, 0xbc, 0x94, 
-	0x68, 0x1b, 0x79, 0xd2, 0xdc, 0x6f, 0x54, 0xd8, 0x52, 0x4a, 
-	0x1b, 0xec, 0xaa, 0xad, 0x7f, 0xee, 0x19, 0x37, 0x4f, 0x7d, 
-	0x58, 0x67, 0x1, 0x28, 0xc8, 0x32, 0xde, 0xe0, 0x56, 0xb4, 
-	0x8b, 0x99, 0xde, 0xd5, 0x2c, 0x8f, 0xd5, 0x3a, 0x77, 0xc8, 
-	0xc5, 0x84, 0x58, 0x62, 0x7c, 0x57, 0x1a, 0x3c, 0x7b, 0xa5, 
-	0x8a, 0xbf, 0x31, 0xd3, 0x68, 0x28, 0xf, 0xee, 0xfb, 0xe9, 
-	0xeb, 0x28, 0xcb, 0x44, 0xea, 0xee, 0x7b, 0x9e, 0xd6, 0xc7, 
-	0xd2, 0x7a, 0x7, 0xee, 0x98, 0xbe, 0x47, 0x60, 0x3a, 0x8c, 
-	0xb8, 0x7c, 0x8a, 0xcf, 0xc3, 0xf6, 0xd6, 0xb9, 0xc, 0x68, 
-	0x9a, 0x36, 0x9a, 0xdb, 0xda, 0x5b, 0x8b, 0x7a, 0x69, 0x4e, 
-	0xa5, 0xa9, 0xd6, 0xf5, 0x25, 0xb0, 0x39, 0xf3, 0xac, 0xd2, 
-	0x83, 0x16, 0x58, 0x8, 0xd4, 0xae, 0xb3, 0xa6, 0x96, 0x96, 
-	0x49, 0x5f, 0xd4, 0x2, 0xdb, 0x3f, 0xa8, 0xde, 0x68, 0x6f, 
-	0xfc, 0x87, 0xe, 0x70, 0xf8, 0x26, 0xe1, 0xad, 0x43, 0x36, 
-	0xf0, 00, 0xdc, 0x71, 0xf8, 0xee, 0x3e, 0x25, 0xde, 0x1b, 
-	0xa7, 0x4f, 0x20, 0xb3, 0xf0, 0x9a, 0x7, 0x77, 0x4e, 0x3e, 
-	0xf2, 0x8a, 0xc0, 0xf4, 0x1d, 0x56, 0x5b, 0x16, 0x72, 0x7c, 
-	0x97, 0xe4, 0xf9, 0x9d, 0x65, 0x99, 0xa4, 0xa1, 0x71, 0x78, 
-	0x78, 0xbb, 0x8b, 0x76, 0xc4, 0xe5, 0x54, 0x4b, 0x53, 0x83, 
-	0x1e, 0xb7, 0x30, 0x2d, 0x32, 0x16, 0x1d, 0x1a, 0xdc, 0x56, 
-	0x28, 0xe, 0x43, 0x11, 0xe5, 0x34, 0x77, 0xf1, 0x4d, 0x79, 
-	0x62, 0x5a, 0x28, 0x78, 0x33, 0x57, 0x58, 0x20, 0x50, 0xcd, 
-	0x9f, 0xb8, 0x83, 00, 0x4, 0x9b, 0xe4, 0x9b, 0xf4, 0x85, 
-	0x94, 0xa5, 0xef, 0xe8, 0x5d, 0xd9, 0x5e, 0x82, 0xdb, 0xf5, 
-	0xa0, 0x53, 0xf0, 0x80, 0xcf, 0x9e, 0xf9, 0x26, 0x8b, 0x28, 
-	0x5e, 0xe4, 0x70, 0xde, 0x5a, 0x42, 0x68, 0xbb, 0xa3, 0x4c, 
-	0x9f, 0x90, 0xe, 0xe4, 0x23, 0x73, 0xac, 0x9a, 0x63, 0x5e, 
-	0x56, 0xea, 0xfa, 0x1a, 0xd8, 0xd5, 0x9e, 0x79, 0x6, 0xc0, 
-	0xa5, 0xc1, 0x1b, 0x27, 0x4d, 0x9a, 0x7c, 0xcc, 0xb1, 0xc7, 
-	0x1e, 0xff, 0x35, 0xd5, 0xdb, 00, 0x67, 0x91, 0xd, 0x75, 
-	0xb6, 0xce, 0x35, 0x38, 0xfc, 0x62, 0xa5, 0x9c, 0x97, 0x45, 
-	00, 0xb5, 0x7, 0x4b, 0x83, 0xc2, 0xa1, 0xe5, 0xa7, 0x52, 
-	0xde, 0x16, 0xe7, 0xa3, 0xff, 0x91, 0x3, 0xcb, 0x47, 0x1c, 
-	0x42, 0xdb, 0x7d, 0x5b, 0x7c, 0x5f, 0x35, 0xbf, 0x99, 0xcf, 
-	0x2f, 0x79, 0x5b, 0xfb, 0xc0, 0xd3, 0x43, 0x92, 0xa9, 0x53, 
-	0xa7, 0xe6, 0x57, 0xfe, 0xa1, 0x1, 0xfd, 0x38, 0xc, 0x3f, 
-	0x2a, 0xf8, 0x83, 0x32, 0x15, 0x5d, 0xce, 0x9b, 0x37, 0xe, 
-	0x9, 0x8d, 0xd1, 0x38, 0x5e, 0x40, 0xad, 0x1c, 0xb8, 0xc9, 
-	0x54, 0x7c, 0x33, 0x44, 0xda, 0x65, 0xfb, 0xbf, 0x5c, 0x2b, 
-	0xb8, 0x21, 0x4a, 0x3, 0xed, 0x1, 0x1d, 0xef, 0xad, 0xb6, 
-	0x75, 0xc, 0x48, 0xad, 0x5e, 0x5d, 0x57, 0x30, 0xea, 0x90, 
-	0xb7, 0x5a, 0xe7, 0xce, 0x31, 0xf8, 0xf8, 0x6d, 0xe0, 0xe9, 
-	0xc5, 0x8e, 0x8c, 0x4c, 0xb2, 0x6a, 0x49, 0x16, 0xe4, 0x37, 
-	0x7d, 0x12, 0x5d, 0x6, 0x82, 0x87, 0x30, 0x22, 0x94, 0xf8, 
-	0xe5, 0xcb, 0x97, 0x65, 0xf4, 0x75, 0x4d, 0x78, 0xd5, 0xa3, 
-	0xfb, 0xa8, 0x81, 0xed, 0xa, 0xe6, 0x56, 0xd1, 0x1b, 0x37, 
-	0xda, 0x68, 0xf2, 0x97, 0x8e, 0x3d, 0xf6, 0xd8, 0xaf, 0x28, 
-	0x1d, 0x80, 0x63, 0xa2, 0x7f, 0x28, 00, 0xd7, 0x67, 0x84, 
-	0xe9, 0x1b, 0x7d, 0x33, 0x2e, 0xcb, 0xc3, 0x18, 0xdc, 0xc4, 
-	0xe9, 0x43, 0x83, 0x8f, 0x3e, 0xa8, 0xd5, 0xf1, 0xc, 0x5b, 
-	0x53, 0xb4, 0xbc, 0x45, 00, 0xdd, 0x52, 0xb4, 0x7b, 0x53, 
-	0xc6, 0xaa, 0x35, 0x75, 0x19, 0x1d, 0xb6, 0x90, 0xda, 0x48, 
-	0x1f, 0x6d, 0xa0, 0xee, 0xd0, 0x8a, 0xe5, 0xc6, 0xb4, 0x1d, 
-	0x56, 0xd2, 0x16, 0xf0, 0x26, 0xdc, 0xbd, 0xa1, 0xbc, 0xc8, 
-	0x55, 0xb1, 0x37, 0x4e, 0x1d, 0xe6, 0x49, 0x96, 0x3, 0xb7, 
-	0x33, 0x3a, 0x34, 0x41, 0xc0, 0xcd, 0xc7, 0xdf, 0xd9, 0x30, 
-	0x51, 0x93, 0x8b, 0x1b, 0x4b, 0x9c, 0xe, 0x65, 0x84, 0x6b, 
-	0xea, 0x37, 0x52, 0xaf, 0xbc, 0x6d, 0x58, 0x13, 0x4d, 0x6e, 
-	0x8a, 0x99, 0x45, 0x1c, 0x61, 0x70, 0xe7, 0x1, 0x40, 0x46, 
-	0x3f, 0xed, 0x7e, 0xaa, 0x8, 0x74, 0x3d, 0x55, 0x22, 0xa6, 
-	0x4d, 0x19, 0x6, 0x37, 0x21, 0x5f, 0x41, 0x7d, 0xfd, 0xf5, 
-	0xc5, 0xa9, 0x9e, 0x6, 0xc0, 0xbf, 0x16, 0x60, 0xbb, 0xad, 
-	0x1c, 0x29, 0xcc, 0x87, 0x2, 0xf5, 0xa5, 0xcd, 0x2f, 0xff, 
-	0xf0, 0x87, 0x3f, 0xfc, 0x7b, 0xa5, 0x17, 0x3, 0x1c, 0x59, 
-	0x81, 0x7f, 0xcc, 0x9f, 0xfa, 0x6c, 0x15, 0x1d, 0x3e, 0xf1, 
-	0x8d, 0x2e, 0xed, 0xe4, 0xa, 0xab, 0xe4, 0xc8, 0x3, 0x83, 
-	0x3e, 0x21, 0xfc, 0xf4, 0x20, 0xea, 0x30, 0xee, 0x67, 0xd5, 
-	0xa3, 0x2a, 0xb7, 0x68, 0xd1, 0xa2, 0xe, 0x1, 0x3c, 0x13, 
-	0xcb, 0x85, 0xfb, 0xb2, 0x2f, 0xe8, 0x23, 0xbf, 0xcd, 0x92, 
-	0x63, 0x3e, 0x8, 0x49, 0xfd, 0xa1, 0x69, 0x59, 0xa4, 0xa2, 
-	0xfe, 0x4d, 0xbc, 0x9a, 0x76, 0x68, 0x63, 0xf, 0x7b, 0xfa, 
-	0x59, 0x4c, 0x83, 0xf7, 0x9e, 0x73, 0x3b, 0x34, 0x46, 0x9, 
-	0xb, 0x5c, 0x39, 0x70, 0x3b, 0x93, 0x41, 0xcd, 0x8d, 0x21, 
-	0xae, 0x91, 0x8f, 0xc7, 0x61, 0xac, 0xce, 0xd6, 0xe4, 0x68, 
-	0x54, 0xec, 0x61, 0x34, 0x9a, 0x63, 0x5b, 0xed, 0x45, 0xe7, 
-	0xb, 0x9d, 0xb5, 0xba, 0x98, 0xa6, 0x99, 0x8, 0x6d, 0xd2, 
-	0x9, 0x95, 0x26, 0xd0, 0xbd, 0x5e, 0xfb, 0xb0, 0x9f, 0xab, 
-	0x98, 0xcb, 0xa1, 0xc, 0xe8, 0x32, 0x70, 0x10, 0x22, 0x88, 
-	0x8, 0x25, 0xb, 0x55, 0x68, 0xef, 0x7b, 0xee, 0xb9, 0xb7, 
-	0xec, 0x40, 0x62, 0x60, 0xc7, 0x1f, 0xbe, 0x17, 0x79, 0x16, 
-	0x32, 0x8a, 0x9f, 0x63, 0x17, 0x3f, 0xee, 0x2a, 0x5e, 0x15, 
-	0x6f, 0xee, 0xcb, 0x73, 0xc5, 0xf9, 0x10, 0xdf, 0xa1, 0x87, 
-	0x1e, 0x2a, 0xd, 0xbe, 0xf1, 0xd7, 0x7e, 0xf0, 0x83, 0x1f, 
-	0x7c, 0x51, 0xf5, 0x89, 0x4d, 0x74, 0x56, 0x84, 0xfa, 0x1c, 
-	0xe0, 0xf7, 0xdc, 0x73, 0x4f, 0x6, 0xc0, 0xc1, 0xbb, 0x18, 
-	0xd4, 0x6, 0xb6, 0x4d, 0x72, 0xf3, 0x5d, 0x75, 0xa8, 0xd9, 
-	0xd1, 0xff, 0xe2, 0x7d, 0xda, 0x7d, 0x46, 0xbf, 0xd9, 0x5b, 
-	0x66, 0x7a, 0x53, 0xce, 0xb4, 0x69, 0xd3, 0xc2, 0x5a, 0x92, 
-	0xeb, 0x6e, 0xd9, 0xa3, 0xc2, 0xd0, 0xc7, 0xd5, 0x42, 0x5f, 
-	0x78, 0x6b, 0x57, 0xbd, 0x99, 0xeb, 0xc5, 0xe0, 0xce, 0x63, 
-	0x52, 0xe9, 0xc4, 0xf1, 0x5, 0xae, 0x3b, 0x70, 0xc7, 0x99, 
-	0xd, 0xf2, 0xe, 0x8d, 0x22, 0xcf, 0x4b, 0x73, 0xf3, 0x3c, 
-	0xb4, 0x2a, 0x17, 0x37, 0xca, 0xd, 0x25, 0xb4, 0xd7, 0x8, 
-	0xce, 0x6a, 0x69, 0x55, 0x34, 0x8b, 0x33, 0x53, 0x6, 0xf4, 
-	0xcc, 0x54, 0xe2, 0xee, 0x48, 0x56, 0xb3, 0x59, 0x75, 0x54, 
-	0xfd, 0x8b, 0x6f, 0xab, 0xea, 0xb7, 0xcb, 0xe0, 0x26, 0xe8, 
-	0x23, 0x1c, 0x8c, 0xd2, 0x94, 0x43, 0x88, 0x97, 0x16, 0xd4, 
-	0x5e, 0xf3, 0x97, 0x59, 0xa1, 0xef, 0x42, 0x3b, 0x6, 0xb6, 
-	0x3e, 0x7c, 0x3f, 0x4b, 0x19, 0x68, 0xf4, 0x47, 0xe, 0x6c, 
-	0x57, 0x14, 0x80, 0x6b, 0x91, 0xad, 0x61, 0xe3, 0x8d, 0xa7, 
-	0x7c, 0x43, 00, 0xff, 0x82, 0xd2, 0x31, 0xcf, 0x1, 0x39, 
-	0x26, 0x7a, 0xd5, 00, 0xd7, 0xcb, 0x26, 0xf7, 0x94, 0xdb, 
-	0xe8, 0x82, 0x99, 0xfc, 0xd2, 0x4b, 0x2f, 0xf3, 0x92, 0x45, 
-	0x3a, 0x6, 0x37, 0x71, 0xf3, 0x13, 0xfe, 0x12, 0x8f, 0xe5, 
-	0x47, 0xf5, 0xa8, 0xda, 0xd1, 0xef, 0xbc, 0x73, 0xf, 0xf0, 
-	0xa0, 0x87, 0x8f, 0x81, 0x6d, 0x39, 0x8c, 0xfb, 0xb7, 0xda, 
-	0x42, 0xb0, 0xe, 0xe5, 0x83, 0x65, 0x60, 0x19, 0x34, 0x3d, 
-	0x87, 0xd0, 0x24, 0x5e, 0x8d, 0xd3, 0xe3, 0xbb, 0x7a, 0xd5, 
-	0xff, 0x65, 0xdd, 0x63, 0x6d, 0xed, 0xd0, 0xa0, 0x8e, 0xb1, 
-	0x9a, 0x27, 0xdd, 0x13, 0xb8, 0xd, 0x6a, 0x13, 0x6b, 0x57, 
-	0x21, 0x6f, 0xeb, 0xee, 0x55, 0x2c, 0x80, 0x54, 0xe3, 0x68, 
-	0x50, 0xec, 0xd, 0x42, 0x37, 0x5a, 0x3, 0x46, 0x4a, 0x34, 
-	0x4b, 0x56, 0xb2, 0xda, 0x72, 0x4c, 0xdb, 0xe0, 0x73, 0x67, 
-	0x42, 0x5f, 0x26, 0x60, 0xaf, 0xcb, 0xa0, 0x3e, 0x31, 0x6d, 
-	0x3, 0x1c, 0x60, 0x33, 0x88, 0xe4, 0xb4, 0x77, 0x72, 0xfb, 
-	0xed, 0x77, 0x14, 0x94, 0x55, 0x2, 0xd8, 0x68, 0x66, 0x18, 
-	0xf9, 0x91, 0x6a, 0x6c, 0xda, 0x13, 0x3b, 00, 0xae, 0x45, 
-	0xb6, 0x86, 0x29, 0x53, 0xa6, 0x7e, 0x53, 00, 0xff, 0x9c, 
-	0xae, 0xf5, 0x4, 0x70, 0x36, 0xd3, 0x94, 0xda, 0xe8, 0xf2, 
-	0x1e, 0x7b, 0xd1, 0xcb, 0xed, 0x64, 0xbb, 0xed, 0xb6, 0xdb, 
-	0xa5, 0xb5, 0xdf, 0xa, 0x1a, 0x1b, 0xbe, 0x1, 0x6a, 0x42, 
-	0xfa, 0xb, 0x5e, 0xc2, 0x63, 0x3c, 0xe, 0x1e, 0x57, 0xb, 
-	0x8a, 0x70, 0x63, 0xee, 0xf, 0xfd, 0x6e, 0x93, 0x1c, 0x80, 
-	0x7b, 0xd0, 0x70, 0x19, 0x84, 0x96, 0xcf, 0xf8, 0xbe, 0x6a, 
-	0xe2, 0xc8, 0x97, 0x6, 0xf4, 0x2e, 0x2b, 0xf1, 0x94, 0x55, 
-	0x2b, 0xfd, 0x1c, 0xce, 0xd6, 0xe8, 0x49, 0x2, 0x72, 0x2, 
-	0xe, 0xb1, 0xde, 0xc0, 0xa5, 0x31, 0x49, 0x1c, 0x39, 0xe3, 
-	0x41, 0x57, 0x81, 0xbc, 0x75, 0x7, 0x6e, 0xe5, 0xf, 0x8e, 
-	0x9b, 0x71, 0x26, 0xd6, 0x26, 0xd, 0xf8, 0x6c, 0xad, 0x8f, 
-	0x96, 0xdc, 0x59, 0x31, 0x53, 0x69, 0x3c, 0x2f, 0x78, 0xb0, 
-	0xa8, 0x92, 0x2d, 0xaa, 0xb6, 0xbf, 0xee, 0x7c, 0xf, 0x18, 
-	0xd0, 0xb5, 0x47, 0x60, 0xb4, 0xe2, 0x98, 0x7e, 0xf1, 0xc5, 
-	0x17, 0x6b, 0x23, 0x1e, 0xdd, 0x65, 0x21, 0xa0, 0xd, 0xd0, 
-	0xb7, 0x30, 0x22, 0x34, 0x16, 0xd0, 0xa1, 0x43, 0x87, 0xa6, 
-	0xde, 0x7e, 0x7b, 0x69, 0xf2, 0xd4, 0x53, 0x4f, 0x85, 0x36, 
-	0x19, 0xd8, 0x73, 0xe6, 0xcc, 0x9d, 0x27, 0x8d, 0x7d, 0xab, 
-	0xc8, 0x1, 0x68, 0x3a, 0xcc, 0x5a, 0x9b, 0x38, 0x8f, 0x3b, 
-	0x3e, 0x54, 0x53, 0x5c, 0xe5, 0x95, 0x74, 0x6c, 0xca, 0x39, 
-	0xf4, 0xd0, 0x43, 0xd0, 0xe0, 0xdf, 0xfe, 0xde, 0xf7, 0x7e, 
-	0x70, 0xb4, 0x32, 0x75, 0x7, 0x70, 0x4, 0xae, 0x14, 0xc0, 
-	0x83, 0x55, 0xa2, 0xad, 0xaa, 0x7a, 0x1f, 0xbc, 0x50, 0x83, 
-	0xc3, 0x97, 0xa5, 0x4b, 0x97, 0x64, 0xc4, 0xbb, 0xf0, 0x2d, 
-	0x37, 0x40, 0x6d, 0x80, 0x3, 0x6c, 0x78, 0x49, 0x8, 0x7f, 
-	0xd, 0x8c, 0x92, 0x15, 0xad, 0x30, 0x71, 0xe1, 0xc2, 0x85, 
-	0x6c, 0x5e, 0x9, 0xf3, 0x7a, 0xf7, 0x99, 0x65, 0xa3, 0xaf, 
-	0xca, 0x40, 0x7e, 0x35, 0x37, 0xd6, 0x3b, 0x27, 0x59, 0xb9, 
-	0xb0, 0x8c, 0x53, 0xc5, 0x58, 0x36, 0x2b, 0xac, 0x72, 0xc8, 
-	0x86, 0xf5, 0xa7, 0x15, 0xfe, 0x57, 0xf4, 0x3, 0x1e, 0xc7, 
-	0xc0, 0x46, 0xae, 0x8c, 0xcd, 0x92, 0xb8, 0x29, 0x9, 0xee, 
-	0xdc, 0x8, 0xc0, 0xd, 0xf6, 0x10, 0xc1, 0x43, 0xbc, 0x5d, 
-	0xa3, 0xc9, 0x23, 0x9a, 0xbf, 0xf4, 0xc9, 0xa2, 0x9a, 0x19, 
-	0x40, 0x67, 0xf2, 0x98, 0x42, 0xf4, 0x6b, 0x76, 0x31, 0xe8, 
-	0x4c, 0xd7, 0x1d, 0x9, 00, 0x79, 0xec, 0x3, 0xc8, 0xaa, 
-	0x79, 0x54, 0x55, 0xaa, 0x32, 0x1e, 0x3c, 0x8, 0x63, 0xfa, 
-	00, 0x1b, 0x8f, 0xe6, 0x66, 0x1d, 0x41, 0x83, 0x49, 0x4a, 
-	0x73, 0x6f, 0x7d, 0x4e, 0xe6, 0x9d, 0x4, 0xd3, 0x74, 0xee, 
-	0xdc, 0x7, 0xe7, 0xfe, 0xf1, 0x8f, 0x33, 0x1, 0x36, 0x20, 
-	0xb6, 0x39, 0x4e, 0xfc, 0xaf, 0xa, 0xd8, 0x6e, 0x33, 0x2f, 
-	0xc1, 0x68, 0xe, 0xde, 0x30, 0x75, 0xea, 0x94, 0xef, 0x7e, 
-	0xff, 0xfb, 0xdf, 0x3f, 0x4a, 0xe9, 0xb5, 00, 0x3c, 0xb4, 
-	0x4f, 0x1a, 0xfc, 0x5a, 0x3, 0x1c, 0x6d, 0x74, 0xf7, 0xdd, 
-	0xf7, 0x68, 0x5, 0x78, 0x55, 0x9a, 0x3e, 0xc1, 0xc3, 0x2f, 
-	0xc0, 0xd, 0xa0, 0xe1, 0x61, 0xdc, 0x7f, 0xc4, 0xd, 0xe, 
-	0xd7, 0xad, 0x9a, 0x90, 0xfe, 0x16, 0xe8, 0x2, 0x4d, 0xe4, 
-	00, 0x59, 0x23, 0xb4, 0x8f, 0xe5, 0xa6, 0x37, 0xe5, 0xf8, 
-	0x71, 0xab, 0x7, 0xb, 0xea, 0x1d, 0xc7, 0xf9, 0x8d, 0xab, 
-	0xa6, 0xc, 0xe1, 0xac, 0x55, 0x66, 0xf9, 0x73, 0xba, 0x2d, 
-	0x60, 0x4f, 0x21, 0x4a, 0xd6, 0xde, 0xb8, 0x34, 0x4e, 0x75, 
-	0xa9, 0xd3, 0x95, 0x4, 0x77, 0xe7, 0xe5, 0xec, 0x22, 0x9a, 
-	0x7e, 0x5b, 0x6b, 0x7, 0x80, 0x2f, 0x5b, 0xb6, 0xec, 0xc9, 
-	0xc5, 0x8b, 0x17, 0x93, 0x56, 0x93, 0x73, 0x67, 0x11, 0x9a, 
-	0x1, 0x30, 0x9c, 0x7d, 0xbf, 0xa2, 0x5d, 0x13, 0x4d, 0xdf, 
-	0x14, 0x77, 0x94, 0x69, 0xbb, 0x13, 0x9, 0x35, 0xad, 0xc8, 
-	0x48, 0x6b, 0xd0, 0x8e, 0x5e, 0xbb, 0xb8, 0xfe, 0xd0, 0xb6, 
-	0x60, 0x2, 0x6e, 0x4, 0x75, 0xc4, 0x88, 0x11, 0x6a, 0xcf, 
-	0xbb, 0x99, 0xcb, 0x2e, 0xfb, 0x9f, 0x4, 0x60, 0xcf, 0x9c, 
-	0x19, 0x8e, 0x46, 0x8a, 0x81, 0x8d, 0xd6, 0xc6, 0x93, 0xf6, 
-	0x57, 0xa1, 0xb1, 0x8b, 0x99, 0x32, 0x54, 0x1f, 0x58, 0xd7, 
-	0x87, 0xa, 0xd0, 0xe0, 0x3f, 0xf8, 0xce, 0x77, 0xbe, 0x73, 
-	0x84, 0xae, 0x97, 0x3, 0xb8, 0x35, 0x4b, 0xac, 0xc1, 0x3d, 
-	0x80, 0x5, 0xeb, 0x44, 00, 0xbf, 0x7a, 0xee, 0xdc, 0x79, 
-	0x73, 0x2e, 0xbd, 0xf4, 0x4f, 0x61, 0x37, 0xdf, 0x80, 0x1, 
-	0xfd, 0xc3, 0x7, 0x14, 0xe1, 0x97, 0x3d, 0x3c, 0x44, 0x16, 
-	00, 0x38, 0xc0, 0xa0, 0x3f, 0xe1, 0x73, 0x35, 0x80, 0x28, 
-	0x6e, 0x3, 0xfd, 0xfd, 0xca, 0x2b, 0xaf, 0x84, 0xfe, 0x89, 
-	0x81, 0x6d, 0xe0, 0x11, 0xe2, 0x71, 0x94, 0x55, 0x8b, 0x43, 
-	0x6e, 0x65, 0x3a, 0x87, 0x1, 0x3, 0x1a, 0xc8, 0x43, 0x5c, 
-	0x7f, 0x68, 0x5a, 0x36, 0xab, 0x69, 0x8b, 0xc0, 0xdd, 0x21, 
-	0xda, 0x2f, 0xea, 0x76, 0x83, 0xdb, 0x61, 0x8c, 0xc9, 0xaa, 
-	0xc1, 0xcd, 0xd, 0x38, 0x8f, 0xe, 0xf9, 0xd1, 0x42, 0xbb, 
-	0x7c, 0x5e, 0xd0, 0xaa, 0x79, 0x43, 0xb5, 0x87, 0x2, 0xba, 
-	0x71, 0x10, 0x75, 0x87, 0x99, 0xc1, 0x30, 0x3, 0xb3, 0x46, 
-	0xb4, 0x7b, 0xd, 0x3c, 0xca, 0x81, 0xbe, 0x3b, 0x8d, 0xd0, 
-	0xe0, 0x53, 0x7a, 0x5a, 0xe5, 0xa4, 0xaa, 0xad, 0x3b, 0x75, 
-	0x8e, 0x9d, 0xcb, 0x20, 0x84, 0x36, 0xde, 0x42, 0x9, 0xb0, 
-	0xd1, 0x44, 0xa4, 0x69, 0xae, 0xd7, 0x7e, 0xc7, 0x1d, 0xb7, 
-	0xcf, 0x12, 0xb0, 0x6f, 0xd6, 0xfd, 0x9e, 0x97, 0xc6, 0xa0, 
-	0xfe, 0xab, 0x5, 0xb6, 0xdb, 0x3b, 0x6c, 0xd8, 0xd0, 0x60, 
-	0xa2, 0x6f, 0xb2, 0xc9, 0xa6, 0xc7, 0x7e, 0xfb, 0xdb, 0xdf, 
-	0x3e, 0x4c, 0xe9, 0xd5, 00, 0xdc, 0x83, 0x57, 0xb0, 0x4e, 
-	0x66, 0xce, 0x3c, 0xe7, 0x7f, 0x64, 0xa6, 0xcf, 0x7c, 0xfa, 
-	0xe9, 0xa7, 0x83, 0x7c, 0xf1, 0x8, 0xe, 0x5e, 0xa1, 0xbd, 
-	0xad, 0xb9, 0xe1, 0x5b, 0xdc, 0x7f, 0xf0, 0xb8, 0x56, 0x47, 
-	0x3f, 0xd3, 0xdf, 0x68, 0x55, 0xf7, 0x91, 0x1, 0x6e, 0xf9, 
-	0xa0, 0x2c, 0x5c, 0x6f, 0xca, 0x41, 0x6e, 0x79, 0xab, 0x2d, 
-	0xa6, 0x9, 0x5d, 0x7c, 0x2c, 0x2b, 0xd5, 0x94, 0x41, 0xdd, 
-	0x85, 0xb3, 0x7a, 0x69, 0xee, 0xd8, 0x2c, 0x37, 0xb8, 0x8d, 
-	0x4b, 0xf8, 0x58, 0x12, 0x33, 0x3d, 0xd, 0x53, 0xc5, 00, 
-	0x87, 0x88, 0x36, 0x93, 0xb5, 0xb7, 0x2a, 0x7c, 0x85, 0xf9, 
-	0x40, 0x35, 0x8e, 0x86, 0xc5, 0xd, 0x75, 0xe3, 0x9, 0x61, 
-	0x8a, 0x76, 0x10, 0x5, 0xe0, 0x55, 0x43, 0xb3, 0x38, 0xaf, 
-	0xcb, 0x70, 0x39, 0x66, 0xb6, 0x3b, 0x14, 0x8d, 0xc0, 0x8a, 
-	0xe6, 0xa2, 0x45, 0x8b, 0xdc, 0xb6, 0x62, 0x12, 0x15, 0xfd, 
-	0x86, 0x3e, 0xce, 0x6d, 0x40, 0x70, 0xf0, 0xd0, 0x47, 0x48, 
-	0x29, 0xf7, 0xc9, 0x27, 0x9f, 0x6c, 0x55, 0x39, 0xf, 0x5c, 
-	0x7b, 0xed, 0xb5, 0x77, 0x29, 0x2b, 0xc0, 0xb6, 0x26, 0x23, 
-	0xb4, 0xb7, 0xc6, 0xe6, 0xed, 0x2b, 0x6b, 0x3f, 0x88, 0xa3, 
-	0x4a, 0x58, 0x9d, 0xee, 0xd3, 0xc7, 0x5d, 0xa2, 0x57, 0x93, 
-	0x63, 0xf7, 0xdd, 0x21, 0x87, 0x1c, 0x5c, 0xbf, 0xe9, 0xa6, 
-	0x9b, 0xfd, 0xf8, 0x5b, 0xdf, 0xfa, 0xd6, 0xa1, 0x22, 0x52, 
-	0xc, 0x70, 0xea, 0x1b, 0xe4, 0x43, 0x21, 0xed, 0x40, 0x83, 
-	0xfb, 0x8d, 0x32, 0xda, 0xc8, 0x20, 0x16, 0x34, 0xf8, 0x13, 
-	0x4f, 0x3c, 0xf1, 0x88, 0x4e, 0x55, 0xbd, 0x40, 0xeb, 0x1f, 
-	0x12, 0xa5, 0xf6, 0xbc, 0x49, 0xe, 0xef, 0xf0, 0xf4, 0x15, 
-	0xfc, 0x73, 0x1f, 0x9a, 0xd7, 0xba, 0xbf, 0x6a, 0x27, 0xfe, 
-	0x6b, 0x6e, 0xbf, 0x34, 0x3c, 0x6a, 0x83, 0xae, 0xe5, 0xc0, 
-	0x65, 0xb8, 0xff, 0x8, 0x7b, 0x53, 0xe, 0x3, 0x88, 0x2c, 
-	0xcf, 0x2e, 0x8f, 0xd9, 0x2c, 0xdb, 0xd0, 0xae, 0x96, 0x3e, 
-	0xf8, 0x62, 0x47, 0xa8, 0x3c, 0x78, 0x43, 0xb9, 0xc2, 0x57, 
-	0x78, 0x6c, 0xad, 0x5d, 0x16, 0xd8, 0xca, 0xd3, 0x75, 0x6f, 
-	0x39, 0x89, 0x91, 0xf3, 0xcd, 0x10, 0x74, 0xc7, 0x85, 0x42, 
-	0xb4, 0x38, 0xb1, 0x40, 0x8b, 0x6a, 0xa4, 0x55, 0xed, 0xdc, 
-	0x50, 0x33, 0x94, 0x8e, 0x24, 0xe, 0x28, 0x34, 0xc2, 0xb2, 
-	0xf0, 0x51, 0x35, 0x4d, 0xdf, 0x10, 0xd3, 0x86, 0x26, 0xde, 
-	0xc0, 0x73, 0xe7, 0x6a, 0x34, 0x4c, 0x4b, 0x73, 0xf8, 0x96, 
-	0x9a, 0x43, 0xca, 0x8a, 0xdb, 0x60, 0xc1, 0x81, 0xe0, 0x43, 
-	0xf, 0x3d, 0xb4, 0x56, 0x65, 0xcc, 0xf9, 0xcb, 0x5f, 0xfe, 
-	0x32, 0x4b, 0x3f, 0x2d, 0xdc, 0x34, 0x8c, 0x38, 0x42, 0xe, 
-	0xd8, 0xf1, 00, 00, 0xef, 0xce, 0xfb, 0xab, 0x3, 0xb6, 
-	0xea, 0x16, 0x1c, 0xa7, 0xbb, 0xea, 0xc0, 0x7, 00, 0xfe, 
-	0x93, 0x7f, 0xfc, 0xc7, 0x7f, 0x9c, 0xa1, 0x44, 0x3, 0x9c, 
-	0xd7, 0x45, 0xe3, 0xc7, 0x64, 0x1e, 0xa4, 00, 0xb8, 0xdb, 
-	0xe, 0xb8, 0x3d, 0xa0, 0xad, 0xd4, 0x5e, 0xf2, 0x87, 0x1e, 
-	0x7c, 0xf0, 0xc1, 0x8b, 0x9e, 0x79, 0xe6, 0x19, 0x2d, 0x4d, 
-	0xb4, 0x85, 0xbe, 0x7, 0xd8, 0x98, 0xe5, 0x1e, 0x90, 0x9, 
-	0x7b, 0xeb, 0xe8, 0x67, 0xad, 0x92, 0x87, 0x85, 0x34, 0xf, 
-	0x1c, 0x6, 0x36, 0x72, 0xe1, 0xb2, 0x2c, 0x37, 0xb5, 0x94, 
-	0x87, 0xbc, 0xb2, 0x96, 0x83, 0x2c, 0x98, 0x9e, 0x65, 0xcf, 
-	0xf2, 0x41, 0x58, 0xad, 0x3, 0x5f, 0x5a, 0x9f, 0x78, 0x41, 
-	0xf7, 0xc1, 0x4f, 00, 0x6e, 0xbe, 0x16, 0x3, 0xbc, 0xcb, 
-	0x4a, 0x39, 0x65, 0xf5, 0x54, 0x22, 0xe0, 0xb6, 0x8f, 0x1, 
-	0xde, 0x26, 0xed, 0xf7, 0x84, 0xcc, 0x90, 0xaa, 0xf, 0x6e, 
-	0xa0, 0x50, 0x9c, 0x1b, 0xd, 0x33, 0x88, 0x9b, 0x29, 0x6c, 
-	0xec, 0xd7, 0x88, 0x45, 0x99, 0xbd, 0x72, 0x6, 0x9e, 0xe9, 
-	0x12, 0x1a, 0xdc, 0xc, 0x22, 0xcc, 0x8f, 0x5e, 0x7a, 0xe9, 
-	0xa5, 0x5e, 0x97, 0x1, 0x1, 0xea, 0x8f, 0x47, 0x58, 0x70, 
-	0xf7, 0xdd, 0x77, 0x5f, 0xeb, 0xe3, 0x8f, 0x3f, 0x3e, 0xf7, 
-	0xba, 0xeb, 0xae, 0x3, 0xd8, 0x6, 0xb1, 0x85, 0x1c, 0xf3, 
-	0xd4, 0x71, 0x6b, 0x37, 0x77, 0xdc, 0x5f, 0x2d, 0xb0, 0x69, 
-	0x17, 0x8e, 0x75, 0x84, 0x83, 0xf, 0x3e, 0xb8, 0x7e, 0xf3, 
-	0xcd, 0xb7, 0xf8, 0x99, 0x34, 0xf8, 0x81, 0x4a, 0x8a, 0x1, 
-	0xce, 0xfe, 0x7, 0x64, 0xca, 0x8a, 0x80, 0x76, 0x19, 0xe0, 
-	00, 0xbb, 00, 0xe0, 0x73, 0x35, 0x1, 0xd7, 0x56, 0xdd, 
-	0x4b, 0xa4, 0xc5, 0xdb, 0x34, 0xe0, 0xe6, 0x81, 0x4d, 0x3f, 
-	0x99, 0xa7, 0x84, 0xb5, 0x3a, 0xed, 0x35, 0xc8, 0xed, 0x59, 
-	0xcf, 0x4e, 0x99, 0xdc, 0xff, 0x31, 0xa8, 0x91, 0xb, 0x5c, 
-	0x6f, 0xc0, 0x8d, 0xbc, 0x32, 0xa7, 0x2f, 0x35, 0x68, 0x50, 
-	0xff, 0x98, 0x76, 0x35, 0xed, 0x11, 0xcd, 0x56, 0xcd, 0xb7, 
-	0xd, 0x6e, 0x3, 0x1b, 0x25, 0x80, 0x37, 0x1e, 0xcb, 0x62, 
-	0xa5, 0x2c, 0xe7, 0xa2, 0x67, 0x66, 0x26, 0x62, 0xa2, 0x84, 
-	0x6d, 0x1a, 0xd, 0x9f, 0xd2, 0xe2, 0x54, 0x7d, 0xd1, 0xa3, 
-	0x35, 0x5d, 0xea, 0xde, 0x15, 0x37, 0x94, 0xc6, 0xc6, 00, 
-	0xd4, 0x3c, 0x23, 0xa5, 0x45, 0x84, 0xee, 0x89, 0xf4, 0x70, 
-	0xd5, 0x65, 0xc4, 0xb4, 0xdd, 0xa1, 0x68, 0x6, 0xbc, 0xea, 
-	0x9e, 0x92, 0x50, 0x45, 0xcd, 0xec, 0x81, 0x68, 0x99, 0xcb, 
-	0x94, 0x61, 0x8f, 0x6, 0x9a, 0x3d, 0x7b, 0x76, 0xab, 0xb4, 
-	0xd2, 0x83, 0x3a, 0x25, 0xf4, 0x76, 0xdd, 0x2, 0xb0, 0x6d, 
-	0x8e, 0x6, 0x93, 0x54, 0xbf, 0x1, 0x36, 0x9e, 0x6b, 0x3c, 
-	0x71, 0xa0, 0xd3, 0xe0, 0x31, 0xee, 0xaf, 0xca, 0x14, 0xcf, 
-	0x56, 0xa9, 0xeb, 0xdf, 0x91, 0x23, 0x47, 0x24, 0x33, 0x66, 
-	0x1c, 0x84, 0x6, 0x3f, 0xf1, 0x9b, 0xdf, 0xfc, 0xe6, 0x1, 
-	0xca, 0xc1, 0xeb, 0xa2, 0x6c, 0x74, 0xf1, 0x81, 0xf, 0xc, 
-	0x52, 0xb4, 0xc9, 0x2, 0x89, 0x12, 0xf0, 0x80, 0x6, 0x3f, 
-	0x18, 0xe0, 0x2, 0x3f, 0xee, 0xba, 0xeb, 0xae, 0xb9, 0xf2, 
-	0x97, 0xcd, 0x9f, 0x3f, 0xbf, 0x8d, 0x1, 0x97, 0xbe, 0xa1, 
-	0xff, 0x90, 0x9, 0xc2, 0x5a, 0x1d, 0x72, 0xf9, 0xf0, 0xc3, 
-	0xf, 0x33, 0xfd, 0x4a, 0xb9, 0xcf, 0x63, 0x70, 0x5b, 0x1e, 
-	0x28, 0x83, 0xfe, 0xeb, 0x4d, 0x59, 0xc8, 0xab, 0x94, 0x5d, 
-	0xfe, 0xec, 0x37, 0xcb, 0x9d, 0xe5, 0xc2, 0xf4, 0x9, 0x2b, 
-	0x75, 0xd4, 0x5f, 0xc0, 0xae, 0xd3, 0x7c, 0x7b, 0x91, 0xee, 
-	0xf1, 0xe0, 0x6f, 0x7e, 0x16, 0x83, 0xdb, 0xf2, 0x53, 0x40, 
-	0xbe, 0xa7, 0xd2, 0x3c, 0x2a, 0x70, 0x33, 0xde, 00, 0x47, 
-	0x73, 0xf3, 0x96, 0xca, 0x1b, 0x5a, 0x30, 0x2a, 0x20, 0x58, 
-	0xc9, 0xf, 0x33, 0xd4, 0x8d, 0xa7, 0x23, 0xcd, 0x6c, 0x56, 
-	0x4d, 0xd9, 0x49, 0x86, 0x99, 0x53, 0xab, 0x83, 0xbe, 0x3d, 
-	0x65, 0x98, 0x3e, 0x9d, 0xec, 0xe, 0xc6, 0x44, 0x63, 0xee, 
-	0xad, 0xd1, 0xd1, 0x6d, 0xac, 0xb5, 0xb8, 0x50, 0x16, 0x8b, 
-	0x1f, 0xb7, 0xdf, 0x7e, 0x7b, 0xab, 0xce, 0xf7, 0x9e, 0xf7, 
-	0xe7, 0x3f, 0xff, 0xf9, 0x76, 0x11, 0x8b, 0x85, 0x19, 0x81, 
-	0xb6, 0x27, 0xdd, 0x1a, 0xdb, 0xa7, 0xa8, 0x50, 0x7, 0xfa, 
-	0x2, 0x70, 0x37, 0xe9, 0x7d, 0xec, 0x13, 0xaa, 0x7d, 0xbb, 
-	0x4b, 0xf7, 0x7d, 0xa8, 0x4e, 0x9f, 0xfb, 0x4d, 0xe, 0x3a, 
-	0xe8, 0xc0, 0xfa, 0xcd, 0x36, 0xdb, 0xfc, 0xa4, 0x6f, 0x7c, 
-	0xe3, 0x1b, 0xfb, 0xa9, 0xf0, 0x58, 0x83, 0x3, 0x72, 0xda, 
-	0x83, 0xcc, 0x20, 0x90, 0x4c, 0x3b, 0x68, 0xab, 0x7, 0x3b, 
-	0x87, 0x41, 0x9b, 0x8b, 0x6f, 0xf, 0xdc, 0x71, 0xc7, 0x1d, 
-	0x97, 0xcd, 0xd1, 0x41, 0x7b, 0x98, 0xb8, 0x6, 0x76, 0x6f, 
-	00, 0x27, 0xad, 0x9d, 0x11, 0x38, 0xc2, 0x2, 0x17, 0xfd, 
-	0x1e, 0x9b, 0xe4, 0xd6, 0xb0, 0x96, 0xd, 0xcb, 0xa3, 0xea, 
-	0x57, 0xb5, 0x43, 0x4e, 0xe9, 0x7b, 0xea, 0x6c, 0x8f, 0x2c, 
-	0x9b, 0x36, 0xa1, 0x65, 0xb1, 0x1a, 0xe2, 0xe0, 0x4a, 0xeb, 
-	0x11, 0xef, 0xe8, 0x11, 0x1e, 0x3, 0x61, 0xc, 0x6e, 0x63, 
-	0x90, 0x10, 0xb9, 0x81, 0xc7, 0x25, 0x5d, 0x4f, 0xe0, 0xe6, 
-	0x26, 0x13, 0x88, 0x89, 0x86, 0x11, 0x44, 0xa3, 0xca, 0x6c, 
-	0x1d, 0x4e, 0x50, 0xd5, 0xf3, 0x6e, 0x77, 0x98, 0x1b, 0x6c, 
-	0xc6, 0xc2, 0x4, 0x3, 0x5c, 0xa6, 0xf9, 0x3a, 0x59, 0x35, 
-	0x87, 0xbe, 0x47, 0x71, 0x42, 0x75, 0x7e, 0x5a, 0xa3, 0x7b, 
-	0x38, 0x86, 0xa9, 0x24, 0x77, 0x2a, 0x4c, 0x64, 0x9d, 0x60, 
-	0xd6, 0xac, 0x59, 0xad, 0x12, 0xce, 0x79, 0x97, 0x5c, 0x72, 
-	0xc9, 0x1d, 0xba, 0xcd, 0x73, 0xcb, 0xd8, 0x14, 0x45, 0xa0, 
-	0xf1, 00, 0x1b, 0x9e, 0xc1, 0x4f, 0x77, 0xc, 0xa0, 0xc6, 
-	0xa4, 0x65, 0xf1, 0xec, 0x23, 0xfd, 0xf0, 0xbd, 0xea, 0x50, 
-	0xb1, 0x1b, 0x3d, 0x7a, 0x74, 0x72, 0xe0, 0x81, 0x7, 0xd6, 
-	0x6f, 0xb1, 0xc5, 0x96, 0x3f, 0xff, 0xda, 0xd7, 0xbe, 0xb6, 
-	0xaf, 0x6e, 0x1c, 0x28, 0xf, 0xc8, 0xd9, 0xaa, 0xa, 0xc0, 
-	0x69, 0x97, 0xb5, 0x38, 0x2, 0x6a, 0x80, 0x33, 0xc0, 0x99, 
-	0x37, 0xc1, 0xb2, 0xd1, 0xda, 0xc4, 0x3, 0xb7, 0xdd, 0x76, 
-	0xdb, 0xe5, 0x77, 0xdf, 0x7d, 0x77, 0x3b, 0x1a, 0xdc, 0x72, 
-	0xa2, 0x7c, 0x55, 0x3b, 0xb4, 0x9e, 0xac, 0x27, 0xa6, 0x5d, 
-	0x69, 0xf, 0xe8, 0x71, 0xbf, 0x23, 0x7, 0x6, 0xa0, 0xc1, 
-	0x57, 0x75, 0x21, 0xb9, 0x1b, 0xe2, 0x55, 0x72, 0xcb, 0xaf, 
-	0xc3, 0x58, 0xb6, 0xc9, 0x5e, 0x4d, 0x9b, 0x9e, 0x7f, 0xfe, 
-	0xf9, 0x36, 0x2d, 0x4, 0x3e, 0xac, 0xdb, 0xc, 0x6c, 0x87, 
-	0x60, 0xcf, 0xb2, 0x83, 0xfc, 0x80, 0xcf, 0x92, 0xae, 0x12, 
-	0x70, 0x9b, 00, 0x21, 0x1e, 0xe2, 0x14, 0xd4, 0xaa, 0x86, 
-	0xdd, 0x8b, 0xd9, 0x3, 0x33, 0xab, 0x75, 0x34, 0x14, 0xcf, 
-	0x68, 0xe7, 0x51, 0x8e, 0x38, 0x8c, 0xd1, 0x68, 0x98, 0x96, 
-	0x46, 0xad, 0x89, 0xae, 0xeb, 0x61, 0xfa, 0xee, 0x3c, 0xe8, 
-	0xda, 0xd3, 0xd1, 0x8c, 0xe4, 0xcc, 0xbd, 0xa5, 0x29, 0x32, 
-	0x12, 0x82, 0xea, 0x1b, 0x90, 0x2b, 0x88, 0xb9, 0xe2, 0xad, 
-	0xb7, 0xde, 0xaa, 0xd, 0x2a, 0x73, 0xe7, 0x5d, 0x7c, 0xf1, 
-	0xc5, 0xb7, 0x2b, 0x39, 0x16, 0x5a, 0xe2, 0x8c, 0xbc, 0x84, 
-	0x78, 0x83, 0x1b, 0x4d, 0x6, 0x1f, 0x29, 0x97, 0x89, 0x3a, 
-	0x60, 0xe8, 0xc7, 0x9, 0x2a, 0x7f, 0xed, 0x1a, 0x5b, 0xf5, 
-	0x2c, 0x70, 0x3a, 0xa3, 0x2d, 0x39, 0xe0, 0x80, 0x3, 0xea, 
-	0xb7, 0xde, 0x7a, 0x9b, 0x53, 0x4, 0xf0, 0x3d, 0x75, 0x11, 
-	0x70, 0xe3, 0x39, 0xf0, 0xc1, 0x1a, 0x5c, 0xd1, 0x20, 0x33, 
-	0xb4, 0x9b, 0xc1, 0xcd, 0x56, 0xc, 0xa6, 0xb9, 0xfd, 0x8a, 
-	0x1b, 0x6f, 0xbc, 0xf1, 0x5e, 0x69, 0xf1, 0x2b, 0xee, 0xbc, 
-	0xf3, 0xce, 0xa0, 0xc1, 0x75, 0xad, 0x26, 0x87, 0xd6, 0xd6, 
-	0xb4, 0x2b, 0xc8, 0x16, 0x7d, 0x4d, 0x3f, 0x1b, 0xdc, 0x96, 
-	0x31, 0x87, 0x96, 0x93, 0x5a, 0xa, 0x42, 0xee, 0x91, 0x53, 
-	0x29, 0xb9, 0x82, 0x9d, 0x6f, 0x96, 0x67, 0x42, 0xcb, 0x9f, 
-	0xc3, 0x4a, 0xca, 0x81, 0x2e, 0xeb, 0x41, 0xda, 0x4b, 0xc2, 
-	0xc9, 0x1f, 0xc8, 0x9, 0xca, 0xc0, 0xe0, 0xb6, 0x92, 0x35, 
-	0x1e, 0xc3, 0xbe, 0xd3, 0x52, 0x74, 0xbb, 0x5, 0xb7, 0xa, 
-	0xb1, 0xd0, 0x9b, 0x90, 0x9, 0x13, 0x32, 0xb2, 0xbc, 0xae, 
-	0x65, 0xfa, 0x77, 0x58, 0x4, 0xab, 0xc6, 0x99, 0xa1, 0x6e, 
-	0xb0, 0x1, 0xee, 0x11, 0xf, 0xd3, 0x5c, 0xab, 0x84, 0xec, 
-	0x5, 0xae, 0x86, 0x6c, 0x41, 0x5e, 0x97, 0x41, 0x8, 0x7d, 
-	0x77, 0x66, 0x6c, 0x96, 0xd3, 0xe1, 0x12, 0x82, 0xa0, 0xbd, 
-	0x31, 0xad, 0xaa, 0x75, 0x6, 0xf6, 0xfd, 0xf7, 0xdf, 0x3f, 
-	0xff, 0xc2, 0xb, 0x2f, 0xbc, 0x43, 0xf7, 0x7, 0x2d, 0xa4, 
-	0x10, 0x81, 0xf5, 0xbc, 0x12, 0x2d, 0x5, 0xa8, 0x6d, 0x9a, 
-	0xd2, 0x59, 0xf0, 0x13, 0x87, 0x66, 0xb, 0x8f, 0xbb, 0xf4, 
-	0xc1, 0x80, 0x1f, 0xe9, 0xd0, 0xc2, 0xcf, 0x68, 0x4f, 0x77, 
-	0x3f, 0x6, 0x9e, 0xff, 0x4d, 0x6e, 0xcc, 0x98, 0xf5, 0x4, 
-	0xf0, 0xfd, 0x1, 0xf8, 0x69, 0x3f, 0xfd, 0xe9, 0x4f, 0xff, 
-	0x55, 0x75, 0x67, 0xe, 0x6e, 0x70, 0x67, 0x57, 0x19, 0xb3, 
-	0x1a, 0x1c, 0xb9, 0x81, 0xd1, 0x68, 0x70, 0x40, 0x6e, 0xd, 
-	0x9e, 0x1f, 0x4, 0xf5, 0xd8, 0xf0, 0x1e, 0x81, 0xfb, 0x2a, 
-	0x81, 0xbc, 0xd, 0x13, 0xbd, 0x5a, 0x47, 0x3f, 0x6a, 0xfe, 
-	0xe, 0x38, 0x52, 0xf0, 0xd1, 0xa0, 0x26, 0xa4, 0xef, 0x9, 
-	0x2d, 0x67, 0x96, 0x11, 0xe4, 0xb0, 0x16, 0x87, 0x7c, 0x4a, 
-	0x7e, 0xf2, 0xcf, 0xb6, 0x6d, 0xee, 0x5b, 0xde, 0x8, 0x29, 
-	0xa3, 0x5a, 0xfa, 0x6c, 0xed, 0x96, 0x49, 0xfe, 0x9e, 0x30, 
-	0xc0, 0x9b, 0x60, 0xf0, 0xcb, 0xa, 0x95, 0x10, 0x1e, 0x1a, 
-	0x8f, 0xe0, 0xd3, 0xb2, 0xa4, 0x68, 0xa1, 0xab, 0xa4, 0x55, 
-	0xc5, 00, 0xa7, 00, 0x17, 0xc6, 0x6a, 0xde, 0xdd, 0xda, 
-	0xb7, 0xcb, 0xa8, 0x52, 0xb1, 0xa3, 0xc1, 0x38, 0x37, 0x9c, 
-	0xd0, 0xc, 0x31, 0xe3, 0xd5, 0xc0, 0xb4, 0xe8, 0xba, 0xec, 
-	0x8a, 0x69, 0xc7, 0x19, 0xa1, 0xeb, 0x32, 0x60, 0x30, 0x65, 
-	0xb8, 0x83, 0xe9, 0x64, 0x3a, 0x9f, 0x81, 0x84, 0xd5, 0x4e, 
-	0x4d, 0x95, 0xcb, 0x32, 0x29, 0xa6, 0xe9, 0x78, 0xc, 0xec, 
-	0x8b, 0x2e, 0xba, 0xe8, 0x76, 0xa5, 0x5b, 0x3b, 0x87, 0x85, 
-	0x22, 0xfd, 0x76, 0x68, 0x8d, 0xd, 0xb8, 0xdd, 0x51, 0x30, 
-	00, 0xde, 0x63, 0x8a, 0x37, 0x49, 0xe3, 0xed, 0x35, 0x64, 
-	0xc8, 0xd0, 0xaf, 0x49, 0x30, 0x1b, 0xf4, 0xf1, 0x38, 0x25, 
-	0xfd, 0xef, 0x73, 0xeb, 0xad, 0xb7, 0x5e, 0x32, 0x76, 0xec, 
-	0x58, 0x7d, 0xf4, 0x71, 0xd4, 0xae, 0xda, 0xc9, 0xf6, 0x73, 
-	0xb5, 00, 0x80, 0xa3, 0xc1, 0x8b, 0x17, 0xd9, 0xc, 0x70, 
-	0x83, 0xbb, 0xb, 0xc0, 0xaf, 0xbc, 0xf2, 0xca, 0xbb, 0xb5, 
-	0x30, 0x79, 0x2d, 00, 0xc7, 0x44, 0xaf, 0xc6, 0xd1, 0x8f, 
-	0x6c, 0x26, 0x71, 0x3f, 0xa3, 0xb5, 0xd, 0x72, 0xd2, 0x2c, 
-	0x5f, 0xc8, 0x42, 0xb5, 0xa0, 0x2b, 0xae, 0x87, 0xe4, 0xb3, 
-	0x43, 0xcf, 0xea, 0x83, 0xd6, 0x36, 0x5d, 0x3, 0x1c, 0xda, 
-	0xf6, 0xc5, 0xf7, 0xf5, 0xf4, 0x5b, 0x53, 0xdd, 0x36, 0x59, 
-	0x3, 0x8f, 0x2a, 0x1f, 0xb8, 0x42, 0x66, 0x2c, 0x37, 0x6, 
-	0x37, 0x3c, 0xec, 0x16, 0xd8, 0xba, 0x1e, 0x4, 0x8c, 0xb0, 
-	0x27, 0x67, 0x42, 0x26, 0x6e, 0x80, 0xaf, 0x95, 0xe9, 0x70, 
-	0x4f, 0xad, 0x20, 0x34, 0xf8, 0xcc, 0x68, 0x42, 0x98, 0x84, 
-	0x87, 0x49, 0xec, 0x7, 0xc6, 0xd7, 0xea, 0x4c, 0xdf, 0xc0, 
-	0x8e, 0x69, 0x1b, 0xdc, 0x74, 0xbc, 0x56, 0xb9, 0xd3, 0x5a, 
-	0xc0, 0x48, 0xb1, 0x7, 0xb9, 0x12, 0xd7, 0xd, 0xb0, 0x63, 
-	0x13, 0xdc, 0x1a, 0x1b, 0x21, 0x46, 0x53, 0xd1, 0x41, 0x74, 
-	0xa, 0x2e, 0xf, 0x6c, 0x2d, 0x46, 0x1d, 0xa0, 0x97, 0xfb, 
-	0xcf, 0x9e, 0x32, 0x65, 0xe3, 0x3a, 0xbd, 0x7, 0x5e, 0x77, 
-	0xc3, 0xd, 0x37, 0x64, 0xb4, 0x7a, 0xdc, 0xc6, 0x3c, 0xfe, 
-	0x7f, 0x8b, 0xd3, 0x6a, 0x71, 0xdb, 0x1f, 0xfe, 0x70, 0xe, 
-	0xd3, 0x9b, 0xba, 0x71, 0xe3, 0xd6, 0x4f, 0xeb, 0xa5, 0x99, 
-	0xe9, 0x5a, 0x45, 0xff, 0xb1, 0xea, 0x6f, 0x13, 0x1d, 0x53, 
-	0x4, 0xd, 0x8e, 0xa5, 0xc2, 0x20, 0xa, 0x1f, 0x10, 0x5c, 
-	0xcf, 0xc1, 0xe9, 0xe4, 0x78, 0x70, 0x7c, 0xef, 0x8a, 0x2b, 
-	0xae, 0x98, 0x2d, 0x3e, 0x5c, 0xaf, 0xb5, 0x8c, 0x36, 0xb6, 
-	0x25, 0x57, 0xe2, 0xe8, 0x3f, 0x1, 0x3b, 0xa5, 0xbd, 0xfc, 
-	0x69, 0x40, 0xcd, 0xc0, 0x1d, 0x3, 0xbb, 0x2f, 0xb5, 0x76, 
-	0x4e, 0x36, 0xc3, 0xd1, 0x5d, 0x56, 0x1a, 0x6, 0xb8, 0xe5, 
-	0x19, 0xb9, 0x8b, 0x95, 0x4b, 0x25, 0x6d, 0x20, 0xf, 0x87, 
-	0x6c, 0xca, 0x1a, 0x6, 0xdc, 0x6, 0x35, 0xbc, 0xc2, 0x1b, 
-	0x77, 0xe6, 0x61, 0xb7, 0xca, 0xaf, 0xee, 0xe4, 0x93, 0x4f, 
-	0xd6, 0x3d, 0xe5, 0xdd, 0xcf, 0x7f, 0xfe, 0xf3, 0xac, 0x9a, 
-	0xcd, 0xa, 0x24, 0x42, 0x69, 0x53, 0x92, 0xce, 0x6a, 0x52, 
-	0x23, 0xd7, 0x4c, 0x98, 0x30, 0x61, 0x3f, 0x1d, 0xca, 0x17, 
-	0xe, 0xbd, 0x2f, 0x4f, 0xa9, 0xfc, 0x15, 0xac, 0x7f, 0xbc, 
-	0x4c, 0xfc, 0xbc, 0x67, 0xe7, 0x12, 0x26, 0x8f, 0xb6, 0x25, 
-	0x66, 0xb4, 0x70, 0xe3, 0x3a, 0x94, 0x27, 0x52, 0xc1, 0x15, 
-	0x97, 0x53, 0x5c, 0x16, 0xe5, 0x6a, 0xa4, 0x64, 0x87, 0x51, 
-	0x46, 0x27, 0x91, 0xa8, 0x3f, 0xca, 0x17, 0x57, 0x21, 0xb0, 
-	0x11, 0x54, 0x24, 0x12, 0x6d, 0x8d, 0xa7, 0x53, 0xe8, 0x10, 
-	0x8, 0xc3, 0x43, 0x78, 0xd7, 0xef, 0xbb, 0xdf, 0xfd, 0xee, 
-	0xc, 0xcd, 0xb1, 0xff, 0x45, 0xc7, 0x3d, 0xd7, 0xb3, 0xfd, 
-	0x92, 0x4d, 0x22, 0x6f, 0xbf, 0xbd, 0x34, 0xf5, 0xe2, 0x8b, 
-	0x8b, 0x52, 0xcf, 0x3e, 0xfb, 0x2c, 0xda, 0x27, 0x23, 0x8d, 
-	0x58, 0xbe, 0x32, 0x22, 0xf2, 0x51, 0x3a, 0x9e, 0x36, 0xe8, 
-	0x91, 0x5f, 0xe6, 0xd1, 0x47, 0x17, 0xa4, 0xc5, 0xd3, 0xd4, 
-	0x90, 0x21, 0x83, 0xc3, 0xfc, 0x56, 0xf2, 0x50, 0xaf, 0x75, 
-	0x93, 0x49, 0x5b, 0x6c, 0xb1, 0xc5, 0x7a, 0x5a, 0x64, 0x9c, 
-	0xab, 0x3a, 0x2, 0x66, 0xda, 0x1, 0xf, 0x70, 0x8, 0x65, 
-	0xb1, 0x77, 0x3a, 0x61, 0x70, 0xda, 0xe1, 0xf7, 0x86, 0xb6, 
-	0xa7, 0xb6, 0x4a, 0x16, 0x36, 0x1a, 0x3f, 0x7e, 0x7c, 0x58, 
-	0x1c, 0xf3, 0xb5, 0xe2, 0x90, 0x3e, 0x94, 0xa6, 0xcf, 0x68, 
-	0x7f, 0x41, 0x78, 0xf4, 0xe5, 0x2d, 0xad, 0xf0, 0x15, 0x90, 
-	0x5b, 0x83, 0xa3, 0x34, 0xac, 0x5d, 0xd, 0xbc, 0x62, 0x5a, 
-	0x95, 0xfc, 0x56, 0xff, 0x74, 0xe8, 0x51, 0x2a, 0xf2, 0x9a, 
-	0x32, 0x7d, 0xcf, 0xed, 0x19, 0x50, 0x5c, 0x6, 0x80, 0xa7, 
-	0x9c, 0xee, 0x64, 0x2a, 0x2e, 0xf, 0x53, 0x5f, 0x1b, 0x7b, 
-	0xde, 0xd7, 0xe6, 0x9b, 0x1b, 0x94, 0xee, 0xb5, 0x9, 0x42, 
-	0x94, 0x44, 0xac, 0x28, 0x90, 0x29, 0xb1, 0x3d, 0x7c, 0x8c, 
-	0x4c, 0xd1, 0xae, 0xe, 0x41, 0xeb, 0xd6, 0x71, 0x77, 0x2e, 
-	0x3, 0x1d, 0xe3, 0x11, 0xc3, 0x23, 0x8, 0x23, 0xb, 0xa6, 
-	0xf9, 0x7d, 0x32, 0x4f, 0x48, 0xab, 0xd8, 0xb9, 0xb1, 0x66, 
-	0xb0, 0xb5, 0xab, 0x43, 0x98, 0xa3, 0x4e, 0x4d, 0x3, 0x3a, 
-	0x80, 0x5e, 0xab, 0x33, 0x63, 0x4d, 0xd7, 0xda, 0x3b, 0xd6, 
-	0xdc, 0xee, 0x78, 0x95, 0xd5, 0xed, 0x4b, 0x25, 0x35, 00, 
-	0x9b, 0xce, 0x80, 0x2f, 0x6e, 00, 0xfc, 0xc6, 0x4c, 0x6d, 
-	0xfa, 0xde, 0xf7, 0xbe, 0x77, 0x98, 0x40, 0xf0, 0x9b, 0x5d, 
-	0x77, 0xdd, 0xb5, 0x9e, 0xad, 0x9d, 0x76, 0x59, 0xd3, 0x76, 
-	0x44, 0xea, 0xb5, 0xd7, 0x5e, 0x4d, 0x4b, 0x6b, 0xa5, 0xce, 
-	0x3b, 0xef, 0xfc, 0x8e, 0xa7, 0x9e, 0x7a, 0x5a, 0x1f, 0xc7, 
-	0x33, 0x9, 0xe7, 0xfc, 0xe8, 0x42, 0x99, 0xca, 0x2, 0xf5, 
-	0x15, 0x1d, 0x17, 0x5d, 0x74, 0x31, 0xb, 0x4a, 0x69, 0x1, 
-	0x59, 0xfb, 0xb6, 0x3b, 0x9f, 0x4b, 0xd3, 0x77, 0x1f, 0xff, 
-	0xf8, 0xc7, 0x9b, 0x65, 0x91, 0x1c, 0xa0, 0xf7, 0xc1, 0x8f, 
-	0x57, 0x4d, 0x7, 0xc9, 0xfb, 0xc0, 0x7, 0x6f, 0x74, 0xa1, 
-	0x1, 0x34, 0xa, 0x8d, 0xc4, 00, 0x88, 0xf6, 0xc6, 0x7b, 
-	0xdd, 0x82, 0x1, 0x72, 0xb9, 0xde, 0xa6, 0xbb, 0x43, 0xa7, 
-	0xb5, 0xdc, 0xa4, 0x95, 0xf4, 0x6e, 0x35, 0x38, 0x2f, 0x87, 
-	0xb0, 0xf6, 0x43, 0x7f, 0xc7, 0x20, 0x3, 0x68, 0xd6, 0xde, 
-	0xd6, 0xac, 0xc8, 0x82, 0xbd, 0xca, 0xa8, 0xda, 0xd1, 0x17, 
-	0xb2, 0x12, 0x38, 0x4a, 0x2b, 0x6f, 0x92, 0x5b, 0xae, 0x8, 
-	0x4d, 0x9b, 0xb0, 0x5a, 0x27, 0xad, 0xdd, 0x2e, 0x39, 0x5c, 
-	0xa0, 0xfb, 0xc0, 0x96, 0x3d, 0x32, 0x54, 0xac, 0xb9, 0x21, 
-	0xed, 0xc1, 0x92, 0x78, 0x17, 0x87, 0x6, 0xa9, 0xc4, 0x79, 
-	0x94, 0xa5, 0x33, 0xec, 0x5d, 0xe0, 0x5a, 0x8d, 0x36, 0x77, 
-	0x6b, 0xe9, 0x7e, 0x9f, 0x9d, 0x76, 0xda, 0xa9, 0x52, 0x7a, 
-	0xf9, 0x32, 0xd, 0x72, 0x4c, 0x99, 0x62, 0xb3, 0x1c, 00, 
-	0x32, 0x1f, 0xa6, 0xd3, 0xa4, 0xe1, 0x6a, 0xd6, 0x60, 0x31, 
-	0xc0, 0x61, 0x38, 0x1d, 0x80, 00, 0x1a, 0xe0, 0x3c, 0x57, 
-	0x67, 0x21, 0x46, 0x9a, 0x28, 0x2d, 0x21, 0x41, 0x5b, 0x6a, 
-	0xee, 0x38, 0x32, 0x5f, 0x47, 0x22, 0x6, 0xb6, 0x76, 0x54, 
-	0xcd, 0xcb, 0xcd, 0xb1, 0x11, 0xc2, 0x20, 0x80, 0xb9, 0xd0, 
-	0x66, 0xa5, 0x35, 0xb6, 0x81, 0xed, 0xe, 0xc0, 0xe2, 0x41, 
-	0xb0, 0x1b, 0x75, 0x8, 0xe1, 0x11, 0xb2, 0x74, 0x4e, 0x17, 
-	00, 0xea, 0x79, 0x71, 0x2, 0xda, 0xae, 0x17, 0x21, 0x9a, 
-	0x40, 0x9a, 0x2a, 0x6c, 0xb4, 0x51, 0x7d, 0x98, 0x2e, 0x64, 
-	0x64, 0xea, 0x66, 0x74, 0xde, 0x7b, 0x66, 0xea, 0xd4, 0x29, 
-	0x69, 0xee, 0xf9, 0x28, 0x9c, 0xce, 0x86, 0xeb, 0x60, 0xc0, 
-	0x61, 0xa1, 0x4b, 0x75, 0xd2, 0xf9, 0xf5, 0x6b, 0x43, 0x5d, 
-	0xfb, 0xf7, 0xcf, 0x4e, 0xa5, 0xdc, 0x7f, 0x84, 0xf0, 0x76, 
-	0xb7, 0xdd, 0x76, 0xeb, 0x27, 0xcd, 0x7d, 0xe0, 0xf1, 0xc7, 
-	0x1f, 0x9f, 0xf9, 0x95, 0x9c, 0xea, 0x6c, 0x45, 0x41, 0xf5, 
-	0x11, 0x56, 0x7e, 0xf7, 0x38, 0x6a, 0x69, 0xdf, 0xc0, 0x6d, 
-	0xa2, 0x49, 0xff, 0xef, 0xb7, 0xf7, 0xde, 0x7b, 0x7, 0x2b, 
-	0x47, 0xf1, 0xbc, 0xc3, 0x1c, 0x87, 0x4f, 0x4c, 0xad, 0xd0, 
-	0xd8, 0xf0, 0xf, 0x8d, 0x6d, 0x50, 0xd3, 0xd7, 0x6, 0xb6, 
-	0xc1, 0xc7, 0xcd, 0x96, 0xbd, 0x3c, 0xa1, 0xa, 0x23, 0x92, 
-	0x47, 0x64, 0x32, 0xbc, 0x8b, 0x6e, 0x59, 0x8a, 0xcb, 0xa0, 
-	0xfd, 0xf4, 0x63, 0xec, 0x2b, 0x24, 0x8d, 0x49, 0xde, 0x2e, 
-	0x99, 0xb7, 0x49, 0x6e, 0x70, 0x13, 0x5a, 0x49, 0xc4, 0x4a, 
-	0x7b, 0xa0, 0xe0, 0x3f, 00, 00, 0x20, 00, 0x49, 0x44, 
-	0x41, 0x54, 0xb6, 0x5b, 0xb2, 0x3d, 0x9a, 0xe5, 0xdc, 0x5d, 
-	0x64, 0x9a, 0x23, 0xa4, 0x36, 0x2d, 0x11, 0xd6, 0x6, 0x75, 
-	0xf6, 0x2a, 0x46, 0x69, 0x9, 0x6c, 0x3f, 0x98, 0x5b, 0x8b, 
-	0xc3, 0x40, 0xc0, 0xdb, 0x34, 0x67, 0x74, 0x24, 0xae, 0x15, 
-	0xc3, 0xf0, 0xf2, 0xbb, 0xe8, 0xab, 0x2f, 0x6a, 0xc3, 0x77, 
-	0x7c, 0x9f, 0xe3, 0x36, 0x48, 0x5c, 0xae, 0x43, 0x2c, 0x5, 
-	0xcc, 0xcd, 0x96, 0x96, 0x96, 0xf0, 0x16, 0x11, 0x6d, 0x89, 
-	0x80, 0xfd, 0x60, 0x6e, 0x55, 0x1c, 0x20, 0x3, 0xee, 0x78, 
-	0x8e, 0x4d, 0x5a, 0x29, 0x60, 0x23, 0xc0, 0x6, 0x76, 0x93, 
-	0xce, 0x7, 0xff, 0xb4, 0x80, 0x7b, 0x9a, 0x4, 0xbf, 0x5e, 
-	0x80, 0xc5, 0x3a, 0x9, 0xed, 0xa4, 0x7c, 0xc7, 0xcd, 0x3, 
-	0xdd, 0x17, 0x4, 0xf4, 0xfd, 0xf7, 0x57, 0xa6, 0x78, 0xe4, 
-	0xc2, 0x76, 0xca, 0x85, 0xb, 0x5f, 0x4c, 0x9e, 0x7f, 0xfe, 
-	0x5, 0x4e, 0xa, 0x4d, 0x21, 0xc0, 0x8, 0xd5, 0xba, 0x74, 
-	0x3c, 0x52, 0xd2, 0x6, 0x93, 0xe, 0x9d, 0x2a, 0xc3, 0xb3, 
-	0x63, 0xd5, 0xe3, 0x65, 0x1e, 0xfd, 0x84, 0xc7, 0x94, 0x36, 
-	0x79, 0x9, 0xd1, 0x96, 0xfe, 0xed, 0x41, 0x93, 0x34, 0x1d, 
-	0x1a, 0x58, 0x2f, 0x7e, 0x4e, 0xd2, 0x31, 0xd6, 0x63, 0xee, 
-	0xbd, 0xf7, 0xde, 0xfb, 0x55, 0xd7, 0xd8, 0x3c, 0xf7, 0xc0, 
-	0x67, 0xe5, 0xe1, 0x30, 0x6e, 0x12, 0xf9, 0x33, 0x8f, 0x3d, 
-	0xf6, 0xd8, 0x6b, 0xda, 0xfa, 0xca, 0xdb, 0x7c, 0x13, 0x65, 
-	0xf1, 0xd4, 0xb9, 0xdd, 0xac, 0x4d, 0x60, 0x8e, 0xeb, 0x65, 
-	0x94, 0xf0, 0x49, 0x5e, 0xea, 0x10, 0x7b, 0x80, 0x6e, 0xed, 
-	0x6d, 0x80, 0x1b, 0x74, 0x96, 0x85, 0xb8, 0xb0, 0x9e, 0xe2, 
-	0xf4, 0xd, 0xe6, 0xb8, 0x6, 0x93, 0x30, 0xaf, 0xa7, 0x8d, 
-	0xf6, 0xb4, 0x1b, 0x4f, 0xdd, 00, 0x38, 0x9e, 0x32, 0x2a, 
-	0x2d, 0x47, 0xa0, 0x86, 0xee, 0x7, 0xf2, 0xd7, 0xaa, 0x1e, 
-	0xc8, 0x17, 0x1e, 0x99, 0xb2, 0x5c, 0x79, 0xed, 0x6, 0xa0, 
-	0x77, 0x48, 0x66, 0xcc, 0x3f, 0xfd, 0xec, 0xea, 0x2a, 0xd2, 
-	0xb4, 0x22, 0xc2, 0xe7, 0x57, 0xdc, 0x29, 0xb1, 0xe6, 0xce, 
-	0x8f, 0x2c, 0x1a, 0x3d, 0xaf, 0x57, 0xe7, 0x1f, 0xb5, 0xcf, 
-	0x3e, 0xfb, 0x54, 0xfc, 0x1c, 0x7, 0x92, 0x22, 0x1d, 0x1a, 
-	0xf, 0xc3, 0xcd, 0x10, 0x8f, 0x86, 0x84, 0x30, 0x4e, 0x2b, 
-	0xe7, 0xe1, 0x23, 0x7b, 0xea, 0xd4, 0xea, 0xed, 0x9c, 0x5c, 
-	0x9b, 0x29, 0xb, 0x4f, 0x39, 0xd0, 0x35, 0x80, 0xe8, 0xc, 
-	0xb6, 0x8d, 0xe2, 0x1, 0x17, 0x9e, 0x51, 0x59, 0x9b, 0x29, 
-	0x32, 0x7b, 0xed, 0xb5, 0x57, 0xba, 0x8, 0xd8, 0xb7, 0x8b, 
-	0x9c, 0x99, 0xce, 0x8b, 0xe7, 0xc4, 0x2b, 0xd5, 0xd8, 0x4d, 
-	0xfa, 0xb2, 0xc7, 0xd1, 0xb2, 0x40, 0x4e, 0xde, 0x7d, 0xf7, 
-	0xdd, 0x83, 0xc6, 0xa6, 0xac, 0xe2, 0x36, 0xd3, 0x5e, 0xd7, 
-	0x23, 0x57, 0xf5, 0x50, 0x67, 0xea, 0x89, 0xf9, 0xfb, 0xec, 
-	0xb3, 0xcf, 0xe8, 0x7a, 0x47, 0xea, 0xa5, 0x97, 0x16, 0x49, 
-	0x9b, 0xf, 0x43, 0x4b, 0xa1, 0xcd, 0x53, 0x32, 0xe7, 0x53, 
-	0xec, 0x1a, 0x43, 0x98, 0x6b, 0x75, 0xf4, 0x85, 0xa6, 0x58, 
-	0xb4, 0xbf, 0x63, 0xc1, 0x82, 0xc7, 0x88, 0x87, 0xcf, 0x23, 
-	0x49, 0xe8, 0x64, 0x7a, 0x7f, 0x10, 0xfa, 0xa, 0xc1, 0xa5, 
-	0xc, 0xb, 0x34, 0x56, 0x84, 0xc1, 0x44, 0x9a, 0xb5, 0xa5, 
-	0x81, 0x44, 0xfe, 0x69, 0xd3, 0xa6, 0x35, 0x8b, 0x9f, 0x7, 
-	0xe8, 0x31, 0x59, 0xe6, 0xb4, 0xd3, 0x4e, 0x3b, 0x23, 0x57, 
-	0x3f, 0x8f, 0xd4, 0x3d, 0x69, 0x70, 00, 0x8f, 0x4b, 0xc9, 
-	0x62, 0xfa, 0x8b, 0xfa, 0x10, 0x19, 0xd8, 0x53, 0x1a, 0x3c, 
-	0x7c, 0x1f, 0x5c, 0x74, 0x3b, 0xb4, 0x90, 0x47, 0xb9, 0x61, 
-	0xee, 0x4b, 0xdd, 0x5c, 0x3f, 0x3, 0xcd, 0x60, 0xa3, 0x4e, 
-	0xf4, 0x7f, 0x20, 0x16, 0xc4, 0x39, 0x44, 0xab, 0xfa, 0xa3, 
-	0x5, 0xbb, 0xe, 0xb6, 0x9b, 0xaa, 0xdf, 0x4a, 0xbe, 0x42, 
-	0xea, 0x81, 0xa3, 0x96, 0x72, 0x84, 0x9f, 0x56, 0xc9, 0xfa, 
-	0x3d, 0xaa, 0x50, 0x1e, 0x57, 0xb9, 0x38, 0x3c, 0xb2, 0x59, 
-	0xe, 0xa0, 0xe1, 0x49, 0xb7, 0xc0, 0xd6, 0xf5, 0xb0, 0xb0, 
-	0x43, 0x58, 0x89, 0xf3, 0xa8, 0xa, 0x51, 00, 0x6e, 0xb3, 
-	0x9c, 0x42, 0xd7, 0x2e, 0x5a, 0xb4, 0x68, 0x96, 0x46, 0xd6, 
-	0x4f, 0xb3, 0x8a, 0x48, 0x67, 0x57, 0xea, 0xc, 0x38, 0x4, 
-	0xb, 0x86, 0x14, 0xb, 0x3b, 0x1d, 0xc3, 0xb3, 0x68, 0xd1, 
-	0xcf, 0xc8, 0x32, 0x8, 0xc0, 0xac, 0x94, 0x76, 0x9c, 0xcf, 
-	0xe0, 0x76, 0x48, 0x39, 0x74, 0x36, 0x2, 0x60, 0x30, 0x19, 
-	0xf0, 0x2, 0x51, 0x3a, 0x2b, 0xe0, 0xb, 0x10, 0x9c, 0x76, 
-	0x99, 0x96, 0x73, 0xa4, 0xb1, 0x1, 0x36, 0x23, 0x68, 0xc, 
-	0x68, 0x6b, 0x70, 0x8f, 0xac, 0xc5, 0xa6, 0x38, 0x92, 0x84, 
-	0x6a, 0x5, 0xd8, 0x5f, 0x10, 0xb0, 0x7f, 0x26, 0x41, 0x6f, 
-	0xe0, 0x8c, 0x32, 0xca, 0x72, 0xdb, 0x5d, 0x17, 0x80, 0x1, 
-	0x1f, 0xcc, 0xb, 0x5f, 0x87, 0x7, 0x78, 0xea, 0xa, 0x80, 
-	0x98, 0x42, 0x60, 0xd1, 0xa8, 0x8e, 0xa2, 0x93, 0x49, 0x69, 
-	0xa4, 0xcf, 0x68, 0x1a, 0x91, 0x19, 0x38, 0x70, 0x80, 0xf8, 
-	0x57, 0xcf, 0x2b, 0x94, 0x98, 0xf1, 0x89, 0xc0, 0x9e, 0x52, 
-	0x59, 0x61, 0xcf, 0xb3, 0xbe, 0xcd, 0x1d, 0x68, 0xb4, 0xb5, 
-	0x31, 0x80, 0xb5, 0x85, 0xf2, 0x59, 0x40, 0x64, 0xda, 0x3, 
-	0xa0, 0xdf, 0x7b, 0x6f, 0x45, 0x8a, 0xe9, 0x9, 0x9a, 0x50, 
-	0xfc, 0x4e, 0xe9, 0xd3, 0x48, 0x2, 0x36, 0x32, 0x96, 0x9, 
-	0x7c, 0xa2, 0x6e, 0x71, 0x1d, 0xc, 0x6e, 0x42, 0xac, 0x35, 
-	0xff, 0xa6, 0x8e, 0x78, 0x3, 0x89, 0xb6, 0xf1, 0x7b, 0xfa, 
-	0xf4, 0xe9, 0xcd, 0xb2, 00, 0xe, 0x14, 0xc0, 0x53, 0x2, 
-	0xf8, 0xe9, 0x22, 0x1c, 0xbb, 0x52, 00, 0x37, 0xf8, 0xe3, 
-	0x7c, 0x19, 0xf5, 0xc3, 0x8d, 0xa2, 0xc9, 0xb5, 0xe9, 0x13, 
-	0x27, 0x4e, 0xac, 0x5b, 0xbc, 0x78, 0x31, 0xdb, 0x95, 0xc3, 
-	0x89, 0x2e, 0x6, 0x35, 0x75, 0xa1, 0xbe, 0xf6, 0x1e, 0x68, 
-	0x90, 0x2f, 0x78, 0x4a, 0x9d, 0x6a, 0x71, 0x28, 00, 0xad, 
-	0x2d, 0x5, 0x2b, 0x8a, 0xb2, 0xa0, 0xb, 0x4f, 0x8, 0xed, 
-	0xa1, 0xed, 0x7e, 0x73, 0x79, 0x95, 0x94, 0x5, 0x6e, 0x98, 
-	0x56, 0xc8, 0x3a, 0x63, 0x1, 0xd2, 0xe0, 0x8e, 0x35, 0x75, 
-	0xb1, 0x59, 0xde, 0x23, 0xd9, 0x8a, 0x34, 0x77, 0x44, 0xc5, 
-	0x23, 0x6, 00, 0xa7, 0x30, 0x3c, 0x15, 0x59, 0x23, 0x41, 
-	0x79, 0x4f, 0xa0, 0x78, 0x40, 0xe6, 0xd1, 0xae, 0x3b, 0xec, 
-	0xb0, 0x43, 0xc5, 0xdc, 0x83, 0x11, 0x8, 0xb3, 0x19, 0x2, 
-	0x73, 0xf0, 0x66, 0x1c, 0xcc, 0xa3, 0x93, 0xd4, 0x70, 0x5e, 
-	0x2, 0x48, 0x74, 0xd8, 0x7b, 0xa9, 0x4e, 0x57, 0x15, 0x7a, 
-	0x76, 0x94, 0x81, 0x87, 0x3e, 0x65, 0x42, 0x1b, 0x90, 0x15, 
-	0x83, 0x9b, 0x3c, 0x6a, 0x4f, 0x5a, 0xab, 0xb5, 0x1d, 0x2a, 
-	0xf3, 0xc5, 0xb, 0x2e, 0xb8, 0x60, 0x96, 0xa8, 0x7b, 0xb1, 
-	0x7, 0x70, 0xf3, 0xc, 0xdb, 0x1a, 0xbc, 0x47, 0x60, 0x9f, 
-	0x70, 0xc2, 0x9, 0xc7, 0x68, 0x83, 0xca, 0x4f, 0xc, 0x6c, 
-	0xb7, 0xd7, 0x6d, 0xa6, 0xad, 0x38, 0xea, 0x42, 0x5b, 0x71, 
-	0xbe, 0x66, 0xb0, 0x90, 0x8e, 0xd0, 0x62, 0x49, 00, 0x6e, 
-	0x4, 0xd, 0x50, 0xe5, 0xe2, 0x3a, 0x7f, 0xee, 0x4d, 0x3d, 
-	0x6, 0x5a, 0x8b, 0x56, 0x57, 0xfb, 0xd2, 0xb9, 0x97, 0x18, 
-	0x1a, 0x78, 0xda, 0xd0, 0x41, 0x3b, 0xb3, 0x3c, 0xad, 0xd3, 
-	0x7d, 0x4c, 0x3, 0xf4, 0x85, 0x17, 0x85, 0x58, 0x2, 0xa2, 
-	0x93, 0x36, 0xd8, 0x29, 0x1f, 0x67, 0xfe, 0x73, 0x52, 0x4a, 
-	0xdc, 0xf, 0xae, 0xb, 0xf5, 0x20, 0x4e, 0x9d, 0xc, 0x28, 
-	0xd7, 0x8f, 0xd0, 0x82, 0xee, 0x76, 0xd1, 0x16, 0xf2, 0xef, 
-	0xb9, 0xe7, 0x9e, 0xcd, 0x32, 0xa1, 0xd1, 0xe0, 0x49, 0xf, 
-	00, 0xa7, 0x8f, 0x19, 0x28, 0xed, 0x90, 0x3b, 0xd2, 0x42, 
-	0x78, 0xfe, 0xf9, 0xe7, 0xdf, 0xa0, 0x78, 0x3f, 0xb5, 0x7d, 
-	0x77, 0x8e, 0xb0, 0xc2, 0x7a, 0xa0, 0x5c, 0x3c, 0x8a, 0x85, 
-	0x3a, 0x11, 0xa7, 0x4c, 0xd7, 0x85, 0x36, 0x99, 0xa7, 0x26, 
-	0x5a, 0x6d, 0xb8, 0x48, 0xa, 0x86, 0xdd, 0x6f, 0xa2, 0x95, 
-	0x82, 0xa7, 0xd0, 0x27, 0xa4, 0xc, 0xe8, 0xc7, 0xbe, 0x5a, 
-	0xda, 0xc2, 0x4d, 0x87, 0x16, 0x2a, 0x1f, 0x53, 0xff, 0x22, 
-	0x57, 0x80, 0x9a, 0x45, 0x46, 0xb0, 0x65, 0xad, 0x6d, 0x8b, 
-	0x39, 0x28, 0x59, 0xc9, 0x10, 0x61, 0xb7, 0xae, 0x62, 0x70, 
-	0x43, 0x4c, 0xcc, 0x81, 0xa0, 0x35, 0x77, 0xac, 0xbd, 0x3, 
-	0xc0, 0x35, 0xaa, 0x5d, 0x2b, 0x81, 0xfb, 0xb8, 0x3e, 0xd5, 
-	0x5b, 0x67, 0xb3, 0xa4, 0xdb, 0xd2, 0xa3, 0x8b, 0x30, 0xde, 
-	0xcc, 0x87, 0x59, 00, 0xe, 0xc6, 0x99, 0x89, 0x6a, 0x38, 
-	0xcf, 0xa2, 0x33, 0x32, 0xcd, 0x3, 0x53, 0xa3, 0x5b, 0x2b, 
-	0x8e, 0xba, 0xc, 0x6e, 0xa0, 0x7e, 0x78, 0xe8, 0x23, 0xd4, 
-	0x16, 0x6c, 0xae, 0x11, 0xd7, 0xa3, 0x8e, 0x56, 0xcd, 0xf3, 
-	0x1e, 0xd5, 0x8e, 0xa9, 0xeb, 0x94, 0x4, 0x80, 0xf1, 0xc5, 
-	0x5a, 0x9b, 0x34, 0x84, 0x30, 0x7e, 0xdc, 0xa5, 0x9f, 0xf9, 
-	0xe7, 0xd8, 0xcd, 0xfa, 0x8a, 0xe6, 0x97, 0x5, 0xec, 0x63, 
-	0xa5, 0xb9, 0x1a, 00, 0x23, 0x8e, 0x7a, 0xd0, 0x37, 0xe5, 
-	0x78, 0x44, 0x3a, 0x82, 0x2, 0x1f, 0xdc, 0x7e, 0x84, 0x15, 
-	0xad, 0x8a, 0xf0, 0x12, 0x2, 0x6a, 0x2f, 0x4, 0x2, 0x74, 
-	0xe2, 0xf0, 0x8c, 0x38, 0x21, 0x6d, 0x50, 0xa8, 0x8f, 0xc7, 
-	0xad, 0x8, 0xf3, 0xe3, 0xb8, 0x7d, 0x94, 0x6d, 0x5e, 0x13, 
-	0x52, 0x16, 0x82, 0xea, 0x72, 0x5d, 0xb6, 0xd3, 0xb9, 0xe6, 
-	0xb8, 0x41, 0x64, 0xf0, 0xf8, 0x37, 0x75, 0x25, 0xee, 0x3e, 
-	0x23, 0x34, 0x3d, 0x42, 0xca, 0x81, 0xe, 0x1a, 0xbc, 0x2, 
-	0x80, 0xa3, 0x34, 0x70, 0x31, 0xc0, 0xb3, 0x29, 0xd9, 0xbf, 
-	0x1d, 0xe7, 0x9f, 0x7f, 0xfe, 0x65, 0x9b, 0x6e, 0xba, 0xe9, 
-	0x73, 0x5a, 0x64, 0x3c, 0xa6, 0xa5, 0xa5, 0xa5, 0xe, 0xde, 
-	0x42, 0x3f, 0x6, 0x36, 0x75, 0xa0, 0x5e, 0x78, 0xd7, 0x81, 
-	0x7a, 0xd4, 0xe2, 0xe0, 0xb7, 0xe4, 0x8f, 0x29, 0x4b, 0x9a, 
-	0x32, 0xe2, 0x76, 0x3a, 0xe, 0x8f, 0x5c, 0xe, 0x21, 0xbe, 
-	0x12, 0x47, 0xdf, 0xe4, 0x14, 0xc9, 0xdd, 0xca, 0xf, 0xb0, 
-	0xad, 0xb1, 0xd, 0x6e, 0x2b, 0x52, 0xb0, 0x67, 0xdf, 0x23, 
-	0xe9, 0x8a, 0xc1, 0x9d, 0xa3, 0x14, 0x46, 0xd, 0xc5, 0xd, 
-	0x6c, 0x17, 0x4a, 0x25, 0xd6, 0x6a, 0xde, 0xfd, 0x92, 0x84, 
-	0xec, 0x65, 0x6d, 0x6a, 0x99, 0xcc, 0xe7, 0x54, 0x2a, 0x75, 
-	0x66, 0xb8, 0x19, 0x42, 0x8, 0xa3, 0xf0, 0x30, 0x8e, 0x4e, 
-	0xc3, 0x33, 0x6a, 0xea, 0x99, 0x77, 0x46, 0x9d, 0x5a, 0x19, 
-	0xd7, 0x4a, 0x54, 00, 0xda, 0x30, 0xd3, 0x65, 0x20, 0xe8, 
-	0x94, 0x41, 0x88, 0x3, 0x18, 0x32, 0xc5, 0x5b, 0xd5, 0x91, 
-	0x73, 0xb5, 0x67, 0xfc, 0x2f, 0x4a, 0x42, 0x63, 0x1b, 0xdc, 
-	0xc5, 0x1a, 0xbb, 0x5b, 0x60, 0x6b, 0x4b, 0xe9, 0xd7, 0x4, 
-	0xec, 0xef, 0x4f, 0x93, 0x29, 0x6e, 0x60, 0x53, 0x6, 0x2e, 
-	0xae, 0x47, 0x36, 0x25, 0x9b, 0x46, 0x3c, 0xae, 0x9f, 0x1, 
-	0xe, 0x70, 00, 0x30, 0xc0, 0x36, 0xa8, 0x73, 0x5a, 0x3b, 
-	00, 0x9a, 0x34, 0x3, 0x9b, 0x36, 0x44, 00, 0xf, 0x6d, 
-	0x73, 0xfb, 0x5c, 0x16, 0x21, 0x7c, 0xc7, 0x9b, 0x17, 0x16, 
-	0x4e, 0x3, 0x2, 0xbe, 0xc4, 0x7d, 0x40, 0xba, 0xfb, 0xc2, 
-	0xa1, 0x5, 0x9b, 0x90, 0xeb, 0xe4, 0xe7, 0x1a, 0x74, 0x89, 
-	0xe3, 0x5d, 0x16, 0x21, 0xd7, 0x7a, 0x1, 0xf0, 0xb8, 0xdf, 
-	0x79, 0x6c, 0x39, 0x5f, 0x7c, 0xc1, 0x3a, 0xf9, 0x92, 0xe, 
-	0x73, 0xcc, 0x3, 0x1c, 0x5e, 0x51, 0x8e, 0xeb, 0x4f, 0xfb, 
-	0xec, 0x43, 0x65, 0x6a, 0xf8, 0xa3, 0x55, 0xec, 0xe, 0x79, 
-	0xda, 0x98, 0xd7, 0xda, 0x94, 0x61, 0x5e, 0xd1, 0x4e, 0xf3, 
-	0xd1, 0xf2, 0x5c, 0x69, 0x31, 0xc2, 0xb, 0xfd, 0xfa, 0xa6, 
-	0xac, 0x90, 0xc5, 0xba, 0xc7, 0xe0, 0x26, 0xc, 0x53, 0x5e, 
-	0x85, 0xe0, 0x2c, 0x56, 0xaa, 0xfa, 0xd9, 0xb3, 0xab, 0x16, 
-	0xdc, 0x50, 0xa4, 0x10, 0x90, 0x60, 0x80, 0xdb, 0x6c, 0x8, 
-	0x95, 0xd2, 0x62, 0xc3, 0x35, 0x7a, 0xd3, 0xea, 0x1f, 0x5, 
-	0x6e, 0xf6, 0x16, 0x57, 0xe4, 0x60, 0x46, 0xac, 0x4d, 0x60, 
-	0x14, 0x4c, 0xa3, 0x73, 0x10, 0x52, 0x42, 0x18, 0x89, 0xf6, 
-	0x66, 0x8e, 0x38, 0x71, 0xe2, 0xc4, 0x30, 0x42, 0x57, 0x44, 
-	0xbc, 0x44, 0x26, 0xca, 0xb3, 0xf0, 0x51, 0xae, 0x3d, 00, 
-	0x91, 0xc6, 0x5e, 0x2b, 0xb, 0x64, 0x9e, 0x80, 0x7d, 0xab, 
-	0x6e, 0xf5, 0xb3, 0x57, 0xcf, 0xad, 0x6d, 0x9a, 0x3b, 0x9d, 
-	0x36, 0x9b, 0xf1, 0x94, 0xe4, 0x39, 0x76, 0xb3, 0x4c, 0xf1, 
-	0x6f, 0x6a, 0x91, 0xeb, 0x5b, 0x7b, 0xec, 0xb1, 0x47, 0x23, 
-	0xda, 0xb6, 0x94, 0x43, 0x18, 00, 0xb2, 0x1, 0x40, 0x9c, 
-	0x76, 0x2, 0x52, 0xae, 0x99, 0x7, 0x6, 0x2e, 0xe9, 0x8, 
-	0x2e, 0xa1, 0x1, 0xe, 0x7f, 0xe2, 0xeb, 0x5c, 0x83, 0x8e, 
-	0x1, 0xee, 0xb6, 0x91, 0x46, 0xdc, 0xe, 0xfa, 0x38, 0xf8, 
-	0x60, 0xa1, 0x74, 0x99, 0xe6, 0xbf, 0xcb, 0xe7, 0xb7, 0xc1, 
-	0x4b, 0x9a, 0x81, 0x43, 0x3c, 0xce, 0xe3, 0xfb, 0xcc, 0x5b, 
-	0xe8, 0x99, 0xd7, 0x2e, 0x97, 0x90, 0xfb, 0x7b, 0x1, 0x70, 
-	0x93, 0xa, 0x1a, 0x4c, 0x8b, 0x50, 0xf, 0x89, 0x5e, 0x5a, 
-	0x83, 0xe7, 0xdf, 0x69, 0x9d, 0xa1, 0xde, 0x53, 0x6, 0x3, 
-	0x9b, 0x3a, 0xb9, 0xe, 0x84, 0xb5, 0x38, 0xa6, 0x42, 0x5a, 
-	0xe8, 0xe2, 0x91, 0x64, 0xfe, 0x9, 0x85, 0xf9, 0x41, 0x58, 
-	0x5c, 0x96, 0xdb, 0x5d, 0x69, 0x59, 0xc2, 0xcb, 0x5a, 0x3d, 
-	0xd, 0xb9, 0x4b, 0xf9, 0xb1, 00, 0x91, 0x29, 0x9b, 0xe4, 
-	0x28, 0x4d, 0x2b, 0x50, 0xf0, 0x46, 0x9b, 0xe9, 0xc7, 0xce, 
-	0x8e, 0x24, 0xa1, 0x8c, 0xab, 0xa, 0xdc, 0x10, 0xcd, 0x31, 
-	0x28, 0x30, 0x56, 0x34, 0x29, 0x38, 0x68, 0xed, 0x5c, 0xb8, 
-	0x5a, 0xda, 0xf5, 0x41, 0x3d, 0xea, 0x59, 0x2b, 0x10, 0x36, 
-	0xf3, 0x4a, 0x60, 0xa5, 0xce, 0x8c, 0x37, 0x63, 0x8, 0xe9, 
-	0x18, 0xb, 0x16, 0x2, 0x81, 0xd7, 0x28, 0xa7, 0x85, 0xa3, 
-	0x81, 0x19, 0x99, 0xfe, 0xf1, 0x28, 0x5e, 0x69, 0x31, 0x21, 
-	0x9f, 0x3b, 0x9b, 0x1f, 0x94, 0x83, 0x80, 0x2, 0x10, 0xed, 
-	0x6e, 0x6a, 0xd5, 0xee, 0xa0, 0xf9, 0xd7, 0x5f, 0x7f, 0x3d, 
-	0xc0, 0x46, 0x2b, 0xdb, 0x14, 0x27, 0x8c, 0x1, 0xce, 0x35, 
-	0x9b, 0x4c, 0x66, 0x74, 0x1e, 0xd8, 0x27, 0x9d, 0x74, 0xd2, 
-	0x77, 0xa5, 0xb1, 0xbf, 0x2e, 0x1, 0x6e, 0xc4, 0x84, 0xeb, 
-	0xce, 0x51, 0x3e, 0x7d, 0x45, 0x3b, 0x89, 0x3, 0x42, 0xea, 
-	0xe7, 0x34, 0x83, 0x7, 0xd0, 0xe2, 0xd, 0xe6, 0x38, 0x74, 
-	0xba, 0x81, 0xed, 0x10, 0x1a, 0xe4, 0x83, 0xa6, 0x1d, 0x69, 
-	0xe6, 0x35, 0x69, 0x94, 0x19, 0x7b, 0xf3, 0x9c, 0x72, 0x49, 
-	0x47, 0x70, 0x9, 0xe1, 0xbd, 0x7f, 0x73, 0xcd, 0x9e, 0x34, 
-	0xee, 0xe1, 0x37, 0xce, 0xed, 0x30, 0x8f, 0xe3, 0xb2, 0x42, 
-	0x86, 0xdc, 0x1f, 0xe8, 0x55, 0x1, 0x70, 0x78, 0x6c, 0x64, 
-	0x3a, 0x74, 0x5a, 0x8a, 0x37, 0xf2, 0x34, 0xe8, 0xd5, 0x9, 
-	0xd8, 0x9f, 0xd7, 0x23, 0xb7, 0x3a, 0xe6, 0xe0, 0xae, 0x13, 
-	0xf5, 0xa3, 0xe, 0x84, 0xb5, 0x3a, 0xe6, 0xc3, 0x92, 0xb, 
-	0x78, 0x11, 0x76, 0xbf, 0xc5, 0x96, 0x1, 0xed, 0x76, 0x9b, 
-	0x5d, 0x16, 0xe5, 0x94, 0x6b, 0x77, 0x71, 0x1d, 0xd8, 0x91, 
-	0x26, 0xa5, 0xd5, 0x2a, 0xa5, 0xf8, 0x84, 0xae, 0xc5, 0xc0, 
-	0x26, 0x6e, 0x19, 0x3, 0x67, 0x6, 0x77, 0x67, 0x67, 0x16, 
-	0x13, 0x2b, 0xfa, 0x5d, 0x15, 0xb8, 0xa3, 0x7b, 0x61, 0x2c, 
-	0x85, 0xc5, 0xda, 0x9b, 0xca, 0xac, 0x91, 0x30, 0xad, 0x92, 
-	0x79, 0x71, 0x93, 0x9e, 0x5, 0x1e, 0xa6, 0xc7, 0x15, 0xec, 
-	0xc6, 0xaa, 0xc8, 0xc1, 0xc, 0xb, 0x1e, 0xcc, 0x22, 0xe, 
-	0xe3, 0x10, 0x2e, 0x4, 0x94, 0x10, 0xa6, 0xb2, 0xd0, 0xc5, 
-	0xa3, 0x31, 0x34, 0x78, 0x6f, 0xb6, 0xa5, 0xd2, 0x11, 0x8, 
-	0x3d, 0x21, 0xc0, 0x56, 0x7d, 0x5b, 0xb5, 0xe5, 0x6f, 0xfe, 
-	0x55, 0x57, 0x5d, 0x75, 0x9b, 0x2a, 0x8c, 0x66, 0x36, 0x98, 
-	0x1d, 0x5a, 0x5b, 0x13, 0x7a, 0x44, 0xa5, 0xfd, 0x48, 0x4d, 
-	0x1e, 0xd8, 0x32, 0xc5, 0x7f, 0x20, 0x60, 0x7f, 0x45, 0x82, 
-	0xdb, 0x23, 0xb0, 0x75, 0x5f, 0x70, 0xb4, 0x3d, 0x6e, 0xbf, 
-	0xeb, 0x46, 0x1a, 0xbc, 0xa0, 0xfd, 0x84, 0xf0, 00, 0xe0, 
-	0x2, 0xc, 0x3, 0x98, 0xba, 0xd3, 0xe, 0x3c, 0x69, 0xf0, 
-	0xcd, 0xd7, 0x88, 0xfb, 0x1a, 0x5, 0xf1, 0xdb, 0xce, 0x65, 
-	0x3a, 0xa4, 0x4c, 0xb, 0x29, 0x69, 0xf0, 0x9e, 0x34, 0xb, 
-	0xaf, 0x7f, 0x93, 0x87, 0x38, 0x79, 0xa8, 0xf, 0x79, 0x70, 
-	0xf1, 0xbd, 0xa6, 0xe9, 0xb2, 0xca, 0x85, 0xdd, 00, 0xdc, 
-	0x15, 0xc5, 0x2a, 0x44, 0x98, 0xe1, 0x33, 0x3c, 0x7, 0xd8, 
-	0x5c, 0xb3, 0x57, 0x34, 0xbb, 0xc8, 0xa6, 0x47, 0x62, 0x73, 
-	0x55, 0x1f, 0x9e, 0x3d, 0x7f, 0x76, 0xeb, 0xad, 0xb7, 0xae, 
-	0xe3, 0xcc, 0x75, 0xea, 0x66, 0x4f, 0xc6, 0x5a, 0x1c, 0x72, 
-	0xa6, 0x79, 0x36, 0x5f, 0xc3, 0x9, 0x1b, 0x64, 0xa8, 0x33, 
-	0xed, 0x8e, 0x3d, 0x6d, 0x77, 0xfb, 0x29, 0x8f, 0xf6, 0x57, 
-	0xea, 0x78, 0xfc, 0x25, 0xfa, 0xf7, 0xab, 0x9f, 0xc, 0x6c, 
-	0xb4, 0xb6, 0x35, 0x37, 0xed, 0xb7, 0xe6, 0x86, 0xf, 0xe6, 
-	0x4b, 0x45, 0xe4, 0x6b, 0x5, 0x37, 0x5, 0xd1, 0x2, 0x98, 
-	0x6e, 0xc6, 0xc3, 0xfc, 0xe0, 0x65, 0xd6, 0xde, 0xa6, 0xc7, 
-	0x62, 0x87, 0x69, 0x35, 0xb6, 0x2a, 0xf3, 0xd9, 0x4c, 0x71, 
-	0x87, 0x98, 0x69, 0x8, 0x13, 0xcc, 0x84, 0xb1, 0x8, 0xb3, 
-	0xac, 0x3, 0x18, 0x9d, 0x61, 0xdb, 0x26, 0xe9, 0xb5, 0x3a, 
-	0xca, 0x3, 0x38, 0x3a, 0xcc, 0x90, 0xc5, 0xb3, 0x87, 0x2e, 
-	0xbb, 0xec, 0xb2, 0xdb, 0x44, 0xcb, 0xf3, 0x6b, 0x16, 0xcf, 
-	0xac, 0xb9, 0x89, 0x1b, 0xdc, 0xb4, 0x11, 0xa6, 0xd3, 0xee, 
-	0x2, 0x60, 0x9f, 0x7c, 0xf2, 0xc9, 0xc7, 0x9, 0xd8, 0xc7, 
-	0x8, 0xd8, 0x4d, 0x98, 0x87, 0xd5, 0x3a, 0x83, 0x2, 0x10, 
-	0x12, 0x87, 0xf, 0x80, 0x93, 0x38, 0x3c, 0x20, 0xee, 0x90, 
-	0x7a, 0xe3, 0xe1, 0x9, 0xe9, 0xc4, 0xd, 0x6c, 0x83, 0x9a, 
-	0xf2, 0x49, 0xc7, 0x91, 0xa7, 0xd8, 0x41, 0x1f, 0x67, 0x81, 
-	0x74, 0x68, 0x41, 0x8d, 0x43, 0xe2, 0xae, 0x93, 0xc1, 0xed, 
-	0xdf, 0xbe, 0x8f, 0xdf, 0xf8, 0x6a, 0x5c, 0xc, 0x70, 0x2d, 
-	0x3e, 0x66, 0x7e, 0xf9, 0xcb, 0x5f, 0xf2, 0x98, 0xc, 0x21, 
-	0x36, 0xa1, 0x18, 0xe0, 00, 0xa0, 0xd8, 0xe5, 0xf3, 0x6a, 
-	0xa1, 0x6e, 0xae, 0xea, 0xd9, 0xa0, 0xfa, 0x1d, 0xa9, 0xf, 
-	0x4b, 0x6, 0xd, 0xee, 0xba, 0x15, 0xdf, 0x54, 0xc9, 0x6f, 
-	0x64, 0x4d, 0xf3, 0x7a, 0x16, 0xbb, 0xf2, 0xaf, 0x8f, 0x5a, 
-	0xe, 0xa9, 0x37, 0x7c, 0x30, 0x8f, 0xe2, 0x72, 0x2a, 0xe5, 
-	0x1, 0xf8, 0xd0, 0x73, 0x73, 0xe4, 0x99, 0xc7, 0x5f, 0x36, 
-	0xc9, 0xad, 0xb1, 0x2d, 0x67, 0x6e, 0x7f, 00, 0xb7, 0xfa, 
-	0xb6, 0x62, 0x80, 0x57, 0xd, 0x6e, 0x88, 0xe7, 0x2a, 0x4f, 
-	0x21, 0x48, 0x8e, 0x47, 0x16, 0x2a, 0x13, 0x46, 0x1d, 0x3d, 
-	0xb3, 0x7b, 0x5b, 0xbb, 0x92, 0x66, 0xe9, 0x3d, 0xe7, 0xbd, 
-	0xd0, 0x60, 0x4a, 0xaf, 0xc8, 0x41, 0x97, 0xba, 0x13, 0xc2, 
-	0x2c, 0x3c, 0xc, 0xb4, 0x10, 0x5b, 0x6b, 0xc1, 0xf4, 0x45, 
-	0x7a, 0x2c, 0xa1, 0x4f, 0xde, 0x64, 0xd4, 0x89, 0x59, 0x9, 
-	0xad, 0xa8, 0x84, 0xc2, 0x4c, 0xd0, 0xd3, 0x2b, 0x82, 0xad, 
-	0xd2, 0xda, 0xf, 0xff, 0xe9, 0x4f, 0x7f, 0x2, 0xd8, 0xd6, 
-	0xd8, 0xd6, 0xd6, 0x5e, 0x40, 0x3, 0xe4, 0xf1, 0x68, 0xa, 
-	0xc3, 0x59, 0x29, 0x42, 00, 0x19, 0x5d, 0x9a, 0x5, 0xec, 
-	0x9f, 0x6a, 0x8e, 0xfd, 0x59, 0x80, 0x8d, 0x85, 0xd1, 0x1b, 
-	0x47, 0xfb, 0x63, 0x5e, 0x20, 0x40, 0x80, 0xd3, 0x3c, 0x81, 
-	0xb6, 0x1, 0x4d, 0x8, 0xcf, 0x8, 0x4b, 0xc5, 0xb9, 0x86, 
-	0x2f, 0xe7, 0x5c, 0x96, 0x43, 0x97, 0xe1, 0x90, 0xfb, 0xe8, 
-	0x3, 0x7e, 0x93, 0x7, 0x17, 0x3, 0x9d, 0xdf, 0xbe, 0x97, 
-	0x78, 0x2d, 0x2e, 0x2, 0xf8, 0x81, 0x2, 0x78, 0x22, 0x80, 
-	0xb3, 0xd1, 0x25, 0xee, 0x57, 0x64, 0xc, 0xe1, 0x46, 0xde, 
-	0x10, 0x7e, 0x1a, 0xe4, 0x46, 0x11, 0x3a, 0x6f, 0x4a, 0x4b, 
-	0x25, 0xf7, 0x9, 0x80, 0xec, 0x6a, 0x3c, 0x42, 0x2b, 0xe9, 
-	0x75, 0xec, 0x29, 0xa8, 0xd5, 0x69, 0x9a, 0xd6, 0xf1, 0xdc, 
-	0x73, 0xcf, 0xd1, 0xf6, 0x82, 0x45, 0x34, 00, 0xe, 0x4f, 
-	0x8, 0xe1, 0x45, 0x29, 0x80, 0x57, 0x52, 0xa6, 0xb6, 0x32, 
-	0xb7, 0xca, 0xca, 0x7d, 0x50, 0x73, 0x7a, 0x36, 0x44, 0x5, 
-	0xec, 0xe4, 0x42, 0x3, 0xdc, 0x4a, 0x84, 0x76, 0xe3, 0xdd, 
-	0x66, 0x45, 0x7b, 0x76, 0x55, 0x83, 0x3b, 0x22, 0x9, 0xb3, 
-	0xcd, 0x70, 0x2a, 0x61, 0x4f, 0x25, 0x57, 0x69, 0x61, 0xea, 
-	0x4a, 0x81, 0x6f, 0x3a, 0xdb, 0x17, 0xe3, 0x17, 0x23, 0xa2, 
-	0xfb, 0x4b, 0x46, 0x2d, 0x40, 0x8, 0x93, 0x85, 0xba, 0x18, 
-	0xe0, 0x80, 0x12, 0xf3, 0x5c, 0xb, 0x1c, 0x9c, 0x49, 0xdd, 
-	0x65, 0x1f, 0x78, 0x49, 0xc2, 0x45, 0x89, 0xc, 0x10, 0x3a, 
-	0x5a, 0x97, 0xc3, 0xc, 0x1f, 0xbe, 0xf4, 0xd2, 0x4b, 0x1, 
-	0xb6, 0x1f, 0x73, 0xb1, 0xa5, 0xd4, 0x71, 0x6b, 0x6e, 0x98, 
-	0xcd, 0x3c, 0xdb, 0x73, 0x1f, 0xf8, 0x16, 0x80, 0xad, 0xfd, 
-	0xf4, 0xe3, 0x75, 0xd4, 0xd0, 0x37, 0xb4, 0x1f, 0xfd, 0x28, 
-	0x9e, 0xe3, 0x22, 0xa8, 0x7d, 0xe5, 0x62, 0xd0, 0x10, 0x7, 
-	0xa4, 0xf0, 0xc5, 0x21, 0x71, 0x9c, 0x1, 0x1c, 0x3, 0x9c, 
-	0x74, 0x83, 0x9d, 0x38, 0x2e, 0x6, 0xb9, 0xf9, 0x5c, 0x1c, 
-	0xc6, 0xc0, 0x8d, 0xaf, 0x51, 0x16, 0xbf, 0x8b, 0x7d, 0x96, 
-	0x72, 0xef, 0xff, 0xc6, 00, 0x67, 0xa3, 0xcb, 0xef, 0x7e, 
-	0xf7, 0xbb, 0xdf, 0xf0, 0xc, 0x5b, 0xe, 0x3e, 0x23, 0x53, 
-	0x8, 0xb7, 0xf9, 0x8f, 0x22, 0xc1, 0x65, 0x47, 0x9b, 0x6c, 
-	0x3c, 0x68, 0x36, 0xa2, 0x9c, 0xe8, 0xa2, 0x7a, 0xa6, 0xd5, 
-	0x96, 0xc3, 0x79, 0x2c, 0xdb, 0xd3, 0xba, 0x47, 0xf6, 0xf6, 
-	0xc2, 0xbf, 0xc8, 0x95, 0x4c, 0xf2, 0xfc, 0x22, 0x1a, 0xf5, 
-	0x8b, 0xe7, 0xda, 0x6, 0x36, 0xb2, 0x69, 0x9e, 0x41, 0xc1, 
-	0x3c, 0x2b, 0xa4, 0xd6, 0xf5, 0x17, 0x1b, 0x87, 0x50, 0x50, 
-	0x7a, 0x27, 0xe3, 0xe, 0x5d, 0x45, 0xb6, 0xf0, 0xb4, 0x13, 
-	0x59, 0xc3, 0x83, 0x27, 0x2b, 0x4e, 0xda, 0x46, 0xff, 0xad, 
-	0x7b, 0x70, 0x53, 0x48, 0xae, 0x11, 0x6, 0x37, 0x8c, 0xa7, 
-	0x32, 0x30, 0x3d, 0x54, 0x4e, 0xda, 0x7b, 0x99, 0x16, 0xb, 
-	0xae, 0xb9, 0xef, 0xbe, 0xfb, 0xe, 0x95, 0xf0, 0x57, 0xac, 
-	0xca, 0xa0, 0x4b, 0x1b, 0x8, 0xd, 0x70, 0x83, 0x1b, 0x86, 
-	0xc2, 0x64, 0xc0, 0x8d, 0xd7, 00, 0x82, 0xb9, 0x94, 0xd1, 
-	0xb, 0x18, 0x61, 0x64, 0x55, 0xd9, 0x15, 0x39, 0x3, 0x5b, 
-	0xab, 0x94, 0xf, 0xeb, 0xcc, 0xb3, 0x18, 0xd8, 0xd6, 0xd4, 
-	0x68, 0x6e, 0xe2, 0x66, 0xba, 0x99, 0x4d, 0x7b, 0x11, 0x28, 
-	0x50, 0xd5, 0xb8, 0xcb, 0x2e, 0xbb, 0x4c, 0xd4, 0x37, 0xc5, 
-	0xaf, 0xd5, 0xab, 0x9a, 0x3, 0xb5, 0x55, 0x35, 0xbf, 0xdf, 
-	0x59, 0xd7, 0xfa, 0xdc, 0xc1, 0x8f, 0x1c, 0xcf, 0xf3, 0x60, 
-	0x46, 0xa8, 0xe0, 0x55, 0xb1, 0x77, 0xe1, 0x4e, 0x8f, 0x7f, 
-	0x3b, 0x6e, 0x5a, 0xfc, 0x2e, 0x8e, 0xbb, 0xac, 0x38, 0x74, 
-	0xbe, 0x38, 0xaf, 0x69, 0xf5, 0x55, 0x68, 0x80, 0xdf, 0x7c, 
-	0xf3, 0xcd, 0x87, 0x7c, 0xee, 0x73, 0x9f, 0xdb, 0xec, 0x3f, 
-	0xfe, 0xe3, 0x3f, 0xfe, 0x4e, 0xb4, 0x2d, 0xd0, 0xf4, 0x1, 
-	0x71, 0x83, 0x9c, 0xb8, 0xaf, 0x5, 0xe1, 0xd7, 0x6f, 0xfa, 
-	0x26, 0x78, 0xbd, 0x17, 0x7f, 0xb7, 0xf8, 0x83, 0x75, 0x75, 
-	0xb0, 0x34, 0x78, 0x97, 0x97, 0x4d, 0x94, 0x5e, 0xd6, 0x21, 
-	0x1f, 0x32, 0xc5, 0xf5, 0x2a, 0xeb, 0xa3, 0xc1, 0x1c, 0x7, 
-	0xd4, 0x78, 0xcb, 0x1f, 0xa1, 0x35, 0x37, 0xfc, 0x40, 0x4e, 
-	0xed, 0xcb, 0x12, 0x2d, 0xba, 0xa0, 0x7d, 0xf6, 0xad, 0xda, 
-	0x5d, 0x37, 0x5b, 0x5a, 0x1b, 0x39, 0x8b, 0xb5, 0x36, 0x18, 
-	0xc2, 0x1b, 0xdc, 0xb4, 0xcd, 0x5e, 0xd1, 0xca, 0x9d, 0xcd, 
-	0x99, 0xca, 0xef, 0xe8, 0x9a, 0x93, 0x82, 0x3d, 0xc2, 0x18, 
-	0xdc, 0xa1, 0xb2, 0x1a, 0x95, 0x6e, 0xd2, 0xe8, 0xb7, 0x96, 
-	0x6d, 0x92, 0xd5, 0xb8, 0x58, 0xa8, 0xc, 0x70, 0x33, 0xd4, 
-	0x23, 0x28, 0xcc, 0x66, 0x5e, 0xab, 0xf9, 0x4a, 0x46, 0x2b, 
-	0x99, 0xee, 0xdc, 0x1e, 0x8b, 0x29, 0x1, 0x6c, 0xb4, 0x33, 
-	0xc, 0x6, 0xd0, 0x7e, 0x11, 0x24, 0x9e, 0x63, 0x1b, 0xd8, 
-	0x8, 0x92, 0x81, 0xdd, 0x74, 0xd8, 0x61, 0x87, 0x6d, 0xaf, 
-	0x3d, 0xe2, 0x57, 0x6b, 0x8e, 0xbd, 0x42, 0x34, 0x53, 0x3a, 
-	0xda, 0x47, 0xb3, 0x7, 0xe4, 0x6e, 0xdd, 0xbb, 0x58, 0xa0, 
-	0x90, 0x5f, 0x7b, 0xb, 0x9c, 0xb5, 0x9, 0x61, 0xec, 0xe1, 
-	0xa1, 0x7d, 0x9c, 0x4e, 0xdc, 0xe9, 0xe6, 0xb3, 0x69, 0x12, 
-	0x5a, 0x70, 0xd7, 0x25, 0xb0, 0xe1, 0x1a, 0xfc, 0x13, 0x1f, 
-	0x3b, 0xf4, 0xcc, 0x97, 0x8d, 0x22, 0x13, 0x8e, 0x39, 0xe6, 
-	0x98, 0x63, 0x95, 0xcc, 0xce, 0x1f, 0x1e, 0x39, 0x30, 0xfd, 
-	0xc1, 0x5b, 0x66, 0x61, 0x36, 0xf2, 0xe6, 0x1, 0x38, 0x9e, 
-	0x52, 0x85, 0x7e, 0xd4, 0x6, 0xa4, 0xd9, 0x9a, 0x1a, 0x5e, 
-	0xaf, 0x35, 0x95, 0x36, 0xe6, 0xb7, 0x95, 0x3a, 0xe4, 0x89, 
-	0xa7, 0x32, 0xb4, 0xd7, 0xc0, 0x46, 0xee, 0xf0, 0xe6, 0x13, 
-	0x3c, 0xb3, 0x6c, 0x56, 0x4a, 0xd7, 0xf9, 0xc0, 0x3, 0xb8, 
-	0xd0, 0xda, 0xd4, 0xfd, 0x4a, 0x33, 0xb0, 0x63, 0xcd, 0x6d, 
-	0x2b, 0x98, 0x36, 0x22, 0xdb, 0x1e, 0xc4, 0x4c, 0xa2, 0xa2, 
-	0xb0, 0xa2, 0xb7, 0xc2, 0x4a, 0x51, 0x8a, 0xde, 0x14, 0xcb, 
-	0x8f, 0x96, 0xca, 0xc7, 0x48, 0x89, 0xc7, 0x6c, 0xad, 0x97, 
-	0x59, 0xc8, 0xfb, 0xae, 0x6b, 0xc4, 0xd8, 0xcd, 0x37, 0xdb, 
-	0x6c, 0xb3, 0x8a, 0xa7, 00, 0x30, 0xd5, 0xda, 0x5b, 0x74, 
-	0x42, 0x9c, 0x10, 0x47, 0xba, 0xcd, 0x4d, 0xe2, 0x7a, 0x8c, 
-	0x10, 0xb6, 0x5a, 0xf2, 0xc9, 0x59, 0x2d, 0xb2, 0x51, 0x97, 
-	0xb2, 0xae, 0xc, 0xb0, 0xd, 0x68, 0x9b, 0xe3, 00, 0x1b, 
-	0xc0, 0xc3, 0x6c, 0x84, 0x87, 0x81, 0xcb, 0x83, 0x7, 0x6d, 
-	0x68, 0xd4, 0x87, 0xf1, 0xb6, 0xde, 0x7c, 0xf3, 0xcd, 0xcf, 
-	0xd3, 0x1b, 0x4f, 0xcb, 0xb5, 0x7f, 0x7b, 0x82, 0xea, 0xcb, 
-	0x59, 0xeb, 0x1c, 0x93, 0x9c, 0x12, 0xd8, 0xc3, 0x68, 0xaf, 
-	0x7c, 0x1f, 0x9a, 0x83, 0x5f, 0xb1, 0x37, 0x18, 0x2b, 0xd, 
-	0x8b, 0x1, 0x1c, 0xd3, 0xfa, 0xb0, 0x1a, 0xa1, 0x35, 0x9a, 
-	0x44, 0xef, 0x6c, 0x87, 0xef, 0xa7, 0xab, 0xde, 0x69, 0xed, 
-	0x95, 0x6f, 0x50, 0x7f, 0x4d, 0x16, 0x9f, 0x47, 0xa, 0x9c, 
-	0xf, 0xaa, 0x1e, 0xf4, 0xad, 0xb5, 0x75, 0xb1, 0xc0, 0x3b, 
-	0x9d, 0xea, 0x16, 00, 0x41, 0x4f, 0x40, 0xde, 0xd0, 0xbc, 
-	0xbb, 0x4d, 0x6d, 0x9c, 0xac, 0xa7, 0x2b, 0xe1, 0x73, 0x3f, 
-	0x64, 0x2a, 0xe7, 0x58, 0x1d, 0x17, 0xb8, 0x53, 0x52, 0x4c, 
-	0x61, 0x27, 0x1a, 0xa, 0x4, 0x8f, 0x69, 0x8f, 0xb7, 0x72, 
-	0x1, 0xdc, 0x1e, 00, 0xcd, 0xe7, 0x72, 0x34, 0x8b, 0xd3, 
-	0x75, 0xd2, 0xeb, 0x5a, 0xcd, 0xe5, 0x6f, 0xd1, 0xb4, 0x63, 
-	0xa1, 0xae, 0x79, 0x7d, 0x87, 0xd0, 0x72, 0x17, 0xcb, 0x5e, 
-	00, 0xb8, 0x64, 0xbd, 0xa0, 0x5d, 0xc5, 0x34, 0x4b, 0xfd, 
-	0xf6, 0x28, 0x58, 0xea, 0x5a, 0xb7, 0x69, 0xb9, 0xc2, 0xcc, 
-	0x54, 0x98, 0xd, 0x8, 0x3c, 0xe2, 0xa0, 0xed, 0xc2, 0x88, 
-	0xa4, 0xd1, 0x69, 0xb6, 0x1e, 0x23, 0x2c, 0xd7, 0xfc, 0x42, 
-	0x49, 0x95, 0x3b, 0x4, 0xc, 0x67, 0xc6, 0xc1, 0x48, 0x6b, 
-	0x18, 0x8f, 0xa2, 0x84, 0x30, 0x5c, 0x3b, 0x87, 0x52, 0x32, 
-	0xa3, 0xba, 0xfd, 0xc, 0x51, 0x5, 0xc0, 0x36, 0x93, 0x61, 
-	0xb0, 0x1f, 0x77, 0xd1, 0x1e, 0x98, 0x4b, 0x65, 0x18, 0xb4, 
-	0x1a, 0x74, 0xd2, 0xe7, 0xe6, 0x7a, 0xd4, 0x72, 0x5e, 0x4b, 
-	0x4b, 0xcb, 0x7b, 0x5a, 0x40, 0x9b, 0xa8, 0xb4, 0x50, 0x47, 
-	0x6d, 0x54, 0xa9, 0x43, 0x30, 0xf4, 0xbe, 0x73, 0x78, 0x83, 
-	0x8d, 0xf4, 0xbf, 0x6, 0x17, 0x3, 0xb5, 0x5c, 0xfc, 0xa3, 
-	0xae, 0xa7, 0x56, 0x8c, 0x3, 0xdf, 0x24, 0x2b, 0x19, 0xed, 
-	0xba, 0x83, 0xcf, 0x1, 0x38, 0xda, 0x89, 0xc8, 0x5e, 0x89, 
-	0x83, 0xf5, 0xe9, 0x22, 0x6b, 0x70, 0x1e, 0x41, 0x30, 0xc5, 
-	0x43, 0x83, 0x93, 0xf, 0xf9, 0xa3, 0x7f, 0xe8, 0x27, 0xe4, 
-	0xcd, 0x4f, 0x34, 0xe8, 0xcb, 0xbc, 0x35, 0xa6, 0xc7, 0x9b, 
-	0xb7, 0x6b, 0x7d, 0xe5, 0x66, 0x3e, 0x7c, 0xc0, 0xe, 0xbf, 
-	0x72, 0x4e, 0x8a, 0x2, 0x73, 0x3c, 0x59, 0xb0, 0x60, 0x41, 
-	0x81, 0x39, 0x8e, 0xf6, 0x8e, 0xb5, 0x76, 0xc, 0x6a, 0xf3, 
-	0xb4, 0x1c, 0xcd, 0xe2, 0x74, 0x70, 0xa0, 0xf9, 0xf6, 0xfb, 
-	0xb2, 0x38, 0x1f, 0xd2, 0x35, 0xea, 0xc, 0x90, 0xf1, 0x54, 
-	0xcc, 0x1e, 0x2c, 0xd1, 0xae, 00, 0x6c, 0x85, 0x55, 0x3, 
-	0x5b, 0xf7, 0x24, 0x35, 0x6b, 0x6e, 0x6e, 0x2e, 0xd2, 0xde, 
-	0xc, 0x14, 0x80, 0x80, 0x10, 0xf, 0xf3, 0xeb, 0x34, 0x8, 
-	0xd4, 0x8b, 0x1, 0xef, 0x4a, 0x7b, 0x6f, 0xa7, 0x51, 0x98, 
-	0xb8, 0x92, 0x7b, 0x76, 0x71, 0x3e, 0xc7, 0x3d, 0x78, 0x11, 
-	0x3a, 0x8e, 0x16, 0xc7, 0x69, 0xfe, 0xc2, 0x1e, 0x6a, 0xde, 
-	0x1c, 0xb, 0x9a, 0x3c, 0x2e, 0xa1, 0x4, 0xb0, 0xb, 0x3a, 
-	0x5f, 0x79, 0x2b, 0x1, 0x76, 0xa3, 0x9e, 0xdb, 0x4f, 0xd1, 
-	0xc9, 0x29, 0x97, 0x48, 0x63, 0xaf, 0xd2, 0x1b, 0x5e, 0x13, 
-	0x28, 0x9b, 0xb9, 0x3f, 0xf4, 0x9, 0x65, 0x56, 0x72, 0x7e, 
-	0x57, 0x8a, 0x8d, 0x9, 0x2c, 0xf6, 0x71, 0x44, 0x12, 0x66, 
-	0xdc, 0xdf, 0x5c, 0x69, 0xe, 0x60, 0x2a, 0x6b, 0xee, 0xd9, 
-	0xc1, 0xa3, 0x26, 0x6, 0x68, 0xd, 0xde, 0xe1, 0x9d, 0x6c, 
-	0x6b, 0x47, 0x34, 0xa6, 0x2c, 0xa1, 0x7a, 0x1, 0x72, 0xb2, 
-	0x36, 0xa7, 0x8c, 0x60, 0xb3, 0x8a, 0x28, 0x59, 0xa1, 0x40, 
-	0xd4, 0x42, 0xef, 0x34, 0x87, 0x2e, 0x90, 0xdf, 0x8, 0x5c, 
-	0x46, 0x65, 0xbc, 0xce, 0x9b, 0x72, 0x72, 0x2d, 0xea, 0x97, 
-	0x2e, 0x1a, 0x9c, 0x3e, 0xd4, 0x93, 0x93, 0x8c, 0x6, 00, 
-	0x89, 0x5b, 0xf6, 0x34, 0x17, 0x14, 0x87, 0x35, 0x37, 0xa1, 
-	0xe7, 0xdd, 0x9e, 0xba, 0x58, 0xf1, 0x10, 0x56, 0xe2, 0x90, 
-	0x97, 0x9b, 0x6e, 0xba, 0xa9, 0x55, 0x6b, 0x45, 0xd7, 0xca, 
-	0x52, 0x79, 0x55, 0xf7, 0x30, 00, 0xe1, 0x63, 0x6b, 0xd1, 
-	0x5a, 0xdb, 0x8a, 0x85, 0xf7, 0xb6, 0xdd, 0xce, 0x4a, 0x8a, 
-	0xc9, 0xe7, 0xa9, 0xac, 0x56, 0xf9, 0xec, 0x85, 0x91, 0x5c, 
-	0xa1, 0x66, 0xa8, 0x47, 0x1a, 0x2a, 0x85, 0x39, 0x1b, 0x34, 
-	0xb7, 0xc2, 0x55, 0xda, 0xab, 0xfd, 0x90, 0x56, 0xb7, 0x5f, 
-	0x97, 0x29, 0x92, 0x45, 0x62, 0x21, 0x99, 0xb2, 0xbf, 0xc, 
-	0x6a, 0x42, 0x18, 0xe8, 0x11, 0x13, 0xe6, 0x7a, 0x24, 0xf5, 
-	0x9c, 0x88, 0x34, 0xe6, 0x49, 0x5a, 0x4, 0x81, 0x19, 0x79, 
-	0x9a, 0x6, 0x36, 0xdb, 0x14, 0xb5, 0x78, 0x36, 0x4b, 0x17, 
-	00, 0xb2, 0xbd, 0x4d, 0x72, 0x33, 0xd7, 0x1a, 0x9b, 0xfa, 
-	0xd3, 0x1e, 0x6b, 0xec, 0x46, 0xad, 0x84, 0x4f, 0xd4, 0x1c, 
-	0xfb, 0x62, 0x80, 0x2d, 0xcf, 0xc9, 0x11, 0xc1, 0x14, 0xa6, 
-	0x5e, 0x36, 0xd1, 0xa8, 0x3, 0xf5, 0x91, 0x6, 0x4f, 0xe9, 
-	0x31, 0xa, 0xab, 0xb6, 0x98, 0x78, 0xb5, 0xf6, 0x8d, 0x8a, 
-	0xff, 0xbf, 0xe9, 0xe8, 0x1f, 0xf8, 0x2, 0x7f, 0x4, 0xa6, 
-	0x44, 0xa6, 0x73, 0xfe, 0xdd, 0x68, 0x78, 0x49, 0xdf, 0xd2, 
-	0xd7, 0xf0, 0x96, 0xb8, 0x2c, 0xa5, 0x66, 0x59, 0x49, 0x7, 
-	0xeb, 0x68, 0xaa, 0x1f, 0x89, 0x23, 0x9e, 0x83, 0xf3, 0x58, 
-	0x82, 0x91, 0xd3, 0xda, 0x82, 0xfe, 0x8a, 0x35, 0x38, 0x16, 
-	0x18, 0xfd, 0x9a, 0xd7, 0xe0, 0x3a, 0xb2, 0xe9, 0x16, 0x95, 
-	0x37, 0x4b, 0xbe, 0x95, 0x7d, 0xf9, 0x76, 0xd4, 0x47, 0xf2, 
-	0xc1, 0x63, 0xaf, 0xc, 00, 0xb4, 0x4c, 0x79, 0x90, 0x31, 
-	0xa8, 0x6d, 0x3d, 0x5a, 0x1e, 0xa9, 0x9f, 0x65, 0xd4, 0xb4, 
-	0xba, 0xb, 0x5, 0xea, 0x8c, 0xac, 0x83, 0x25, 0x9a, 0xc2, 
-	0x3d, 0xa5, 0x7c, 0xb6, 0x32, 0x8c, 0x13, 0x6b, 0x6d, 0xda, 
-	0x61, 0xcd, 0xd, 0x5e, 0x3a, 0x85, 0xb9, 0x3b, 0xe2, 0x25, 
-	0xae, 0xf5, 0x4a, 0x73, 0x43, 0xaf, 0x48, 0x7b, 0xc3, 0x68, 
-	0x7c, 0x5e, 0x73, 0x2b, 0x1e, 0x34, 0xb8, 0x34, 0xdb, 0x52, 
-	0x31, 0xf4, 0xe3, 0x9a, 0x7b, 0x8b, 0x47, 0xc1, 0xf2, 0xd2, 
-	0xa5, 0xea, 0x5d, 0xcc, 0x4c, 0x83, 0xd8, 0xa1, 0x46, 0x78, 
-	0xce, 0x5b, 0xe3, 0x95, 0xbc, 0xc, 0xa7, 0x76, 0xc4, 0xc0, 
-	0xbe, 0xf8, 0xe2, 0x8b, 0x6f, 0x53, 0x69, 0x74, 0xb8, 0x3b, 
-	0xdb, 0x61, 0x29, 0x60, 0xc3, 0x54, 0xb7, 0xa3, 0x49, 0xa0, 
-	0x1e, 0x2f, 0x70, 0x5f, 0xa6, 0xd3, 0x60, 0x3a, 0x5a, 0x5a, 
-	0x5a, 0xc6, 0x53, 0x6b, 0x84, 0x80, 0x72, 0x9, 0xf1, 0x2c, 
-	0x6, 0x39, 0x4e, 0xba, 0x56, 0x41, 0xf5, 0x1a, 0xe6, 0x5b, 
-	0x29, 0x99, 0x60, 0x19, 0x75, 0x66, 0x82, 0x16, 0x67, 0xf4, 
-	0xff, 0xff, 0xdd, 0x69, 0x86, 0x16, 0xe6, 0xd6, 0xbc, 0x83, 
-	0x2e, 0xaf, 0xa3, 0x9a, 0x5a, 0xc3, 0x7e, 0x6d, 0xcf, 0x69, 
-	0xd9, 0x87, 0x6f, 0x70, 0x19, 0x54, 0x84, 0x68, 0x70, 0x3d, 
-	0x81, 0x99, 0x2c, 0xa0, 0x8f, 0xd4, 0x22, 0x19, 0x9b, 0x3e, 
-	0xe8, 0x1f, 0x2b, 0x16, 0x2b, 0xd, 0xff, 0x36, 0x20, 0xfc, 
-	0x1b, 0xb6, 0x87, 0xfc, 0xda, 0x4a, 0xfa, 0x8a, 0xd6, 0x49, 
-	0xf8, 0xc6, 0xdd, 0x86, 0xea, 0x93, 0x20, 0x8b, 0x28, 0x1d, 
-	0x5e, 0xa, 0xd1, 0x42, 0x57, 0x9a, 0xb2, 0xe8, 0x27, 0xd7, 
-	0xc7, 0x1a, 0x1b, 0xa0, 0xe3, 0x3d, 0x90, 0x1b, 0xd8, 0x84, 
-	0x95, 0x38, 0x64, 0x51, 0x73, 0xed, 0x36, 0xd, 0x64, 0x57, 
-	0xa8, 0x1d, 0xac, 0x30, 0x23, 0x77, 0x56, 0x32, 0xc8, 0x25, 
-	0x1e, 0xa0, 0x33, 0xea, 0xf4, 0x5a, 0x6b, 0x8b, 0x46, 0x55, 
-	0x87, 0x35, 0x90, 0xbf, 0x8b, 0x13, 0x93, 0xfc, 0x58, 0xc, 
-	0x46, 0x7a, 0xd4, 0x61, 0xe4, 0x61, 0x24, 0x62, 0x74, 0xc5, 
-	0xcc, 0x68, 0x96, 0xd9, 0xfc, 0xa4, 0x4c, 0xe6, 0xb9, 0xda, 
-	0x26, 0xb8, 0xd3, 0x74, 0xbd, 0xfe, 0xa8, 0xb4, 0x8a, 0x1c, 
-	0x60, 0x6, 0x2c, 0x30, 0x91, 0x10, 0x7, 0x88, 0x60, 0x32, 
-	0x9a, 0x92, 0x34, 0x83, 0x8a, 0x6b, 0xda, 0x9a, 0xca, 0x19, 
-	0x63, 0xec, 0x5e, 0xcb, 0xa8, 0xd3, 0xda, 0x34, 0x22, 0xf3, 
-	0x25, 0x10, 0x3, 0xdb, 0xc, 0xed, 0x9, 0xd8, 0x90, 0xa2, 
-	0xd7, 0x1a, 0xf5, 0x98, 0x6d, 0x8c, 0xcc, 0xf1, 0x4b, 0xf4, 
-	0xaa, 0x69, 0x6a, 0xf2, 0xe4, 0xc9, 0xeb, 0x53, 0x16, 0x75, 
-	0x62, 0x80, 0x2, 0xd0, 0xae, 0x7, 0x1d, 0xcf, 0xef, 0x18, 
-	0xe4, 0x10, 0x51, 0xbb, 0x39, 0xf8, 0x21, 0xa3, 0xe, 0xc5, 
-	0x4c, 0xf, 0x9b, 0x6e, 0x7a, 0xb3, 0xb1, 0x2, 0x9a, 0xff, 
-	0x1b, 0x1d, 0xe7, 0xae, 0xe9, 0xc9, 0x63, 0x7, 0x2f, 0x60, 
-	0x30, 0xaf, 0xd5, 0xe0, 0x97, 0x3f, 0xa6, 0x8, 0x40, 0xdb, 
-	0x4, 0x36, 0xb0, 0xd, 0x24, 0xf8, 0x4b, 0xdf, 0xd3, 0xd7, 
-	0x7a, 0x66, 0xdd, 0x2c, 0x1a, 0x7, 0xff, 0xe8, 0x47, 0x3f, 
-	0x4a, 0xce, 0x3a, 0xeb, 0xac, 0x5f, 0x17, 0xf1, 0x1, 0x40, 
-	0x58, 0x6, 0x8b, 0x2e, 0x85, 0x9f, 0x59, 0xe1, 0x51, 0x54, 
-	0x16, 0xdc, 0x8d, 0xa2, 0x49, 0xff, 0x4e, 0xd3, 0x69, 0xb7, 
-	0xf5, 0xec, 0x78, 0xc4, 0x3, 0x64, 0xca, 0x25, 0x8c, 0x41, 
-	0x4d, 0xd9, 0xd4, 0x3, 0x4f, 0xbf, 0x73, 0x2b, 0x32, 0x90, 
-	0x25, 0x51, 0xaa, 0xa8, 0xae, 0x69, 0x92, 0xfb, 0x56, 0xed, 
-	0xf9, 0x78, 0x52, 0x53, 0xb6, 0x85, 0xba, 0x6a, 0xad, 0x4d, 
-	0x68, 0xcd, 0x4d, 0xfd, 0xf1, 0x7d, 0xa2, 0xb5, 0x45, 0xa7, 
-	0x77, 0x73, 0x6e, 0x8, 0xe0, 0xba, 0xd1, 0xde, 0x8c, 0x96, 
-	0x41, 0x73, 0x13, 0xb2, 0x3a, 0x28, 0xe0, 0x4d, 0xd7, 0x4a, 
-	0x68, 0x13, 0x7b, 0x7f, 0x2b, 0x75, 0x6, 0x38, 0x61, 0x77, 
-	0xce, 0xc, 0x47, 0x63, 0x32, 0xe6, 0x68, 0xe, 0x35, 0x57, 
-	0x87, 0xeb, 0xdd, 0xa2, 0x7b, 0x18, 0x60, 0x3c, 0x4a, 0xc6, 
-	0x21, 0xa3, 0xa5, 0xe7, 0x38, 0x8c, 0x98, 0xd6, 00, 0xd4, 
-	0xb9, 0x71, 0xab, 0xad, 0xb6, 0x1a, 0xa5, 0x95, 0xf1, 0x4b, 
-	0xf5, 0x22, 0xcc, 0x80, 0x29, 0x53, 0xa6, 0x8c, 0x51, 0x5a, 
-	0xde, 0x79, 0xa0, 0x71, 0x2, 0xbf, 0xe3, 0xfa, 0xb9, 0x2e, 
-	0x5c, 0x17, 0xe0, 0x53, 0x8, 0xb5, 0x3a, 0x36, 0x6c, 0xba, 
-	0x11, 0x1f, 0x32, 0x7a, 0x36, 0x1e, 0x5e, 0x42, 0xf0, 0xfd, 
-	0xff, 0x57, 0x43, 0x16, 0xa9, 0x34, 0x57, 0xee, 0xd0, 0x20, 
-	0xcb, 0x42, 0x15, 0x27, 0x99, 0xa4, 0xc5, 0x9b, 0x70, 0x24, 
-	0x12, 0xa0, 0xc6, 0xf3, 0x3a, 0x2c, 0xe0, 0x76, 0x68, 0x90, 
-	0x1, 0x34, 0x80, 0x5, 0x88, 00, 0x15, 0xe0, 0x92, 0x79, 
-	0x5e, 0x2f, 0x9a, 0x93, 0xe9, 0x9b, 0xfb, 0xee, 0xbb, 0x8f, 
-	0x55, 0x74, 0x40, 0x6b, 0xef, 0xfe, 0x2b, 0xf5, 0x1b, 0x16, 
-	0x93, 0x1e, 0x84, 0x48, 0x75, 0x59, 0xa4, 0x39, 0xf8, 0x50, 
-	0xd1, 0xdc, 0x90, 0x69, 0x81, 0xc1, 0x1c, 0x3, 0xbb, 0xb8, 
-	0x1e, 0xd4, 0x21, 0x6, 0x77, 0xdc, 0xdf, 0x10, 0x2f, 0xe7, 
-	0xf4, 0x14, 0x85, 0x81, 0x6d, 0xb5, 0xfc, 0x85, 0x92, 0x5, 
-	0x2b, 0x16, 0xcb, 0x21, 0xa, 0x7, 0x90, 0x5b, 0xe, 0xf3, 
-	0xe0, 0x96, 0x4c, 0x51, 0xdf, 0x9a, 0x5d, 0x78, 0x91, 0xbf, 
-	0xda, 0xbb, 0xe9, 0x9c, 0x32, 0xf7, 00, 0x8a, 0xa0, 0xf1, 
-	0x14, 0xb2, 0xaa, 0xc9, 0xf3, 0x49, 0xf6, 0xff, 0xe1, 0x41, 
-	0xf3, 0x70, 0x1, 0x65, 0x7b, 0x1, 0xe5, 0x3b, 0x9f, 0xfe, 
-	0xf4, 0xa7, 0xd5, 0x77, 0x95, 0xef, 0xe6, 0xa2, 0x9d, 0xf6, 
-	0xd6, 0x90, 0x98, 0x3a, 0xcc, 0x9d, 0xf0, 0xac, 0x82, 0x12, 
-	0x22, 0x4c, 0x6c, 0x10, 0xd0, 0xfb, 0xd8, 0xd7, 0xb, 0xe4, 
-	0xb, 0x54, 0x26, 00, 0x86, 0x79, 0x84, 0x9e, 0x63, 0xc3, 
-	0x58, 0x98, 0x6a, 0x86, 0x76, 0x1, 0xb6, 0xea, 0x38, 0xfc, 
-	0xf3, 0x9f, 0xff, 0xfc, 0x9f, 0x24, 0x4c, 0x23, 0x34, 0x95, 
-	0x18, 0xa5, 0xbc, 0xc1, 0xa1, 0xb9, 0xa9, 0x87, 0x35, 0x34, 
-	0xa1, 0xeb, 0xe0, 0x7a, 0xb0, 0x50, 0x44, 0x7d, 0x8, 0xa5, 
-	0xa1, 0xf2, 0x9e, 0x34, 0xea, 0xac, 0x1, 0xae, 0x3, 0x4b, 
-	0x40, 0x8b, 0x72, 0x19, 0x2d, 0x32, 0xa6, 0x79, 0x8c, 0xf7, 
-	0x7f, 0xcd, 0xf1, 0x68, 0x8b, 0xb7, 0xa9, 0xd4, 0xf, 0x29, 
-	0xd6, 0x42, 0x74, 0xa8, 0x62, 0x58, 0xc4, 0x2a, 0xd6, 0x8c, 
-	0xd6, 0xd8, 0xe, 0x63, 0xcd, 0x4d, 0x5e, 0x6b, 0x4c, 00, 
-	0x6e, 0xcf, 0xe2, 0xa5, 0xe6, 0xcd, 0xab, 0x65, 0x15, 0x5d, 
-	0x27, 0xd, 0x7e, 0xa6, 0x78, 0xe7, 0x41, 0x1a, 0x6b, 0xd1, 
-	0x1a, 0x1c, 0x96, 0x86, 0x47, 0xb2, 0xa, 0x91, 0x43, 0x3c, 
-	0xc7, 0xc6, 0x22, 0x8b, 0x84, 0x30, 0x7d, 0xa0, 0x4c, 0xf4, 
-	0x6d, 0xb5, 0x22, 0xff, 0x45, 0x5e, 0x36, 0xd1, 0x54, 0x2e, 
-	0x68, 0x6e, 0x6, 0x14, 0x9b, 0xe7, 0xc4, 0x8b, 0xeb, 0x81, 
-	0xf8, 0x57, 0xaa, 0xb5, 0x91, 0x9, 0x6d, 0x6d, 0x6e, 0x95, 
-	0xb5, 0x72, 0x99, 0x6, 0xf8, 0xc7, 0x55, 0xe6, 0xbb, 0x39, 
-	0xcf, 0x96, 0x53, 0xe4, 0x11, 0x6f, 0x19, 0x45, 0x8b, 0x3, 
-	0x6e, 0xbc, 0x7, 0x2a, 0x45, 0xb3, 0x4e, 0x72, 0x57, 0x15, 
-	0xd8, 0x7b, 0x7c, 0xf6, 0x1c, 0x1, 0xd9, 0x80, 0x26, 0x74, 
-	0xdc, 0xe5, 0x3a, 0x74, 0xe1, 0x54, 0x8c, 0xa, 0xc2, 0x68, 
-	0x18, 0x8e, 0x19, 0xe, 0x92, 0x3f, 0xd0, 0x63, 0x8f, 0x5, 
-	0x9a, 0x3f, 0xcd, 0x13, 00, 0x77, 0xd0, 0xbb, 0xce, 0x55, 
-	0x99, 0xe7, 0xba, 0x3f, 0x38, 0x18, 0x4b, 0x3b, 0xe9, 0xf8, 
-	0xb8, 0xbd, 00, 0x87, 0x2d, 0xa5, 0xd2, 0x8c, 0xf, 0xa, 
-	0xd8, 0x8f, 0x2a, 0xb3, 0x41, 0x6d, 0x73, 0xbc, 0x78, 0xb4, 
-	0xf4, 0xfc, 0x86, 0xfa, 0x52, 0xf7, 0x20, 0xc, 0x32, 0xbf, 
-	0x87, 0x8, 0xd8, 0x17, 0xaa, 0x9e, 0x23, 0x5, 0xec, 0x91, 
-	0xa1, 0xd0, 0xdc, 0x1f, 0x8f, 0x6b, 0xee, 0x5c, 0xca, 0x47, 
-	00, 0x70, 0xa4, 0xb9, 0xe3, 0x2d, 0x94, 0x84, 0x5c, 0xb7, 
-	0x90, 00, 0x76, 0x81, 0x3e, 0xcd, 0x82, 0x1b, 0x1b, 0x70, 
-	0x78, 0xc, 0x84, 0x99, 0xae, 0xc7, 0x3e, 0x29, 0xd, 0x7c, 
-	0x41, 0x33, 0xe4, 0x8a, 0xfa, 0x5f, 0x17, 0x30, 0xd0, 0x71, 
-	0x5a, 0x89, 0x40, 0xcd, 0xc2, 0x11, 0x5a, 0x3a, 0x7c, 0xec, 
-	0x41, 0x3c, 0x8, 0xf3, 0x6a, 0x40, 0x2, 0x68, 00, 0xb2, 
-	0x41, 0xee, 0xdf, 0xc5, 0xa0, 0xe6, 0xba, 0xb5, 0x75, 0xcc, 
-	0x57, 0xf8, 0xb, 0x2f, 0x31, 0xd1, 0x5, 0xf0, 0x19, 0x39, 
-	0x13, 0x1d, 0x80, 0xc7, 0xce, 00, 0x47, 0x6, 0x71, 0xc, 
-	0xe2, 0xf4, 0x2f, 0x72, 0x4b, 0x68, 0x39, 0x6d, 0x97, 0x35, 
-	0x35, 0x5f, 0xf4, 0x59, 0x4d, 0x3f, 0x66, 0xc7, 0x1d, 0x77, 
-	0xac, 0x63, 0xa0, 0xa5, 0x6c, 0xf7, 0x19, 0xa1, 0x35, 0x36, 
-	0x65, 0xbb, 0x7f, 0x45, 0xa3, 0x22, 0xa7, 0x33, 0xd7, 0xdb, 
-	0xb4, 0xee, 0xf2, 0x94, 0x80, 0xfd, 0x8c, 0x6e, 0xb0, 0x86, 
-	0x76, 0x48, 0xbd, 0x3c, 0x20, 0x31, 0xa5, 0x75, 0xdd, 0x50, 
-	0x90, 0x31, 0xc6, 0x42, 0x7d, 0x55, 0xb6, 0xeb, 0xad, 0xcb, 
-	0x88, 0x7e, 0xf7, 0x60, 0xef, 0x16, 0xdc, 0x22, 0x66, 0x20, 
-	0x13, 0x52, 0x20, 0xce, 0x5, 0xc7, 0x85, 0x67, 0xaf, 0x64, 
-	0x2b, 0x17, 0xa7, 0x53, 0x61, 00, 0xc4, 0x88, 0x14, 0xc0, 
-	0x4d, 0xa8, 0x37, 0xb0, 0x2e, 0x92, 0x39, 0xb6, 0xa5, 0xcc, 
-	0x95, 0x6, 0x2d, 0x52, 0x29, 0xa9, 0x32, 0x47, 0x75, 0x68, 
-	0xf, 0x9d, 0x4d, 0x88, 0x87, 0xf1, 0x38, 0xb4, 0xa2, 0xe6, 
-	0x35, 0x9c, 0x6, 0x33, 0x5f, 0xab, 0xf3, 0xb7, 0x28, 0xc9, 
-	0xc0, 0x8e, 0x1, 0xcd, 0x8, 0x69, 0x8d, 0x6d, 0xa6, 0x9a, 
-	0xa1, 0x1, 0xd8, 0xd2, 0xa8, 0x43, 0xbe, 0xf0, 0x85, 0x2f, 
-	0x9c, 0xaf, 0xd1, 0x7c, 0x9c, 0xb4, 0xea, 0x70, 0x68, 0xc7, 
-	0x2e, 0xcb, 0x92, 0x2c, 0x90, 0x8b, 0xd3, 0x5d, 0x17, 0xb, 
-	0x83, 0x43, 0x84, 0x5, 0x90, 0x5b, 0x68, 0x8, 0x73, 0x9a, 
-	0x3d, 0x80, 0x9c, 0x6b, 0xd2, 0x42, 0x1d, 0x9a, 0xaa, 0xa4, 
-	0xb4, 0x12, 0x1f, 0xce, 0x89, 0xab, 0x66, 0xda, 0x12, 0xd7, 
-	0xe3, 0xa3, 0x88, 0xb3, 0x48, 0xc6, 0x4a, 0xb3, 0x6, 0xab, 
-	0xf0, 0x95, 0x18, 0xf1, 0x9f, 0xf, 0x15, 00, 0xe4, 0x2, 
-	0x50, 0xd3, 0x6e, 0x9b, 0xbf, 0x80, 0xd9, 0x71, 0xd2, 0xf1, 
-	0xa4, 0x79, 0x30, 0x84, 0x77, 0xc4, 0x8b, 0x81, 0xed, 0xf6, 
-	0xd5, 00, 0x70, 0x64, 0x10, 0xd9, 0xa5, 0xbf, 0x91, 0x51, 
-	0xf7, 0x3b, 0x53, 0xa6, 0xf9, 0x2a, 0x8b, 0xf, 0x42, 0x7e, 
-	0xc1, 0x27, 0xd3, 0x1a, 0xdc, 0xd4, 0x81, 0xba, 0x50, 0xf, 
-	0xd7, 0x45, 0xf7, 0x56, 0xe4, 0x30, 0xc7, 0x17, 0x2d, 0x5a, 
-	0xb4, 0x56, 0x83, 0xdd, 0x8d, 0xba, 0x1, 0x79, 0xb4, 0x4c, 
-	0x2, 0x6a, 0x3, 0xdb, 0x5a, 0xda, 0xf5, 0x42, 0xa0, 0x89, 
-	0xc7, 0xce, 0x75, 0x75, 0x3a, 0x61, 0x47, 0xe, 0x9f, 0x82, 
-	0x41, 0x69, 0x90, 0x97, 0x35, 0xcb, 0x75, 0xa3, 0xc1, 0x4c, 
-	0x61, 0x30, 0xe3, 0xb3, 0xf2, 0x1b, 0xe7, 0xe2, 0xa, 0x42, 
-	0x5a, 0xc, 0x64, 0x57, 0xe0, 0x55, 0x5d, 0xbb, 0x54, 0x1e, 
-	0x6d, 0x8, 0x60, 00, 0x35, 0x26, 0x51, 0x7f, 0x79, 0xcc, 
-	0xa1, 0x61, 0xf2, 0x43, 0x65, 0x92, 0x62, 0x9e, 0x7f, 0xfb, 
-	0x33, 0x9f, 0xf9, 0x4c, 0x3, 0x1d, 0x5b, 0xa9, 0xa3, 0x1d, 
-	0xf6, 0x98, 0xc8, 0x68, 0xb, 0x3d, 0x66, 0x4b, 0x74, 0xc0, 
-	0x2, 0xa6, 0xf8, 0x3c, 0x9, 0x19, 0x8b, 0x67, 0xcc, 0x6b, 
-	00, 0x32, 0xc0, 0x26, 0xc4, 0xf4, 0x31, 0xa8, 0xcd, 0x64, 
-	0x6, 0x1d, 0x1c, 0xf5, 0xe, 0xc0, 0x96, 0x59, 0x36, 0x48, 
-	0x1f, 0xb1, 0xfb, 0xa3, 0x4c, 0xb5, 0x4d, 0x65, 0xa6, 0x85, 
-	0x87, 0xa2, 0x21, 0x47, 0x89, 0x3f, 0xae, 0x3, 0xa1, 0x17, 
-	0xf4, 0x72, 0xcf, 0xba, 0x43, 0x9d, 0x30, 0xc7, 0x8a, 0xa7, 
-	0xd, 00, 0x9a, 0x74, 0xb4, 0xb7, 0x4d, 0x78, 0x42, 0x7b, 
-	0x68, 0x69, 0x1a, 0xd8, 0x21, 0xde, 0x84, 0xf9, 0x38, 0x9a, 
-	0x1c, 0xf3, 0x9d, 0xf, 0x24, 0x20, 0x58, 0x7f, 0x2d, 0x8e, 
-	0x7a, 0xf2, 0x2c, 0x5f, 0x20, 0xe, 0x66, 0x37, 0xed, 0x52, 
-	0x3c, 0x68, 0x69, 0x6, 0x3f, 0x3, 0xc3, 0xa0, 0x35, 0x70, 
-	0xad, 0x9d, 0x9, 0xe3, 0x34, 0xe7, 0x8f, 0x81, 0x4d, 0x7b, 
-	0x1, 0x15, 0xf4, 0xba, 0x3, 0x15, 0x3c, 0xae, 0xd0, 0x44, 
-	0x47, 0x8e, 0x11, 0x34, 0x1e, 0x59, 0x20, 0x8b, 0xb1, 0x99, 
-	0x1e, 0x4c, 0x75, 0x29, 0x9a, 0x9d, 0xc4, 0xf3, 0xcf, 0xe9, 
-	0x3d, 0x81, 0x7a, 0x78, 0x6e, 0x60, 0x57, 0x52, 0xf, 0xd1, 
-	0x2b, 0x70, 0xf4, 0x69, 0xce, 0x1c, 0xff, 0x9f, 0x9c, 0x39, 
-	0x8e, 0xc, 0xda, 0x24, 0xf7, 0xbc, 0x1b, 0x59, 0x44, 0xe, 
-	0xf, 0x95, 0x5f, 0x5f, 0xde, 0x18, 0x52, 0x34, 0xaf, 0xb9, 
-	0x49, 0xb3, 0x23, 0xfe, 0xbc, 0xfc, 0x25, 0xf2, 0xc4, 0x6d, 
-	0x71, 0xaa, 0x4b, 0xd4, 0x29, 0x45, 0xae, 0x24, 0xb8, 0x73, 
-	0x23, 0x2, 0xc0, 0x85, 0x21, 0x48, 0x15, 0xe1, 0xcf, 0xb4, 
-	0x6a, 0xbc, 0xb5, 0x56, 0x7c, 0xc7, 0x2a, 0x1e, 0x9c, 0xe8, 
-	0xc5, 0xe0, 0xa6, 0x23, 0x32, 0x5a, 0xee, 0xbf, 0x5f, 0x1d, 
-	0xff, 0x17, 0x65, 0xb8, 0x47, 0xde, 0xf7, 0x9a, 0xa9, 0x9e, 
-	0xf3, 0x4, 0x80, 0xeb, 0x1b, 0x59, 0xff, 0x20, 0xb3, 0x77, 
-	0xfb, 0x6a, 0xcc, 0x73, 0xa, 0xa6, 0x1d, 0xf6, 0x5a, 0x85, 
-	0x4e, 0xae, 0xb9, 0xe6, 0x9a, 0x56, 0x8d, 0x92, 0xf3, 0xf5, 
-	0x1c, 0xf1, 0x56, 0x5d, 0x86, 0x61, 0x80, 0x1a, 0x6, 0x2, 
-	0x68, 0x3, 0xdd, 0xa3, 0x26, 0x23, 0x38, 0x66, 0x1b, 0x56, 
-	0x5, 0x2e, 00, 0x5b, 0xe6, 0x58, 0x7f, 0x3d, 0x47, 0x3d, 
-	0x47, 0xed, 0xdb, 0x46, 0xc0, 0x1e, 0x82, 0x50, 0xf5, 0xe4, 
-	0x5c, 0x7, 0x87, 0x1e, 0x6c, 0x8, 0x1, 0x3a, 0x82, 0x47, 
-	0x68, 0xf0, 0xf2, 0xdb, 00, 0x77, 0xc8, 0x35, 0xe2, 0xbe, 
-	0xe6, 0xfb, 0x28, 0x5b, 0xe6, 0x7a, 0x7, 0xc7, 0x39, 0xcb, 
-	0x8c, 0x5, 0xe0, 0x19, 0x9, 0x5e, 0x9a, 0x37, 0xec, 0x7c, 
-	0x10, 0x41, 0x4f, 0xf5, 0xeb, 0xab, 0xeb, 0xb4, 0x8f, 0xb7, 
-	0x98, 0x34, 0xdd, 0xc1, 0xec, 0xee, 0x50, 0xff, 0xa6, 0xa4, 
-	0x99, 0x99, 0x52, 0x70, 0xc4, 0x72, 0x9a, 0xf6, 0x2, 0x4, 
-	0x3c, 0xa0, 0x5, 0xac, 0x71, 0x58, 0xc, 0xea, 0xf8, 0x9a, 
-	0xf3, 0x2, 0x20, 0x3c, 0x34, 0xc, 0x66, 0x87, 0x3d, 0xf5, 
-	0x45, 0x19, 0x80, 0x1b, 0x38, 0x36, 0xd1, 0x11, 0x7e, 0xfa, 
-	0x9a, 0xb5, 0x20, 0xaf, 0x7, 0xf1, 0xcc, 0x1c, 0xf, 0xb8, 
-	0x43, 0x28, 0xcb, 0x69, 0x57, 0xd, 0xa8, 0x47, 0xef, 0xbb, 
-	0xef, 0xbe, 0x75, 0x1e, 0x54, 0x5d, 0xf, 0xc2, 0x4a, 0x9d, 
-	0xde, 0x2d, 0x6f, 0xd3, 0xd4, 0xeb, 0x49, 0x59, 0x3, 0x57, 
-	0xea, 0x1e, 0xe6, 0xd7, 0x78, 0xc0, 0x6d, 0x60, 0x23, 0x9b, 
-	0xc8, 0xe2, 0x76, 0x49, 0x43, 0x7a, 0xf7, 0xa6, 0xd, 0x9a, 
-	0xc6, 0x2b, 0x5e, 0xd6, 0x61, 0xb4, 0xb6, 0xbf, 0xdf, 0xbe, 
-	0xb2, 0xf5, 0x8d, 0xb5, 0x8b, 0x95, 0xe9, 0x97, 0xf2, 0xc8, 
-	0x2f, 0xe0, 0x2e, 0xb, 0x70, 0x1a, 0x5b, 0xca, 0x21, 0xd9, 
-	0xb4, 0xc4, 0xe0, 0x24, 0x5f, 0x5a, 0x8d, 0x9e, 0x7c, 0xee, 
-	0xb9, 0xe7, 0x4e, 0x2d, 0x75, 0x3, 0x69, 0x98, 0x65, 0x32, 
-	0xb7, 0x87, 0xfc, 0xe1, 0xf, 0x7f, 0x40, 0x5b, 0xbe, 0x20, 
-	0xbf, 0x94, 0x74, 0x39, 0x2a, 0x80, 0xf9, 0x81, 0x29, 0xcc, 
-	0x4, 0x95, 0xeb, 0xd, 0x39, 0xf3, 0x7c, 0x8b, 0x5a, 0xcc, 
-	0x73, 0xdd, 0x1f, 0x34, 0xe0, 0x75, 0xd7, 0x5d, 0xc7, 0x11, 
-	0x35, 0xf, 0x9, 0xd8, 0xb7, 0x2b, 0xc9, 0xc0, 0xb6, 0x29, 
-	0x4e, 0x8, 0x13, 0x49, 0xc7, 0xc, 0x62, 0x94, 0xb4, 0x19, 
-	0x44, 0xdb, 0x68, 0x67, 0x83, 0xc0, 0xd2, 0xa4, 0x8f, 0xf2, 
-	0xfd, 0x87, 0x4c, 0xf1, 0x6d, 0x5, 0xec, 0xc1, 0x3d, 0x9, 
-	0x93, 0xee, 0x9, 0x8e, 0x7c, 0x78, 0x83, 0xdb, 0xf7, 0xc5, 
-	0xc2, 0x10, 0xb, 0x2d, 0x42, 0x88, 0x30, 0x3, 0x68, 0x4, 
-	0xdc, 0x80, 0x46, 0xf8, 0x49, 0x23, 0x4, 0xdc, 0x80, 0x1d, 
-	0x8b, 0x44, 0x3, 0x57, 0x5a, 0x9b, 0x3d, 0x82, 0x65, 0x20, 
-	0xbe, 0xea, 0x43, 0x7b, 0x43, 0x3a, 0xbc, 0xca, 0x8e, 0x49, 
-	0xab, 0x35, 0x81, 0x70, 0x36, 0x39, 0x73, 0x58, 0x2d, 0xd2, 
-	0x85, 0xb9, 0xac, 0xeb, 0x56, 0x6b, 0x88, 0x39, 0xcd, 0x7c, 
-	0x99, 0x90, 0x5d, 0x76, 0x9a, 0x2e, 0xe4, 0x2d, 0xd, 0x2d, 
-	0x8a, 0x65, 0x4, 0xf0, 0x34, 0x96, 0x92, 0x5c, 0xd8, 0x78, 
-	0x42, 0x3b, 0x68, 0xa3, 0x1, 0x6b, 0xb0, 0xfa, 0x37, 0xa1, 
-	0x35, 0xb5, 0xaf, 0x11, 0xe2, 0x1, 0x32, 0xa1, 0x79, 0x4, 
-	0xdf, 0x88, 0x9b, 0xaf, 0x95, 0x82, 0x9, 0x1a, 0xd1, 0x1c, 
-	0x3c, 0x93, 0x7b, 0x4c, 0x6, 0x98, 0x3d, 0x42, 0x1b, 0xe0, 
-	00, 0x2, 0x19, 0x30, 0x20, 0x8, 0xed, 0x42, 0x7e, 0x59, 
-	0x20, 0xf7, 0xa9, 0xe, 0x69, 0xbd, 0x17, 0xfe, 0xe9, 0x83, 
-	0xe, 0x3a, 0xa8, 0x8e, 0xc1, 0x94, 0xfa, 0x54, 0x5a, 0x17, 
-	0x88, 0xe5, 0xcc, 0xf1, 0x35, 0x32, 0xc7, 0x6f, 0xd2, 0x4f, 
-	0x98, 0x65, 0x8f, 0xc, 0x2, 0x68, 0xea, 0x40, 0x5d, 0x58, 
-	0x64, 0xde, 0xb9, 0xff, 0xe4, 0x7e, 0x1b, 0x8d, 0x3c, 0x78, 
-	0xf4, 0xeb, 0xfd, 0x26, 0xf5, 0x5f, 0xae, 0xef, 0x88, 0x48, 
-	0xe1, 0xe6, 0xeb, 0xad, 0xcb, 0x6a, 0x84, 0x44, 0x2c, 0x49, 
-	0xa7, 0x32, 0xaf, 0xfc, 0xcb, 0x8b, 0x53, 0x5, 0xee, 0xb7, 
-	0x94, 0x4, 0x1e, 0x69, 0x1b, 0x34, 0x70, 0x6e, 0x47, 0x81, 
-	0xf6, 0xee, 0x2, 0x6e, 0x35, 0x84, 0x9b, 0xf0, 0x31, 0xb0, 
-	0x1, 0xa4, 0x9, 0x2a, 0x5a, 0xda, 0x9, 0xfc, 0xc9, 0x8c, 
-	0x19, 0x33, 0x26, 0x49, 0x20, 0xb7, 0xd6, 0xf7, 0x95, 0xf, 
-	0x54, 0x2e, 0xcc, 0x7, 0x17, 0x4c, 0x48, 0xa3, 00, 0x38, 
-	0x60, 0x6b, 0x90, 0x10, 0xbf, 0xab, 0x45, 0x97, 0x73, 0x75, 
-	0x58, 0xfd, 0x37, 0x8f, 0x38, 0xe2, 0x88, 0xb2, 0x7, 0x9, 
-	0x2a, 0x6f, 0x17, 0x7, 00, 0xd0, 0xd8, 0xd2, 0x1e, 0xf, 
-	0x6b, 0x33, 0xc4, 0x6d, 0xca, 00, 0x3, 0xd, 0x66, 0x6b, 
-	0x6d, 0xca, 0xb1, 0xa7, 0x6c, 0x3a, 0x99, 0x7a, 0x78, 0xe0, 
-	0x6a, 0x90, 0xe0, 0x35, 0xcb, 0x14, 0xff, 0x8d, 0x46, 0xe9, 
-	0x5d, 0x5, 0xec, 0x81, 0xd9, 0xe6, 0x2b, 0x47, 0x15, 0x2e, 
-	0xbe, 0x7, 0xe1, 0x4, 0xec, 0xa4, 0xe1, 0x2d, 0xb0, 0x16, 
-	0x64, 0x40, 0x8c, 0x30, 0x22, 0xf4, 0x80, 0xdb, 0xc0, 0x26, 
-	0x1d, 0x6f, 0xcd, 0xed, 0x38, 0x21, 0x40, 0x27, 0xaf, 0x16, 
-	0x9, 0xd3, 0x80, 0xd, 0xfa, 0xd0, 0x10, 0xc0, 0x79, 0x9e, 
-	0xdf, 0xce, 0xb, 0x33, 0xa2, 0x13, 0x3e, 0xbb, 0x44, 0xf9, 
-	0x2, 0x7b, 0x6, 0xba, 0xe4, 0x21, 0x3d, 0x57, 0x5e, 0xd8, 
-	0x96, 0x9b, 0xa3, 0xc5, 0x1e, 0x6e, 0x6, 0x91, 0x8c, 0x7, 
-	0x18, 0x81, 0x39, 0x7c, 0x70, 0x11, 0x2d, 0xac, 0x69, 0x43, 
-	0x6, 00, 0xb, 0xc8, 0xfa, 0x38, 0xc1, 0x7, 0x7c, 0xc2, 
-	0xc7, 0x6d, 0x9, 0x80, 0x66, 0x30, 0xa1, 0x3d, 0xf6, 0xd0, 
-	0x27, 0x6e, 0x40, 0xe7, 0xca, 0xcb, 0xb7, 0x33, 0x4e, 0x77, 
-	0x5e, 0xea, 0x89, 0xe7, 0x3e, 0x42, 0xf8, 0x64, 0x7e, 0x99, 
-	0x77, 0x55, 0x74, 0x41, 0x28, 0x2b, 0x7, 0x70, 0x9e, 0x83, 
-	0xa7, 0x72, 00, 0xf7, 00, 0xe, 0x29, 0x6, 0x75, 0x84, 
-	0x9f, 0x10, 0x87, 0x1c, 0xe2, 0x90, 0x75, 0xd2, 0x91, 0x8b, 
-	0x10, 0xd7, 0xea, 0xfe, 0xbd, 0xaa, 0x53, 0x5a, 0x3b, 0xe8, 
-	0x8e, 0x90, 0x3c, 0x17, 0x7c, 0xa8, 0x51, 0x79, 0xba, 0x75, 
-	0x58, 0x92, 0xd2, 0xda, 0xad, 0x7a, 0xf1, 0xe4, 0x1a, 0xf1, 
-	0xd, 0x53, 0x1c, 0xf9, 0x43, 0x36, 0x9, 0x1, 0xb6, 0x2d, 
-	0x47, 0xea, 0xb1, 0x4f, 0xe3, 0x98, 0xc6, 0xb1, 0x3, 0x37, 
-	0x1f, 0xd8, 0x3e, 0x70, 0x62, 0xff, 0x95, 0x19, 0x6d, 0x9b, 
-	0x48, 0xb4, 0x6b, 0x44, 0xb5, 0xa1, 0x1e, 0x9d, 0x4e, 0x29, 
-	0x4a, 0xd0, 0x63, 0x9a, 0x30, 0x55, 0xa6, 0x4d, 0xc6, 0x2d, 
-	0xf5, 0x36, 0xa0, 0xdb, 0xc5, 0x37, 0x2c, 0x71, 0xff, 0xce, 
-	0x67, 0xea, 0x24, 0x94, 0x6d, 0x20, 0xc4, 0x63, 0x70, 0x63, 
-	0x56, 0xb3, 0x4f, 0x9c, 0xb4, 0x6e, 0x9d, 0xe6, 0x2b, 0x1c, 
-	0x34, 0xb8, 0xbb, 0xfc, 0x6b, 0x1a, 0xe9, 0x77, 0x54, 0xe6, 
-	0xf9, 0xf2, 0x30, 0xe, 0x4f, 0x83, 0x60, 0x2a, 0x66, 0x3e, 
-	0x15, 0x6c, 0xd0, 0x28, 0xf7, 0x88, 0xcc, 0xcf, 0x1b, 0xf5, 
-	0xfe, 0xed, 0x1, 0x7a, 0x8d, 0xb2, 0x91, 0xce, 0xee, 0xc9, 
-	0x31, 0x67, 0xbd, 0xfa, 0xea, 0xab, 0x8b, 0x81, 0x6d, 0x73, 
-	0xc7, 0xc0, 0x6, 0xe8, 0x30, 0xd5, 0x23, 0xa5, 0x47, 0x6c, 
-	0xb7, 0xad, 0x41, 0x83, 0xd1, 0x4, 0xad, 0x8a, 0x7f, 0x5f, 
-	0x73, 0xed, 0xe9, 0xdb, 0x6c, 0xb3, 0xcd, 0x80, 0x6a, 0x46, 
-	0xe7, 0xe2, 0x3a, 0x5a, 0x20, 0xe1, 0x2d, 0x9e, 0xdf, 0xd0, 
-	0x3, 0x2c, 0x6, 0xb8, 0x85, 0xd9, 00, 0x26, 0x4, 0x38, 
-	0x6, 0xb8, 0x7f, 0x93, 0xe6, 0x3c, 0x80, 0x91, 0xdf, 0x6, 
-	0x38, 0xa1, 0xbd, 0xf8, 0x90, 0xd2, 0xe0, 0x56, 0xc7, 0x6f, 
-	0x97, 0x9b, 0x3, 0x4b, 00, 0x21, 0x75, 0xa4, 0xec, 0x9c, 
-	0xe7, 0xfb, 0x62, 0x80, 0x1a, 0x10, 0x87, 0xef, 0x4a, 0xeb, 
-	0x9e, 0x10, 0x72, 0x3f, 0x20, 0x27, 0xc4, 0x21, 0x24, 0xdc, 
-	0x3, 0x2d, 0x42, 0x9e, 0x45, 0xbb, 0xee, 0x71, 0x8, 0x68, 
-	0xc9, 0x63, 0xc0, 0x3a, 0x2c, 0x5, 0x66, 0x5f, 0xe3, 0x7e, 
-	0x7b, 0xee, 0x35, 0x9f, 0xe2, 0x30, 0x54, 0xa2, 0x86, 0x3f, 
-	0x94, 0x61, 0xd, 0xfe, 0xc3, 0x1f, 0xfe, 0x30, 0x25, 0xb, 
-	0xf2, 0x5f, 0xb5, 0x79, 0x86, 0xfe, 0xc6, 0x23, 0x77, 0x1e, 
-	0xdc, 0xd, 0x70, 0x83, 0x23, 0xf, 0x8, 0xe5, 0x9, 0x20, 
-	0xd7, 0xda, 0xcd, 0x5d, 0x8a, 0xd7, 0x6b, 0x2d, 0xe7, 0xd0, 
-	0x83, 0xf, 0x3e, 0xb8, 0xbe, 0x92, 0x5, 0x4e, 0xf8, 0x87, 
-	0x25, 0xa9, 0x1, 0xf8, 0x5e, 0xf9, 0xa7, 0x75, 0x3f, 0xf2, 
-	0x17, 0x5b, 0x8e, 0x68, 0x6e, 0xea, 0x40, 0xf9, 0x5b, 0xa5, 
-	0x9b, 0xd2, 0x13, 0xfb, 0x4f, 0x1a, 0x30, 0x7e, 0xf8, 0x2e, 
-	0x23, 0x9e, 0x48, 0x65, 0x52, 0x3a, 0x6e, 0x27, 0x49, 0x67, 
-	0x3a, 0x84, 0xb1, 0x18, 0xdc, 00, 0x1b, 0xb8, 0x27, 0x29, 
-	0x2d, 0xa0, 0x5, 0x4c, 0x6, 0xdc, 0xe8, 0x7e, 0x5c, 0x5c, 
-	0x7f, 0xda, 0x88, 0xcb, 0xb7, 0xa5, 0x1c, 0x92, 0xc, 00, 
-	0x40, 0x88, 0xd6, 0x6, 0xdc, 0xd, 0x12, 0x86, 0x1e, 0xc1, 
-	0x8d, 0xb9, 0x78, 0xe8, 0xa1, 0x87, 0x36, 0x4b, 0x23, 0xef, 
-	0x29, 0xe6, 0x2, 0xb4, 0x45, 0xf2, 0xef, 0xc8, 0xc3, 0x34, 
-	0xa, 0xa6, 0x71, 0x30, 0x9a, 0xb2, 0x69, 0x7c, 0x83, 0x1e, 
-	0x43, 0x5c, 0x2f, 0xed, 0x33, 0x51, 0x1a, 0x7c, 0x73, 0xcd, 
-	0xeb, 0x29, 0xaf, 0xac, 0x33, 0xb0, 0x35, 0x28, 0x3c, 0xac, 
-	0xfb, 0x6e, 0x57, 0x46, 0xcf, 0xab, 0x19, 0x25, 0x6d, 0x8e, 
-	0x93, 0x86, 0x87, 0x99, 0xee, 0x54, 0xca, 0xa6, 0x5d, 0x94, 
-	0x5b, 0xcf, 0x1b, 0x5d, 0x1a, 0x95, 0x6f, 0x99, 0x34, 0x69, 
-	0xd2, 0x2a, 0x2d, 0xec, 0xd, 0x40, 0xe0, 0xfa, 0xc2, 0x21, 
-	0xa4, 0x78, 0x83, 0x2d, 0xfe, 0xd, 0x50, 0x62, 0xc1, 0x6, 
-	0xc0, 0x8, 0x24, 0x21, 0x80, 0xb0, 0x26, 0x37, 0xb0, 0xe3, 
-	0x30, 0x6, 0x20, 0xe9, 0xfc, 0xb6, 0x67, 00, 0xc1, 0x93, 
-	0x8e, 0x23, 0xce, 0x35, 0xea, 0x40, 0x3c, 0xe7, 0x68, 0xbb, 
-	0x5, 0xc0, 0x69, 0xa1, 0xae, 0xd4, 0x91, 0x1, 0x86, 0xfa, 
-	0x11, 0xa7, 0x8e, 0x84, 0x71, 0x7d, 0x89, 0x3, 0xc6, 0xd8, 
-	0x93, 0xcf, 0xa0, 0xa5, 0xfe, 0xfc, 0xe6, 0x7a, 0x1c, 0x77, 
-	0x7e, 0xb7, 0xdb, 0x21, 0xf4, 0x5c, 0x9e, 0x79, 0x44, 0xd8, 
-	0x5b, 0x67, 0x80, 0xab, 0xfd, 0x87, 0x4e, 0x9b, 0x36, 0x6d, 
-	0x73, 0x81, 0xed, 0x8b, 0xb9, 0x76, 0x5b, 0xe8, 0x91, 0x3f, 
-	0x46, 0x31, 0x98, 0x65, 0x99, 0x54, 0x34, 0x38, 0xd2, 0x2d, 
-	0x27, 0x3c, 0x1, 0xb8, 0x43, 0xf5, 0xad, 0x13, 0xc0, 0x67, 
-	00, 0xf0, 0x9e, 0x76, 0x16, 0xea, 0x95, 0xd5, 0x56, 0xad, 
-	0x47, 0x2c, 0x94, 0xe5, 0xca, 0xc0, 0x60, 0x8d, 0x8d, 0x8c, 
-	0xe3, 0xf9, 0x6d, 0x73, 0x9c, 0x5, 0xbd, 0x4f, 0xf4, 0x9f, 
-	0xdc, 0x7f, 0xa3, 0x61, 0x3b, 0xc, 0x7d, 0xad, 0xa1, 0x51, 
-	0xd6, 0x5e, 0x5b, 0xa6, 0x41, 0xf, 0xba, 0x4, 0x6e, 0x1, 
-	0xb8, 0x18, 0xdc, 0xe9, 0x94, 0xb4, 0x76, 0xa8, 0x2b, 0x42, 
-	0x8a, 0x7, 0x8f, 0xd4, 0x13, 0xef, 0x36, 0x38, 0x54, 0x52, 
-	0xd6, 0x95, 0x3, 0x37, 0x20, 0xc6, 0x1b, 0xdc, 0x2c, 0x40, 
-	0xb0, 0x1f, 0xb7, 0x22, 0xee, 0x6f, 0xb2, 0xc9, 0x26, 0x7c, 
-	0x3a, 0x66, 0x82, 0x1a, 0xb9, 0xad, 0xcc, 0x73, 0xe6, 0x8, 
-	0x97, 0xcb, 0xc3, 0x4c, 0x7b, 0x1a, 0xe9, 0x32, 0x82, 0xc9, 
-	0xaf, 0x1d, 0x4c, 0xe7, 0x4a, 0x28, 0x4e, 0xd0, 0x8b, 0x1f, 
-	0x23, 0x65, 0x1e, 0x97, 0x44, 0x5a, 0x9, 0x60, 0x3, 0x66, 
-	0x6b, 0x6c, 0xc7, 0x1, 0x35, 0xcc, 0xf4, 0xfc, 0x86, 0xce, 
-	0xb4, 0xa3, 0xfe, 0xd, 0x2, 0xf3, 0x76, 0x1a, 0x89, 0xff, 
-	0x28, 0xb3, 0xf4, 0x2d, 0xad, 0x64, 0x8e, 0x67, 0x53, 0x89, 
-	0x56, 0x4a, 0xa9, 0x4f, 0x9f, 0xb9, 0x58, 0x50, 0x11, 0x68, 
-	0x80, 0x46, 0x1a, 0x61, 0xc, 0x1a, 0x84, 0x1f, 0x20, 0x2, 
-	0x4c, 0x40, 0x61, 0xe0, 0x12, 0x3a, 0xe, 0xe8, 0x1d, 0x77, 
-	0xe8, 0x7b, 0xc, 0x6c, 0x7e, 0x3b, 0x6e, 0x50, 0x13, 0x3a, 
-	0x5e, 0xaa, 0x61, 0x6, 0x15, 0xd7, 0xa8, 0x23, 0xbf, 0xd, 
-	0xb8, 0xb8, 0x8e, 0x5c, 0xb3, 0x8f, 0xc1, 0x4a, 0x9c, 0x74, 
-	0xa7, 0x39, 0x8c, 0xf3, 0x3a, 0x4e, 0x68, 0xda, 0xc4, 0x71, 
-	0xfe, 0x1d, 0xf3, 0x2a, 0x5c, 0xe8, 0xe5, 0x1f, 0x6d, 0xf7, 
-	0xed, 0x10, 0xcf, 0xea, 0x44, 0x77, 0x82, 0x1e, 0x67, 0x1e, 
-	0xa7, 0xb9, 0xef, 0x99, 0x39, 0x92, 0x6, 0x38, 0x3f, 0xd, 
-	0xf0, 0x62, 0x90, 0x70, 0xd, 0x39, 0x9, 0x79, 0xb5, 0x7b, 
-	0x6d, 0x96, 0xe8, 0xa4, 0x75, 0xf0, 0xc3, 0x81, 0xda, 0xad, 
-	0x18, 0x3e, 0xe0, 0x48, 0x86, 0x62, 0x27, 0xb9, 0x6d, 0xd7, 
-	0x7c, 0xfd, 0x3d, 0x85, 0x57, 0xe9, 0x1a, 0x40, 0xb6, 0x82, 
-	0x41, 0x16, 0x6d, 0x3d, 0x7a, 0x60, 0xd9, 0xbb, 0x79, 0x6c, 
-	0xe3, 0xf8, 0x81, 0x1b, 0xd, 0xcc, 0xc, 0xde, 0x78, 0xe0, 
-	0xf2, 0x4c, 0x7b, 0x46, 0xa7, 0x5f, 0x66, 00, 0x76, 0x9d, 
-	0xec, 0xea, 0x54, 00, 0xb8, 0x6e, 0x42, 0x5c, 0x54, 0x13, 
-	0x75, 0x62, 0x30, 0xc8, 0xdb, 0x1, 0xbf, 0x92, 0x61, 0x1e, 
-	0xb8, 0xa5, 0xfe, 00, 0x9a, 0xdf, 0x84, 0x5d, 0xb0, 0x59, 
-	0xa, 0xdc, 0x64, 0xc2, 0xc7, 0x84, 00, 0x20, 0x44, 0x2a, 
-	0x6, 0x80, 0xde, 0x7b, 0xd6, 0xa7, 0x66, 0x9f, 0xdf, 0x59, 
-	0xfe, 0xd, 0xad, 0xb0, 0xbe, 0xa6, 0x7b, 0xef, 0x97, 0x87, 
-	0x61, 0x54, 0xa, 0xf, 0xc0, 0xa1, 0x9, 0x13, 0xea, 0xd5, 
-	0x19, 0xf5, 0x32, 0xe5, 0xff, 0x4d, 0x1d, 0x7e, 0x82, 0x16, 
-	0x8d, 0xfa, 0x15, 0x3f, 0x3d, 0xf5, 0x5d, 0xe8, 00, 00, 
-	0x20, 00, 0x49, 0x44, 0x41, 0x54, 0xff, 0x8e, 0x80, 0x3d, 
-	0x3f, 0xa7, 0xb1, 0x61, 0x9a, 0x81, 0xed, 0x90, 0x34, 0x3, 
-	0x1b, 0x8d, 0x4d, 0x39, 0x94, 0xe9, 0xf6, 0x34, 0x4a, 0x53, 
-	0x6f, 0x21, 0xfa, 0x33, 0x65, 0xbe, 0x2d, 0xd3, 0xea, 0xf3, 
-	0x44, 0x16, 0x8f, 0x78, 0x89, 0x41, 0xfb, 0x7e, 0x3b, 0xb6, 
-	0xd8, 0x62, 0xb, 0x15, 0x5f, 0x71, 0x13, 0x45, 0xb6, 0x7b, 
-	0x87, 0xd0, 0xe2, 0x1, 0x18, 0xe, 0xa1, 0x26, 0xee, 0x34, 
-	0xca, 0x22, 0xd, 0x50, 0xa2, 0x71, 00, 0xa8, 0x7d, 0x29, 
-	0x10, 0x3b, 0x8d, 0xfc, 0xce, 0x17, 0x83, 0xda, 0x71, 0x3, 
-	0x9a, 0x30, 0xf6, 0x71, 0x6d, 0xa9, 0x3, 0xce, 0x21, 0xc0, 
-	0xc4, 0x19, 0x78, 0x84, 0x78, 0xae, 0x13, 0x1a, 0xc8, 0xd4, 
-	0xd9, 0x71, 0xe7, 0xf1, 0x75, 0xb7, 0xc7, 0xd7, 0xf9, 0xed, 
-	0x34, 0xe8, 0x10, 0xc7, 0x11, 0xf2, 0xdb, 0x65, 0x87, 0xc4, 
-	0x3e, 0xf8, 0x3, 0x5f, 0x24, 0x43, 0xe1, 0x2b, 0x9c, 0x7c, 
-	0x66, 0x78, 0xea, 0xd4, 0xa9, 0x3, 0xd4, 0xaf, 0x7, 0x69, 
-	0xab, 0x2a, 0x5b, 0x5f, 0xd, 0x70, 0x6, 0x7d, 0x9c, 0x1, 
-	0x41, 0x88, 0xd2, 0xb1, 0xdc, 0x73, 0xcd, 0x2e, 0xa4, 0x49, 
-	0x3e, 0x6e, 0x55, 0x5d, 0xd3, 0x5a, 0xe3, 0xd9, 0x4f, 0x56, 
-	0x69, 0x97, 0xaf, 0xc7, 0xf0, 0xd4, 0x80, 0xd3, 0x5e, 0x54, 
-	0xc6, 0xc5, 0xea, 0x23, 0x2c, 0xc8, 0x62, 0x60, 0x7b, 0x9e, 
-	0x8d, 0x3c, 0x6e, 0x5b, 0xd7, 0xbf, 0x6e, 0xca, 0xc0, 0x96, 
-	0x81, 0xe3, 0x47, 0xed, 0x32, 0xe2, 0xe9, 0x74, 0x26, 0xcd, 
-	0x74, 0xb7, 0x4e, 0xe6, 0xb8, 0x84, 0xa3, 0xd3, 0x2c, 0xb7, 
-	0x98, 0xa8, 0x56, 0x9a, 0x69, 0xa3, 0xb9, 0x55, 0x95, 0xec, 
-	0xe3, 0x69, 0x98, 0x48, 0x67, 0x51, 0x67, 0xe2, 0xf6, 0x5d, 
-	0xea, 0x5f, 0xa, 0xdc, 0xca, 0x1f, 0x1c, 0x99, 0xb9, 0xd1, 
-	0x23, 0x5, 0x95, 0x20, 0xad, 0x22, 0xc7, 0xea, 0xed, 0x51, 
-	0x47, 0x1d, 0xd5, 0xa8, 0x45, 0xa0, 0xbd, 0x75, 0xd8, 0xdd, 
-	0x7b, 0xd2, 0x92, 0xaf, 0xea, 0xc6, 0x97, 0xe4, 0xd, 0x70, 
-	0xe8, 0x40, 0x9b, 0x86, 0xc3, 0x8c, 0xb4, 0x1e, 0xab, 0xbc, 
-	0xa6, 0xb7, 0x73, 0xfe, 0x4b, 0x9d, 0xff, 0x1d, 0xcd, 0xbf, 
-	0x59, 0xc5, 0x56, 0xb2, 0x32, 0x74, 0xce, 0xb1, 0xe7, 0x9, 
-	0xd8, 0xb3, 0x94, 0xe4, 0x91, 0xd1, 0xa0, 0x26, 0x34, 0x43, 
-	0x6d, 0x8a, 0xd3, 0x78, 0x98, 0x49, 0x9d, 0x29, 0xa7, 0x51, 
-	0x53, 0xec, 0xa9, 0x5a, 0x11, 0x3f, 0x5f, 0xc0, 0x5e, 0xa1, 
-	0x5d, 0x68, 0x13, 0x59, 0x94, 0x43, 0x30, 0xb5, 0x98, 0x94, 
-	0xd6, 0x20, 0xd4, 0x2e, 0xa0, 0xf3, 0x62, 0x47, 0xd8, 0xf7, 
-	0xac, 0xfc, 0x7d, 0xe6, 0x62, 0x41, 0x46, 00, 0x29, 0x13, 
-	0xd0, 0x21, 0xe4, 0xfc, 0xc6, 0xf3, 0xdb, 0xe0, 0x74, 0x9a, 
-	0x1, 0xc, 0xa8, 0xe3, 0xeb, 0x4e, 0x77, 0x7e, 0xae, 0xf9, 
-	0x1e, 0xd3, 0x22, 0xc4, 0xf9, 0x77, 0xa9, 0xc6, 0xc4, 0xf5, 
-	0x32, 0xe0, 0xe2, 0x90, 0x38, 0x9e, 0xfa, 0xc6, 0x71, 0x7e, 
-	0xdb, 0x43, 0xc3, 0x71, 0xe7, 0x23, 0x24, 0xdd, 0xf7, 0xb8, 
-	0x9c, 0x38, 0x2c, 0x55, 0x9f, 0xde, 0xa4, 0xb1, 0xba, 0xaf, 
-	0xc7, 0x4e, 0x61, 0x23, 0x8d, 0x16, 0x3, 0x79, 0x79, 0x28, 
-	0xd4, 0x4b, 0x9b, 0x52, 0x9a, 0xb5, 0x1b, 0xf2, 0x20, 0xad, 
-	0xa9, 0x64, 0x64, 0x1d, 0xfe, 0x46, 0x65, 0x20, 0x7f, 0x78, 
-	0x83, 0x1a, 0x19, 0x21, 0x1e, 0x5b, 0x78, 0xfa, 0x19, 0xe4, 
-	0x86, 0x30, 0x38, 0xc9, 0xdd, 0xcd, 0xaa, 0x7f, 0x4a, 00, 
-	0xdf, 0x17, 0x80, 0xb3, 0xe, 0x81, 0x63, 0x3, 0x8f, 0xe, 
-	0xe8, 0xe0, 0xcc, 0xfb, 0x4b, 0x25, 0x3f, 0x7e, 0xdb, 0xcb, 
-	0xf2, 0x88, 0x9c, 0xe2, 0x51, 0x34, 0xc8, 0xe3, 0x68, 0x21, 
-	0x6a, 0xd7, 0x41, 0x1b, 0xf, 0x9c, 0x32, 0x62, 0x97, 0x91, 
-	0x2f, 0x35, 0xe, 0x68, 0x6c, 0xef, 0x68, 0x93, 0xd6, 0xd6, 
-	0xb1, 0xf4, 0x82, 0x2f, 00, 0x97, 0x40, 0x84, 0x45, 0x33, 
-	0x71, 0x2f, 0x38, 0x96, 0xd0, 00, 0x36, 0x43, 0x21, 0x15, 
-	0x22, 0xd9, 0xe0, 0x46, 0xa6, 0xf9, 0x9d, 0xcb, 0x1a, 0xf2, 
-	0x17, 0xfc, 0x29, 0x5, 0x6e, 0xdf, 0xe0, 0x11, 0x21, 0xf, 
-	0xee, 0xee, 0x8, 0x15, 0x50, 0xcd, 0xfd, 0xe0, 0x7b, 0x61, 
-	0xd2, 0xe0, 0xc3, 0x34, 0xf, 0xd9, 0x5d, 0x6f, 0xe2, 0xd0, 
-	0xe0, 0xb, 0xe5, 0x1, 0x21, 0x8c, 0x84, 0xa1, 0x68, 0x6f, 
-	0x57, 0x98, 0x72, 0xea, 0xf4, 0x58, 0xeb, 0x31, 0xcd, 0xbf, 
-	0x2f, 0xd3, 0x4b, 0xed, 0x47, 0x1e, 0x7e, 0xf8, 0xe1, 0x8d, 
-	0x8, 0xa7, 0x18, 0xba, 0x56, 0xca, 0x9f, 0x2f, 0x88, 0x2, 
-	0x6c, 0xc0, 0x8b, 0x76, 0x86, 0x4e, 0xb9, 0x39, 0x76, 0x31, 
-	0xb0, 0x1b, 0xa4, 0xa5, 0x5b, 0xb4, 0x39, 0xe4, 0x22, 0x1, 
-	0x7b, 0xb5, 0xa6, 0xd, 0x13, 0x30, 0x75, 0x71, 0xb0, 0xd, 
-	0x27, 0xa0, 0xd7, 0x9, 0xe0, 0x98, 0x73, 0x89, 0xe, 0x6, 
-	0x48, 0x49, 0xbb, 0x87, 0xf4, 0xbe, 0xfe, 0x83, 0xc0, 0xe3, 
-	00, 0x24, 0x9e, 0xf2, 0x49, 0x23, 0xe, 0x28, 0x68, 0xaf, 
-	0xbd, 0x41, 0x6b, 0x10, 0x3b, 0x1d, 0xb0, 0xe3, 0x9c, 0xae, 
-	0x2d, 0x8e, 0xec, 0x70, 0xb, 0x69, 0xdc, 0x83, 0x23, 0x74, 
-	0xdc, 0xbf, 0xc3, 0x85, 0xdc, 0x1f, 0xb7, 0x9b, 0x9f, 0x8e, 
-	0x13, 0xf2, 0x78, 0x4d, 0x6f, 0xc2, 0x85, 0xba, 0xf0, 0x9b, 
-	0x3a, 0xe1, 0x8, 0xd, 0x5a, 0x42, 0x3, 0x37, 0xe, 0x9d, 
-	0x9f, 0xd0, 0xed, 0x24, 0xe4, 0x37, 0x7e, 0x5d, 0x39, 0x9e, 
-	0xbf, 0xeb, 0xb1, 0x2a, 0xaf, 0x90, 0xf2, 0x3e, 0x76, 0xf8, 
-	0x9c, 0xaf, 0xcb, 0x62, 0xaa, 0xc3, 0xa9, 0xb4, 0x77, 0xde, 
-	0x79, 0xe7, 0xc, 0x6, 0x6e, 0xd, 00, 0x67, 0xe9, 0x1a, 
-	0x95, 0x81, 0x51, 0x80, 0xe, 0x87, 0x2c, 0x96, 0x2, 0x78, 
-	0xb8, 0x98, 0xfb, 0x93, 0x91, 0xfc, 0xdd, 0xa0, 0x78, 0x4a, 
-	0x8b, 0xb9, 0xfb, 00, 0x70, 0xac, 0x2d, 0xc9, 0x29, 0xb2, 
-	0xc9, 0x59, 0x81, 0x4f, 0xe9, 0x1a, 0x40, 0x46, 0x26, 0x91, 
-	0xcd, 0xd8, 0x82, 0xa4, 0xc3, 0x60, 0xe4, 0x7e, 0x83, 0x26, 
-	0xf, 0x9a, 0x34, 0x6c, 0xf3, 0x21, 0x2b, 0x86, 0xb4, 0xc, 
-	0xd2, 0xea, 0x78, 0x6, 0x33, 0x5c, 0x4a, 0x33, 0x25, 0xcf, 
-	0x82, 0x75, 0x56, 0xb, 0xab, 0xdf, 0x2, 0xb3, 0xc4, 0x33, 
-	0x75, 0x22, 0xac, 0xd3, 0x62, 0x9a, 0x16, 0xd4, 0xe8, 0x29, 
-	0xd1, 0xc0, 0xc7, 0xd8, 0x74, 0x9a, 0x43, 0x5d, 0xce, 0xba, 
-	0x52, 0xe0, 0xe6, 0xa, 0x19, 0x71, 0x5, 0x44, 0x5c, 0x68, 
-	0xf6, 0x52, 0x65, 0x7f, 0xc5, 0x58, 0x76, 0x2f, 0x4d, 0xd1, 
-	0x33, 0xf0, 0x8f, 0x49, 0x8, 0x99, 0x7f, 0x5f, 0x23, 0xef, 
-	0xd1, 0x92, 0xd0, 0xe6, 0xb9, 0x2b, 0xcd, 0x42, 0xc6, 0x2d, 
-	0xda, 0x54, 0x32, 0x41, 0xcf, 0x1a, 0x77, 0xe2, 0x55, 0x41, 
-	0x1, 0xfe, 0x6e, 0x99, 0x5b, 0x37, 0xe5, 0xf2, 0x2, 0x6e, 
-	0xbc, 0x35, 0xb5, 0x43, 0xd2, 0x3c, 0x42, 0x16, 0x6b, 0x6c, 
-	0x59, 0xf9, 0x1b, 0x5c, 0xa2, 0xb9, 0x7c, 0xab, 0x4c, 0xef, 
-	0xf1, 0x80, 0x2, 0x61, 0xb3, 0x60, 0x5a, 0x70, 0x5, 0xf0, 
-	0xb4, 0x46, 0x60, 0x40, 0x93, 0x91, 0xf9, 0x9e, 0xd1, 0x86, 
-	0x6, 0xde, 0x60, 0x12, 0xd9, 0xbe, 0x77, 0xd0, 0xc5, 0xc7, 
-	0x20, 0x24, 0x4e, 0x9d, 0x9c, 0x6, 0x98, 0x89, 0x17, 0x87, 
-	0xd4, 0x3f, 0x4e, 0x7f, 0xfb, 0xed, 0x65, 0x49, 0xba, 0x6e, 
-	0xb0, 0xf2, 0x65, 0xa7, 0x68, 0x3a, 0xad, 0x22, 0xd7, 0x83, 
-	0x39, 0xa0, 0xab, 0xfa, 0xe4, 0xc7, 0x21, 0x2d, 0x38, 0xad, 
-	0xce, 0x76, 0xa6, 0x65, 0x93, 0xc2, 0x3d, 0x4b, 0x96, 0xbc, 
-	0x1b, 0x9e, 0x99, 0xbb, 0x7e, 0x6, 0xa7, 0x79, 0x45, 0xba, 
-	0xe3, 0xf1, 0x35, 0x68, 0xc2, 0x47, 0x9c, 0xef, 0x75, 0x18, 
-	0x12, 0xd7, 0xc1, 0x1f, 0xda, 0x24, 0xb9, 0xe2, 0x5d, 0xec, 
-	0x94, 0xcc, 0x62, 0x1e, 0xf5, 0x85, 0xed, 0xae, 0xd4, 0x2b, 
-	0x1e, 0x80, 0x58, 0xe4, 0xd5, 0xa6, 0x94, 0x66, 0x69, 0xd8, 
-	0x83, 0x34, 0xb8, 0xb3, 0xa3, 0xd, 0x80, 0x3, 0x66, 0x77, 
-	0xae, 0x95, 0x4d, 0x31, 0xc0, 0x7d, 0x9d, 0xda, 0x73, 0xad, 
-	0x43, 00, 0xbf, 0x5a, 0xed, 0xca, 0x68, 0xe, 0xbe, 0xf, 
-	0x6f, 0xb1, 0x49, 0x71, 0x3d, 0x24, 0xa5, 0x70, 0x87, 0xae, 
-	0x21, 0x7b, 00, 0xda, 0x8a, 0xc7, 0x72, 0xa, 0x6d, 0xc0, 
-	0xbd, 0x5f, 0xf3, 0xd8, 0xe6, 0x49, 0x83, 0x26, 0xd, 0x1a, 
-	0x30, 0x6a, 0xe7, 0xd1, 0xcf, 0xa, 0xae, 0x98, 0x6f, 0x1, 
-	0xd8, 0x84, 0xea, 0xd, 0x3a, 0x1e, 0x6, 0x52, 0x66, 0x28, 
-	0x57, 0x7f, 00, 0xb4, 0x64, 0x10, 0xa3, 0x5c, 0xf, 0x30, 
-	0xb2, 0xe9, 0xc6, 0xa4, 0xeb, 0xc6, 0xef, 0xfc, 0x3d, 0x8a, 
-	0xe7, 0x5d, 0x77, 0xe0, 0xf6, 0xd, 0xdc, 0x4c, 0xa1, 0x84, 
-	0x55, 0x3b, 0x98, 0xac, 0x67, 0xd8, 0xbc, 0x67, 0xbd, 0x8b, 
-	0x3a, 0x62, 0x89, 0x3c, 0xe6, 0xf9, 0x5c, 0x79, 0x6b, 0x57, 
-	0x68, 0x62, 0x9a, 0xe3, 0x28, 0x3, 0x51, 0xc3, 0x84, 0xfa, 
-	0xad, 0xe6, 0x6e, 0x9c, 0x2c, 0xda, 0xa4, 0x51, 0xf9, 0x32, 
-	0xa5, 0x91, 0x1f, 0x46, 0x99, 0x89, 0x8c, 0x92, 0x66, 0xa6, 
-	0x81, 0xed, 0x4e, 0xa2, 0xee, 0xd0, 0x6a, 0x90, 0x26, 0x1a, 
-	0x23, 0x73, 0xfc, 0x12, 0x81, 0x3a, 0xa5, 0x23, 0x6e, 0xc3, 
-	0xfb, 0xd8, 0x80, 0x5, 0xc1, 0xa3, 0x6e, 0xf6, 0xcc, 0x13, 
-	0x19, 0x89, 0xd1, 0x8a, 0xd2, 00, 0x29, 0xd, 0x2a, 0x6c, 
-	0xe0, 0xc8, 0x68, 0xbe, 0x16, 0x3e, 0x23, 0x23, 0x5a, 0xeb, 
-	0xc4, 0xc5, 00, 0x40, 0x58, 0xf3, 0x20, 0x54, 0x1c, 0x21, 
-	0xc5, 0x51, 0x5f, 0x1c, 0xa0, 0xc6, 0x19, 0xec, 0xce, 0x5f, 
-	0x57, 0xa7, 0x8d, 0x31, 0x6d, 0xcd, 0xc9, 0xc1, 0x87, 0x7d, 
-	0x45, 0x17, 0xf5, 0x39, 0x21, 0x7d, 0xa3, 0x1b, 0x10, 0x67, 
-	0xaf, 0x5b, 0xc3, 0xf3, 0xbb, 0x93, 0x96, 0x4c, 0xc0, 0xa4, 
-	0x5d, 0xdf, 0xe9, 0x86, 0xdb, 0xc, 0x9, 0xc, 0xc, 0xb7, 
-	0xde, 0x72, 0x41, 0x32, 0xa0, 0x7f, 0x7b, 0xd8, 0xc, 0x43, 
-	0xbd, 0x70, 0x6, 0x30, 0xbf, 0x5d, 0x1f, 0x78, 0x86, 0x8b, 
-	0xd3, 0x7c, 0x2d, 0x6e, 0x4f, 0xc8, 0xb4, 0x8e, 0xfe, 0xf0, 
-	0x1c, 0x5e, 0x73, 0xdc, 0x8c, 0xe4, 0x2a, 0xff, 0x45, 0x10, 
-	0xfa, 0xcf, 0x9e, 0xfe, 0xf4, 0xdc, 0x9f, 0x3a, 0x1, 0x70, 
-	0x59, 0x91, 0xcd, 0x3a, 0x36, 0xf9, 0x20, 0xed, 0x8c, 0xe4, 
-	0x48, 0xa5, 0x33, 0x69, 0x42, 0xae, 0x7a, 0x84, 0x28, 0x99, 
-	00, 0x60, 0x85, 0xc8, 0x51, 0xec, 0x82, 0x4c, 0x2a, 0x81, 
-	0xeb, 0xad, 0x52, 0x34, 0x7f, 0x16, 0xcd, 0xd5, 0x5a, 0x3d, 
-	0xdf, 0x42, 0x60, 0xbf, 0x48, 0x69, 0xc8, 0x21, 0x72, 0x89, 
-	0x4c, 0x1a, 0xd4, 0xc4, 0xa1, 0x83, 0xdf, 0xa2, 0x6e, 0x60, 
-	0xdd, 0x96, 0x83, 0x27, 0xf, 0x9a, 0x30, 0x66, 0x8f, 0x51, 
-	0xcf, 0xd4, 0x35, 0x4a, 0x15, 0xb7, 0x1, 0xe4, 00, 0x6a, 
-	0x99, 0x41, 0x5a, 0x4c, 0x43, 0x8b, 0x6b, 0x16, 0xa4, 0x3e, 
-	0xa3, 0xba, 0xc1, 0x29, 0x22, 0xb3, 0x27, 0xc3, 0x1e, 0xf2, 
-	0x74, 0x30, 0xcf, 0x85, 0x70, 0x5d, 0xc0, 0x23, 0x18, 0xe, 
-	0xc9, 0x9b, 0xbb, 0x83, 0x68, 0xa7, 0x2b, 0x7, 0x6e, 0x72, 
-	0x98, 0x50, 0x71, 0xd8, 0x79, 0x77, 0x85, 0x31, 0x76, 0xf9, 
-	0x60, 0xc6, 0xc8, 0x7c, 0xda, 0x4b, 0x8f, 0xc7, 0x56, 0xa8, 
-	0x63, 0xd8, 0xb9, 0xf6, 0x82, 0x3c, 0xd2, 0xa, 0xc3, 00, 
-	0x2e, 0xcc, 0xc5, 0xc1, 0x48, 0xc9, 0x71, 0xfb, 0x5a, 0x81, 
-	0xec, 0xcf, 0x7a, 0x75, 0x10, 0x26, 0x51, 0x7, 0xf2, 0xc2, 
-	0x28, 0x98, 0xc8, 0x60, 0x40, 0x3a, 0x9e, 0x38, 0x69, 0x5c, 
-	0x83, 0x16, 0x79, 0x69, 0x7c, 0xa3, 0x36, 0xa6, 0x8c, 0xd2, 
-	0xdc, 0xfa, 0x62, 0xbd, 0x71, 0xd5, 0xb4, 0xc3, 0xe, 0x3b, 
-	0xac, 0xa7, 0xb4, 0xe0, 0xe0, 0x1e, 0xc2, 0x88, 0x47, 0x50, 
-	0x11, 0x8, 0x80, 0x83, 0x37, 0x70, 0x34, 0x8, 0x71, 0xc8, 
-	0x2, 0xc7, 0xec, 0x26, 0x2c, 0xee, 0x49, 0x93, 0xeb, 0x36, 
-	0x48, 0xaf, 0x3b, 0x7, 0xfd, 0xb8, 0xc, 0x83, 0x97, 0x7a, 
-	0x12, 0x37, 0x80, 0xc, 0xf6, 0xfc, 0xf5, 0xba, 0x6c, 0x5b, 
-	0x10, 0x66, 0xc0, 0x8d, 0x5, 0x7, 0xb8, 0xb3, 0x6d, 0xd1, 
-	0x4f, 0xd1, 0x5, 0xbc, 0xc5, 0xe0, 0xc6, 0xd8, 0x83, 0xdb, 
-	0x6, 0x37, 0xf4, 0xeb, 0xa5, 0x43, 0x30, 0x65, 0x5d, 0x17, 
-	0x97, 0x49, 0xab, 0x89, 0xbb, 0x7e, 0xbe, 0x1e, 0xff, 0x5e, 
-	0x77, 0x9c, 0xe9, 0xa4, 0x4c, 0x9b, 0xf5, 0x98, 0x35, 0xc3, 
-	0x5e, 0x76, 0xde, 0x11, 0x67, 0x17, 0x1f, 0x8f, 0xf1, 0xf0, 
-	00, 0x98, 0xba, 0xe3, 0xe9, 0x53, 0x83, 0x9b, 0x90, 0xba, 
-	0x93, 0xa6, 0x5d, 0x67, 0xcd, 0xda, 0x53, 0x71, 0x90, 0xde, 
-	00, 0xe3, 0x3d, 0x73, 0x34, 0x78, 0xec, 0xca, 0x1, 0xdc, 
-	0xe0, 0x46, 0x6, 0xc9, 0x83, 0xc2, 0xb9, 0x54, 0x21, 0xa3, 
-	0x1c, 0x32, 0x47, 0x3a, 0x32, 0xc8, 0x35, 0x64, 0xd2, 0x71, 
-	0x64, 0x72, 0x5c, 0xba, 0x2e, 0x3d, 0x7d, 0xe8, 0x94, 0xc1, 
-	0x53, 0x46, 0xed, 0x3c, 0xf2, 0x95, 0x7e, 0xc3, 0x9b, 0x5b, 
-	0x99, 0x67, 0xcb, 0xe0, 0x66, 0x1, 0x2d, 0xab, 0x34, 0x1d, 
-	0x86, 0xae, 0xa, 0x1b, 0x51, 0xc4, 0x56, 0xe5, 0x90, 0x23, 
-	0x22, 0x89, 0x26, 0x50, 0x67, 0x65, 0x7, 0x7b, 0xd2, 0xe5, 
-	0x7a, 0x14, 0xc6, 0x2, 0x70, 0x67, 0x9, 0x64, 0xef, 0x8c, 
-	0xfe, 0x42, 0xc4, 0x3e, 0x4a, 0xae, 0x2e, 0x2a, 0xcd, 0x99, 
-	0xec, 0xbf, 0xff, 0xfe, 0x43, 0xb5, 0xe8, 0xb0, 0xf7, 0xcc, 
-	0x99, 0x33, 0xdf, 0x97, 0xe0, 0x5d, 0x2c, 0xa, 0x98, 0xe9, 
-	0x30, 0xc6, 0x4c, 0x83, 0x51, 0x34, 0xa, 0xb0, 0xaf, 0x11, 
-	0xb0, 0x19, 0x5, 0xb3, 0x6a, 0xa2, 0x73, 0x10, 0x80, 0x71, 
-	0xf6, 00, 0x1b, 0x86, 0x76, 0x1, 0xb6, 0x5e, 0xfe, 0x18, 
-	0xa1, 0x47, 0x5e, 0x17, 0xca, 0xf, 0xd1, 0xc7, 0x3, 0x46, 
-	0x19, 0x8, 0xf0, 0x8, 0xf, 0xa8, 0x11, 0x7e, 0x3a, 0x9c, 
-	0x10, 0x81, 0xc8, 0x82, 0x21, 0xf0, 0x34, 0x80, 0x49, 0xb, 
-	0x79, 0x69, 0x4, 0x48, 0xdb, 0x30, 0x3b, 0x4, 0xf4, 0x4, 
-	0x2d, 0xde, 0xd3, 0xb3, 0x4e, 0xd5, 0xa5, 0xcf, 0x9c, 0xeb, 
-	0x6a, 0x82, 0x6e, 0x3, 0x82, 0x4a, 0xdc, 0xae, 0x2e, 0xdd, 
-	0xb9, 0xaa, 0xcd, 0xe3, 0x50, 0xfd, 0x12, 0x13, 0x6d, 0xe2, 
-	0x8b, 0xb9, 0x1a, 0xb4, 0xc2, 0xf4, 0x4d, 0xb7, 0x40, 0x13, 
-	0xa7, 0x7, 0x2e, 0x18, 0x7c, 0x81, 0xdb, 0x61, 0x3c, 0xe0, 
-	0xb7, 0xae, 0xe9, 0xcb, 0x39, 0x79, 0x70, 0x9b, 0x3e, 0xa1, 
-	0x41, 0xee, 0xfb, 0x1d, 0xc6, 0x79, 0xd6, 0x75, 0x9c, 0x29, 
-	0x1a, 0xda, 0x5a, 0xd3, 0xb4, 0x8c, 0xa6, 0x4f, 0x7c, 0x51, 
-	0x24, 0xff, 0x66, 0x19, 0xc0, 0x36, 0xc0, 0x9, 0x63, 0x80, 
-	0x7b, 0x50, 0x22, 0x24, 0x9f, 0xf6, 0x37, 0x34, 0xeb, 0xd9, 
-	0x75, 0x25, 00, 0x47, 0xe, 0x71, 0x30, 0xdb, 0x20, 0x46, 
-	0xde, 0xc2, 0xbe, 0xf, 0x85, 0x46, 0x5b, 0x6c, 0x55, 0x5a, 
-	0x51, 0x11, 0xe, 0x52, 0x8e, 0x3, 0x86, 0x6c, 0x36, 0x64, 
-	0xca, 0xf0, 0xad, 0x87, 0x2f, 0x1f, 0xbe, 0xe9, 0xd0, 0x65, 
-	0x11, 0xb0, 0xb9, 0x37, 0xeb, 0x3, 0x7c, 0x73, 0x18, 0xb, 
-	0xdd, 0xa0, 0x7e, 0xc9, 0x21, 0x8e, 0x3e, 0x82, 0xd7, 0xd9, 
-	0x30, 0xa4, 0xea, 0x36, 0x5f, 0xcd, 0x87, 0xa4, 0x5, 0xa7, 
-	0xbc, 0xf9, 0x5d, 0x6a, 0x5, 0xe0, 0xf6, 0xf5, 0x28, 0xcc, 
-	0x4a, 0x42, 0x96, 0x58, 0x2e, 0xb9, 0xf6, 0x80, 0xf9, 0xb7, 
-	0x80, 0x32, 0x5e, 0x2b, 0x8c, 0xd3, 0xf5, 0xd1, 0x3d, 0x4c, 
-	0x99, 0x4b, 0xe4, 0x99, 0x33, 0xc3, 0x8, 0xbc, 0x19, 0x48, 
-	0x1c, 00, 0x3, 0xde, 0x62, 0x70, 0x3, 0x64, 0x7b, 0x3, 
-	0xdb, 0x92, 0xe, 0xb3, 0x1a, 0x64, 0x29, 0xc, 0x11, 0xa8, 
-	0xcf, 0x97, 0xd6, 0x5e, 0x4f, 0xab, 0xa5, 0x23, 0x94, 0x16, 
-	0x18, 0x4, 0x20, 0x60, 0x94, 0x5, 0x15, 0xe1, 0x30, 0x60, 
-	0xc8, 0x63, 0xc0, 0x90, 0x7, 0x47, 0x3e, 0x34, 0x77, 0x4e, 
-	0x8b, 0x67, 0x14, 0xe7, 0xe5, 0x8d, 0x44, 0x47, 0xf3, 0xc0, 
-	0xc3, 0x90, 0xe7, 0xc3, 0xfc, 0x43, 0x99, 0xc5, 0xe5, 0xba, 
-	0x4d, 0xd4, 0x23, 0x5c, 0x7, 0xf8, 0xfe, 0xa7, 0xf6, 0x76, 
-	0x8e, 0x1, 0xcc, 0xdf, 0x3b, 0x6b, 0x1b, 0xf2, 0x80, 0x6a, 
-	0x39, 0x26, 0x75, 0xc8, 0x2f, 0xf7, 0x3, 0x6e, 0xf8, 0xe2, 
-	0x72, 0x1c, 0x86, 0x8c, 0x1f, 0xd1, 0x1f, 0xda, 0xa8, 0x75, 
-	0x98, 0xf0, 0xa2, 0x8a, 0xe6, 0xcb, 0x3c, 0x3d, 0xe1, 0x3c, 
-	0xfc, 0xbc, 0xa6, 0x8e, 0x81, 0x6d, 0xcd, 0x1d, 0x83, 0x9b, 
-	0xf6, 0x18, 0xe0, 0xb4, 0x87, 0xfc, 0xda, 0x94, 0xd2, 0xac, 
-	0x79, 0x73, 0x4f, 00, 0x47, 0xe9, 0xe0, 0x60, 0x14, 0xde, 
-	0x72, 0x9, 0xb8, 0x91, 0x4b, 0x3c, 0xe9, 0xb1, 0xdc, 0x5a, 
-	0x96, 0xc9, 0x33, 0x63, 0xf0, 0xe4, 0xc1, 0x53, 0x87, 0x4e, 
-	0x19, 0x94, 0x8c, 0xd9, 0x75, 0xbd, 0xd7, 0xa4, 0xc2, 0xea, 
-	0x53, 0x32, 0xbf, 0xb5, 0xcd, 0x94, 0xdd, 0x68, 0x3a, 0xa7, 
-	0x8b, 0xe7, 0xda, 0xaa, 0x10, 0xac, 0xcf, 0xe1, 0x96, 0x7e, 
-	0xc1, 0xf9, 0xb7, 0x43, 0xd9, 0x4c, 0x21, 0xbd, 0x87, 0x3f, 
-	0x5, 0x99, 0x4a, 0x81, 0xbb, 0x87, 0xfb, 0x6b, 0xbf, 0xc, 
-	0x83, 0xb5, 0x2, 0xce, 0x1b, 0x46, 0x9b, 0xe9, 0x39, 0xe4, 
-	0x32, 0xed, 0xe8, 0x61, 0x65, 0xf1, 0x72, 0x79, 0x98, 0x63, 
-	0x70, 0x9b, 0x39, 0x30, 0xe, 0xb0, 0x12, 0x52, 0xe9, 0x62, 
-	0x6, 0x5a, 0xe3, 0x9b, 0xf1, 0xb4, 0xa5, 0x41, 0x8f, 0x40, 
-	0x6, 0xcb, 0xc, 0x9f, 0xc9, 0xd6, 0x52, 0xbd, 0x6d, 0x36, 
-	0x4c, 0x69, 0x79, 0x67, 0x41, 0x2d, 0x6, 0x77, 0x3e, 0x83, 
-	0x22, 0x16, 0x2, 0x42, 0x84, 0xc2, 0x5e, 0xc0, 0x66, 0xa5, 
-	0x95, 0xfd, 0xdd, 0x9c, 0x3, 0x96, 0x68, 0xf0, 0x48, 0xe9, 
-	0xd, 0xb2, 0xf8, 0xd6, 0x8f, 0x24, 0x1e, 0xda, 0x24, 0xee, 
-	0x10, 0x76, 0xc6, 0xb, 0xab, 0x42, 0x3a, 0xed, 0xe9, 0x2, 
-	0x6e, 0x4, 0x49, 0xff, 0xb3, 0x9a, 0x3b, 0xcb, 0x64, 0x38, 
-	0x6d, 0xfe, 0x14, 0x52, 0xf9, 0x68, 0x7e, 0xc1, 0x6b, 0x4e, 
-	0xd, 0xd5, 00, 0x9b, 0xd1, 0xc2, 0x59, 0x38, 0xcd, 0x85, 
-	0xbd, 0xed, 0x80, 0x17, 0x90, 0x12, 0xda, 0x2c, 0x77, 0x68, 
-	0x60, 0xc7, 0xa6, 0xb9, 0xfb, 0x95, 0x56, 0xc0, 0xf, 0xf2, 
-	0x56, 0x1, 0x70, 0x64, 0xcf, 0x32, 0x8a, 0x62, 0x41, 0xf1, 
-	0x58, 0x3e, 0xb3, 0x68, 0xcc, 0x5e, 0x27, 0x8f, 0x7f, 0xef, 
-	0x3f, 0x70, 0x83, 0x1, 0x9b, 0xc, 0xd9, 0x68, 0xf0, 0xe0, 
-	0xd, 0xf6, 0xd9, 0xe0, 0x19, 0xed, 0xa8, 0xa9, 0xeb, 0xc8, 
-	0x74, 0xd4, 0x9, 0xc7, 0xd8, 0x4b, 0x69, 0x65, 0x4a, 0xb3, 
-	0x4a, 0xa6, 0x3e, 0x41, 0xc6, 0x59, 0xdf, 0x44, 0xc6, 0xe9, 
-	0x44, 0x5, 0x21, 0x96, 0x4d, 0xe0, 0xb7, 0xee, 0x60, 00, 
-	0xce, 0x66, 0xc9, 0x5e, 0xae, 0xe4, 0xef, 0x87, 0xa, 0x6e, 
-	0x2a, 0x4, 0x53, 0x8f, 0x3e, 0xfa, 0x68, 0x3e, 0x20, 0xb0, 
-	0xb3, 0xe6, 0xe0, 0xcb, 0x5, 0x18, 0x5e, 0x85, 0xbb, 0x45, 
-	0x1e, 0xa6, 0xc0, 0x38, 0x42, 00, 0x4e, 0xa3, 0x71, 0xe, 
-	0x49, 0x37, 0xc0, 0xcd, 0x44, 0xd2, 0xe0, 0x6, 0x8c, 0xe6, 
-	0x25, 0x90, 0xfe, 0x32, 0x9d, 0x7f, 0x2b, 0xed, 0x3a, 0x55, 
-	0xdb, 0x58, 0xb3, 0xf, 0xc9, 0x75, 0xc1, 0x8e, 0x4e, 0xb5, 
-	0xa6, 0x8b, 0x5, 0x98, 0x74, 0x7b, 0xb, 0x81, 0x41, 0xed, 
-	0x90, 0x79, 0x1b, 0x5a, 0x5c, 0x26, 0x61, 0x5a, 00, 0xe7, 
-	0xf9, 0x66, 0x87, 0x2c, 0x84, 0x94, 0x1e, 0xab, 0xa5, 0x38, 
-	0x9e, 0xe7, 0x6f, 0xae, 0x6f, 0x39, 0xa0, 0xc1, 0x9f, 0x23, 
-	0x8f, 0x39, 0x9e, 0x29, 0x2c, 0x98, 0x69, 0xa1, 0x33, 0x7f, 
-	0x80, 0x21, 0xe0, 0x2d, 0x5, 0x6e, 0xc0, 0x6c, 0x60, 0xd3, 
-	0x5f, 0x9e, 0x73, 0xd3, 0xa7, 0xee, 0x57, 0xfa, 0xd9, 0xae, 
-	0x4, 0xc0, 0x7f, 0xed, 0x6b, 0xa, 0x2d, 0x8f, 0x28, 0x11, 
-	0xe4, 0xcd, 0xb2, 0x87, 0x8c, 0x5a, 0xe9, 0x28, 0x5a, 0x20, 
-	0x9f, 0x10, 0xc7, 0x4f, 0x6f, 0x1e, 0xd5, 0xbc, 0xd5, 0x90, 
-	0x8d, 0x87, 0x8c, 0x9f, 0xb8, 0xff, 0x84, 0xa7, 0x1a, 0x9a, 
-	0x35, 0xf5, 0x6b, 0xeb, 0xd0, 0x6a, 0x86, 0x56, 0xc8, 0x13, 
-	0x1, 0x3c, 0x95, 0x61, 0x81, 0x4c, 0xf9, 0x4, 0xe9, 0xe0, 
-	0x73, 0x90, 0xa6, 0x44, 0x3b, 0xa8, 0xc8, 0x5, 0x73, 0x1c, 
-	0xd3, 0x5c, 0x77, 0x7, 0xca, 0xd9, 0xe4, 0x8a, 0xfe, 0x7e, 
-	0xe8, 0xe0, 0xa6, 0x56, 0x1c, 0xe, 0x2f, 0x80, 0xa7, 0x35, 
-	0xff, 0xde, 0x53, 0x5a, 0xfc, 0x7d, 0x2d, 0x90, 0x60, 0x9a, 
-	0xdf, 0x23, 0xf, 0x23, 0x61, 0x1e, 0x8c, 0xb4, 0x26, 0xcf, 
-	0x35, 0x33, 0x30, 0x9b, 0x74, 0x9c, 0xd9, 0x60, 0x26, 0xd7, 
-	0x6b, 0x14, 0x6f, 0xd4, 0x63, 0x8e, 0xb3, 0xb5, 0x67, 0x7c, 
-	0x1b, 0x3d, 0xf6, 0x28, 0xfb, 0xda, 0x26, 0x9d, 0xcc, 0xdc, 
-	0x9a, 0x4e, 0x26, 0x8e, 0x33, 0xb0, 0x89, 0x5b, 0x10, 0x1c, 
-	0x1a, 0xdc, 0x84, 0x16, 0x16, 0x5e, 0xe4, 0x60, 0xce, 0x87, 
-	0x20, 0x69, 0x90, 0xea, 0x50, 0x7b, 0x52, 0x1c, 0x93, 0xe4, 
-	0x4d, 0x37, 0xd0, 0xf9, 0x9b, 0xab, 0x8d, 0x3, 0x6c, 0xa, 
-	0xe1, 0x79, 0x75, 0xee, 0xd9, 0x75, 0x8a, 0x1, 0x15, 0x3e, 
-	0x5b, 0x5b, 0x3, 0x48, 0xbc, 0xcd, 0x72, 0x42, 0xff, 0x26, 
-	0x9f, 0x41, 0x4d, 0xe8, 0x3e, 0x24, 0x8c, 0xfb, 0x3b, 0xae, 
-	0x59, 0x9, 0x80, 0xb3, 0x8a, 0x8e, 0x7c, 0x21, 0x6b, 0x84, 
-	0x78, 0x64, 0x11, 0xd9, 0xb4, 0x2c, 0x5a, 0xe1, 0xa0, 0x54, 
-	0x70, 0x84, 0x5c, 0x23, 0x7d, 0xd7, 0x86, 0x41, 0xd, 0xbb, 
-	0xc, 0x9b, 0x3a, 0x64, 0xa3, 0x9, 0x7b, 0x8f, 0x7f, 0xbe, 
-	0x79, 0x48, 0x93, 0x1e, 0x4a, 0x68, 0x25, 0xbc, 0x5d, 0xc0, 
-	0xe, 0x5b, 0x4c, 0x5, 0x57, 0xb4, 0x75, 0x6e, 0xf, 0x39, 
-	0xda, 0x38, 0x98, 0xe2, 0x52, 0xe9, 0xba, 0xb7, 0xc0, 0x71, 
-	0x8d, 0x7f, 0x38, 0xd, 0x4f, 0xfa, 0xdb, 0x25, 0x4b, 0xb8, 
-	0x56, 0xee, 0xcf, 0x47, 0x2, 0x6e, 0x2a, 0xc3, 0xa, 0x34, 
-	0x87, 0x24, 0xea, 0x51, 0xd7, 0x1, 0x17, 0x5c, 0x70, 0x41, 
-	0x9b, 0x34, 0x22, 0xf3, 0xeb, 0xb9, 0xf2, 0x36, 0xb7, 0x61, 
-	0x28, 0x8c, 0xe5, 0x37, 0x61, 0xb1, 0x33, 0x63, 0x39, 0x22, 
-	0xb7, 0x41, 0x8f, 0xb9, 0xfe, 0x59, 0xbb, 0xcf, 0x76, 0xde, 
-	0x6f, 0xbf, 0xfd, 0x6, 0xd1, 0x99, 0xdd, 0x39, 0xae, 0x7b, 
-	0x7e, 0x1d, 0xe7, 0xb5, 00, 0x38, 0x8c, 0x1, 0x4d, 0x1c, 
-	0x50, 0x93, 0xdf, 0xe6, 0x1e, 0x1b, 0x5e, 0xb4, 0xc0, 0x13, 
-	0xbe, 0x29, 0xc5, 0xa3, 0x33, 0x9e, 0xa, 0xe8, 0xf0, 0x89, 
-	0xf0, 0xac, 0xb5, 0xbb, 0xf2, 0xff, 0x76, 0xad, 0x2b, 0x7, 
-	0x78, 0x55, 0x52, 0xbb, 0xc0, 0x3a, 0xb4, 0x5d, 0x34, 0xa5, 
-	0x45, 0x4c, 0x5e, 0x35, 0xd, 0x7c, 0x36, 0xa8, 0x1, 0x2e, 
-	0x40, 0x74, 0x68, 0x50, 0xf3, 0xdb, 0xfd, 0xe1, 0x90, 0x3e, 
-	0x2, 0xdc, 0x1e, 0xb4, 0xdd, 0x9f, 0x5d, 0x4b, 0xcd, 0xa6, 
-	0x14, 0x1, 0x3c, 0xa3, 0x55, 0xf4, 0x33, 0x74, 0x5, 0xb9, 
-	0xb3, 0xb6, 0x26, 0x23, 0x32, 0xc8, 0x6f, 0x3c, 0x28, 0xc3, 
-	0xdb, 0xc2, 0x24, 0xd, 0x2c, 0x6d, 0xaf, 0xad, 0xa5, 0x7b, 
-	0x8c, 0xdc, 0x72, 0xc4, 0x26, 0xe3, 0x3e, 0x39, 0xee, 0xe5, 
-	0xc1, 0x1b, 0xc, 0x5e, 0x95, 0x69, 0x97, 0xc6, 0xe, 0x1b, 
-	0x54, 0xd8, 0x5e, 0x2a, 0xfd, 0xeb, 0x95, 0xf1, 0x2c, 0x6a, 
-	0x3, 0x9d, 0x30, 0xef, 0x2e, 0xc6, 0x6d, 0xae, 0x84, 0xec, 
-	0x42, 0x9a, 0x32, 0xa3, 0xbd, 0x55, 0x40, 0x35, 0xee, 0x23, 
-	0x3, 0x37, 0x95, 0xd4, 0xa6, 0x7e, 0xb6, 0xa8, 0xf6, 0x97, 
-	0xc9, 0x75, 0x10, 00, 0x97, 0xb9, 0xcb, 0x5c, 0xe6, 0x21, 
-	0x79, 0x33, 0xd5, 0xda, 0xdb, 00, 0x77, 0xfb, 00, 0x36, 
-	0xcc, 0xe6, 0x77, 0x9d, 0x80, 0x7d, 0xba, 0x1e, 0x7b, 0xed, 
-	0xa5, 0xe7, 0x98, 0x15, 0xbf, 0xdd, 0x45, 0x87, 0xdb, 0x1, 
-	0x5c, 0xb, 0x80, 0x5, 0x2, 0x1, 0x29, 0xf6, 0xd6, 0xa, 
-	0x80, 0x9c, 0x7b, 00, 0x37, 0x69, 0xfc, 0x46, 0x20, 0x79, 
-	0x1, 0x5, 0xcd, 0xc3, 0x8a, 0x3a, 0x8f, 0xce, 0x30, 0xd7, 
-	0xe3, 0x72, 0x5c, 0xde, 0xdf, 0xc2, 0x2c, 0x7, 0x18, 0x60, 
-	0x31, 0xbb, 0x35, 0x97, 0xee, 0x90, 0x15, 0x97, 0xd2, 0xe3, 
-	0xa5, 0x94, 0xf8, 0x17, 0xde, 0x3f, 0x67, 0x7b, 0x27, 0x60, 
-	0x5, 0xbc, 0x6, 0x30, 0x73, 0x6c, 0x83, 0x9a, 0xd0, 0xde, 
-	0xfd, 0x42, 0x48, 0xbf, 0xd0, 0x6f, 0xc5, 0xfd, 0xd9, 0x13, 
-	0xcf, 0x23, 0x80, 0xcf, 0xd0, 0x63, 0xb2, 0xb5, 0x2, 0x38, 
-	0x1a, 0x1c, 0xf9, 0xb3, 0x19, 0x6e, 0xa5, 0x83, 0x6c, 0xe2, 
-	0x10, 0xa0, 0x58, 0x9d, 0x6e, 0x51, 0xd7, 0xaf, 0x6e, 0xdf, 
-	0x51, 0x5b, 0x8f, 0xda, 0x4c, 0xc0, 0x7e, 0x75, 0xd4, 0x66, 
-	0xc3, 0x97, 0xa3, 0xb1, 0xb5, 0x9d, 0x14, 0x8d, 0xcd, 0xc2, 
-	0x19, 0x79, 0x31, 0xc6, 0xc3, 0x2, 0x5a, 0xee, 0xfe, 0x4e, 
-	0x88, 0x2b, 0xa1, 0xd8, 0x59, 0x16, 0x29, 0x5, 0x3b, 0xbe, 
-	0x5a, 0xf7, 0x91, 0x82, 0x9b, 0xca, 0x6a, 0x4b, 0x20, 0x73, 
-	0xd9, 0x81, 0xea, 0xe8, 0x19, 0xe7, 0x9d, 0x77, 0x5e, 0xbb, 
-	0xcc, 0x31, 00, 0xbe, 0x40, 0xde, 0xcc, 0x34, 0xb0, 0x61, 
-	0x2a, 0x80, 0x8e, 0x81, 0x9d, 0x96, 0x29, 0x7e, 0x88, 0xc0, 
-	0xa4, 0xa7, 0x1b, 0x33, 0x6, 0xd0, 0xb9, 0xd5, 0x38, 0x33, 
-	0xf, 0x33, 0x1d, 0x81, 0xb0, 0x36, 0xb7, 0x60, 0x18, 0xdc, 
-	0x8, 0xc, 0x3e, 0x16, 0x22, 0x4, 0xb, 0x93, 0x91, 0x90, 
-	0x74, 0x80, 0xce, 0x1e, 0x75, 0x56, 0x73, 0xd1, 0x36, 0x5a, 
-	0x8, 0xa, 0x7, 0x1e, 0x6a, 0x5d, 0x2f, 0xe1, 0x4c, 0x34, 
-	0xf2, 0xfd, 0xcd, 0x65, 0x39, 00, 0xaf, 0xb4, 0x65, 0xd3, 
-	0x7, 0x2a, 0xb2, 0x60, 0x16, 0xe, 0x54, 0x84, 0x8f, 0xf0, 
-	0xe, 0x5e, 0x19, 0xd0, 0x80, 0x8e, 0xdf, 0xe, 0x9d, 0x4e, 
-	0x1a, 0x9e, 0x7b, 0xdc, 0x3f, 0x31, 0xb0, 0xdd, 0xb7, 0x84, 
-	0x95, 0x3a, 0x3, 0xfc, 0xa2, 0x8b, 0x2e, 0xfa, 0x9c, 0xee, 
-	0xf9, 0x57, 0x79, 0x2f, 0x9c, 0x99, 0x8, 0xf2, 0x87, 0xc7, 
-	0x59, 0xb9, 0x10, 0xdf, 0xa4, 0xbe, 0xa9, 0x7e, 0xc6, 0xe8, 
-	0xad, 0x47, 0x6e, 0x3e, 0x6e, 0xd7, 0xf5, 0xdf, 0x1c, 0xb3, 
-	0xf5, 0xe8, 0x65, 0x1, 0xd8, 0x2c, 0xa0, 0xb1, 0xeb, 0xc, 
-	0xcd, 0xad, 0x1d, 0x68, 0x8a, 0x6b, 0x21, 0x4d, 0x3b, 0xd1, 
-	0x4, 0x69, 0x85, 0x59, 0x60, 0x97, 0x30, 0xc7, 0x21, 0xc8, 
-	0xd0, 0x11, 0xda, 0xc0, 0xf2, 0x9b, 0xfe, 0x67, 0x65, 0xd1, 
-	0xd5, 0x8, 0x39, 0xfe, 0x5f, 0x7b, 0x67, 0x1e, 0x5c, 0xd7, 
-	0x71, 0xa5, 0xf7, 0xb, 0xe0, 0x1, 0xe0, 0x6, 0x92, 0x20, 
-	0x40, 0x6c, 0x24, 0x48, 00, 0x24, 0x41, 0x82, 0x4, 0x37, 
-	0x8b, 0xa2, 0x64, 0x49, 0xb4, 0x68, 0xda, 0x96, 0x97, 0xb1, 
-	0x34, 0x96, 0x34, 0xce, 0xb8, 0x94, 0xc4, 0x55, 0xb2, 0xa3, 
-	0xd8, 0x71, 0xca, 0x51, 0x2a, 0x35, 0x95, 0x54, 0x92, 0xf9, 
-	0xc3, 0xc9, 0x1f, 0xae, 0xa4, 0x52, 0xe5, 0xd4, 0x68, 0x92, 
-	0x4a, 0x55, 0x2a, 0xa9, 0x91, 0xe3, 0xd8, 0x9e, 0x29, 0xc7, 
-	0x56, 0x79, 0xd1, 0xd8, 0x9e, 0x19, 0xcb, 0x9e, 0xd1, 0x6e, 
-	0x8b, 0xa2, 0x24, 0x52, 0x5c, 0xc0, 0xd, 0x20, 0x9, 0x82, 
-	0x24, 0xb8, 0x8a, 0x8b, 0x40, 0xac, 0xf9, 0x7e, 0x7d, 0xdf, 
-	0x7, 0x36, 0x1e, 0x1f, 0x48, 0x80, 0x4, 0x41, 0x68, 0x8a, 
-	0xd, 0xf4, 0x3b, 0xdd, 0x7d, 0xfb, 0xf6, 0xed, 0x3e, 0x7d, 
-	0xbe, 0x3e, 0xbd, 0xdd, 0xbe, 0xd7, 0xfd, 0x19, 0x1f, 0x1a, 
-	0xae, 0x9b, 0xdc, 0x8d, 0x45, 0xb8, 0xf7, 0xde, 0x7b, 0x1, 
-	0xca, 0x1c, 0xad, 0xc7, 0x3e, 0xac, 0x35, 0xf0, 0x7e, 0x75, 
-	0x71, 0x61, 0xea, 0x6e, 0x59, 0x18, 0x68, 0x50, 0x9b, 0xa9, 
-	0xf8, 0xdd, 0x25, 0xe7, 0xbb, 0xd8, 0x3f, 0xdf, 0xb4, 0x69, 
-	0xd3, 0x63, 0x5a, 0xd6, 0xb8, 0x5f, 0x5d, 0xf2, 0xe9, 0xde, 
-	0xd0, 0xaf, 0x38, 0x63, 0x36, 0x31, 0xb0, 0x11, 0x10, 0x83, 
-	0xdb, 0x2, 0xc2, 0xf5, 0x58, 0x80, 0x70, 0x1b, 0xe8, 0x6, 
-	0x38, 0xda, 0x1b, 0x61, 0x43, 0x70, 0xb1, 0x1a, 0x37, 0x86, 
-	0x75, 0x58, 0x6d, 0xb6, 0x18, 0x4, 0xe0, 0x1a, 0x97, 0xf, 
-	0x35, 0x36, 0x36, 0xfe, 0xbd, 0x3c, 0xa3, 0x7c, 0xac, 0x8c, 
-	0xa6, 0x57, 0xd3, 0xde, 0xde, 0x3e, 0xa8, 0x79, 0x96, 0x2, 
-	0x36, 0xa2, 0x8, 0xe0, 0x85, 0xac, 0xc1, 0xc3, 0x37, 0x40, 
-	0xd, 0x4f, 0xd, 0x5e, 0xa8, 0xdd, 0x5c, 0x37, 0xb8, 0xd, 
-	0x68, 0x83, 0x1a, 0xea, 0xfa, 0x71, 0xbd, 0x91, 0x1f, 0xc2, 
-	0xc6, 0x6b, 0x18, 0xa, 0x68, 0xaf, 0x78, 0x8f, 0x40, 0x88, 
-	0xec, 0xf9, 0x4d, 0x48, 0x64, 0xd, 0xb, 0xb2, 0x6c, 0x91, 
-	0x45, 0x1e, 0x40, 0xf8, 0xb2, 0x4c, 0x71, 0xe1, 0x63, 0x95, 
-	0x6b, 0x2b, 0x57, 0xd7, 0x6c, 0xac, 0x3d, 0x5d, 0x77, 0x77, 
-	0xed, 0x49, 0x4d, 0x9e, 0x65, 0x92, 0xec, 0xb, 0x21, 0x52, 
-	0x51, 0x7a, 0x29, 0x24, 0xec, 0x2f, 0x23, 0x7e, 0xaa, 0xb5, 
-	0xb3, 0x4b, 0x5f, 0x7a, 0xce, 0xa8, 0x68, 0x4d, 0x91, 0xcf, 
-	0xd, 0xe9, 0x1f, 0x2d, 0xc2, 0x78, 0xcd, 0x94, 00, 0x37, 
-	0x99, 0x7e, 0xf0, 0xc1, 0x7, 0x1, 0xf8, 0x3c, 0x75, 0xd1, 
-	0x1f, 0x7e, 0xf6, 0xd9, 0x67, 0xe9, 0xa6, 0xfd, 0x40, 0xc1, 
-	0xef, 0xca, 0x1a, 0xd4, 0x44, 0x43, 0x8b, 0xdb, 0x50, 0x5a, 
-	0x18, 0x56, 0xa8, 0x23, 0x8d, 0xff, 0x48, 0x1a, 0xfc, 0xeb, 
-	0x3f, 0xfc, 0xe1, 0xf, 0xff, 0x91, 0x26, 0xd3, 0x4a, 0x35, 
-	0xf6, 0x76, 0x9c, 0x31, 0x53, 0x4, 0x3, 0x23, 0x86, 0x8f, 
-	0x59, 0x8b, 0x5b, 0xd0, 00, 0xb3, 0x5, 0x13, 0x90, 0x63, 
-	0xd, 0x72, 0x6d, 0x7e, 0x29, 0x94, 0x10, 0x27, 0x9c, 0x87, 
-	0xad, 0x61, 0xc7, 0x10, 0x5d, 0x4b, 0x69, 0xf2, 0x70, 0xf6, 
-	0xd9, 0x64, 0x6e, 0x88, 0x19, 0x33, 0x23, 0x26, 0x38, 0xa2, 
-	0x1a, 0x6a, 0xf6, 0x5f, 0x3, 0xe4, 0xf0, 0x76, 0x1f, 0x5b, 
-	0x7b, 0x19, 0x57, 0xb, 0x7c, 0xe1, 0xb4, 0x98, 0x5c, 0xd0, 
-	0x1a, 0xd0, 0xa6, 0xf0, 0x38, 0xb6, 0x34, 0xac, 0xf8, 0xd, 
-	0xe8, 0x7c, 0x8d, 0xb1, 0xeb, 0x72, 0x3c, 0x45, 0x61, 0x5, 
-	0x84, 0xef, 0x66, 0x6b, 0x1f, 0xc6, 0xf3, 0x9a, 0x47, 0x79, 
-	0x56, 0xf7, 0x1a, 0xd4, 0x6e, 0x25, 0x52, 0x70, 0x5e, 0x1, 
-	0x38, 0xd8, 0x69, 0x29, 0x2c, 0x29, 0xfc, 0x7, 0xea, 0x8a, 
-	0xaf, 0xa9, 0xdd, 0x50, 0x7d, 0x7e, 0xd1, 0x83, 0xb, 0x8f, 
-	0xf, 0xf6, 0x9, 0xd8, 0x61, 0x56, 0x9c, 0xf9, 0x6d, 0xad, 
-	0x69, 0x93, 0xe, 0x2b, 0x59, 0xf4, 0xab, 0x1, 0xb5, 0xe4, 
-	0xc, 0x19, 0xb, 0xee, 0x6b, 0x1, 0x56, 0xe2, 0x48, 0x5c, 
-	0xc6, 0xda, 0x44, 0x2b, 0xd0, 0x2e, 0xc4, 0x54, 0xdc, 0x45, 
-	0xc6, 0x68, 0xa6, 0xc, 0xb8, 0xc9, 0xef, 0x43, 0xf, 0x3d, 
-	0xc4, 0x6e, 0xaa, 0x2a, 0x55, 0xd8, 0xa3, 0xdf, 0xfe, 0xf6, 
-	0xb7, 0x8b, 0xd4, 0xc2, 0xb3, 0x6, 0xfe, 0x76, 0x9e, 0xb2, 
-	0xa4, 0x48, 0xc, 0xc5, 0x4e, 0x39, 0x24, 0xd, 0xfe, 0x7f, 
-	0xf4, 0x16, 0x5a, 0xa7, 0xce, 0xbd, 0xfa, 0x37, 0xda, 0x91, 
-	0xc6, 0x81, 0xc, 0xae, 0x94, 0x3c, 0xb7, 0xe7, 0xf, 0xa, 
-	0xcc, 0x34, 0xf3, 0x15, 0x25, 0x16, 0x1c, 0x84, 0x29, 0xb6, 
-	0x80, 0x99, 0x7d, 0xe8, 0xc4, 0xc1, 0x8d, 0xc0, 0xe5, 0x82, 
-	0x1c, 0x3f, 0x71, 0xa0, 0xd2, 0xa, 0xf4, 0x32, 0x42, 0x3c, 
-	0x4d, 0xbc, 0x71, 0x38, 0x44, 0xd0, 0x46, 0xac, 0x95, 0xcb, 
-	0x86, 0x99, 0x76, 0x9e, 0xff, 0x41, 0x37, 0x8, 0x2e, 0x1a, 
-	0x9a, 0xad, 0xbb, 0x2, 0x4c, 0x98, 0xed, 0x46, 0x4b, 0xb, 
-	0xe0, 0x41, 0x4b, 0xc3, 0x2f, 0x8f, 0x9d, 0x71, 0x3, 0x62, 
-	0xf3, 0xf, 0x1e, 0xe6, 0x82, 0x9a, 0x6b, 0xbe, 0x6e, 0x5e, 
-	0x1b, 0xd8, 0x50, 0x78, 0x6, 0xc5, 0x98, 0x8e, 0x97, 0x87, 
-	0x1a, 0x16, 0xc, 0xea, 0xb5, 0xd0, 0x7e, 0xf5, 0x2a, 0xfe, 
-	0x4c, 0xeb, 0xe9, 0xaf, 0xe8, 0x7e, 0x2a, 0xc2, 0x96, 0xe4, 
-	0xac, 0xb9, 0x63, 0x80, 0xaf, 0x55, 0x57, 0xfc, 0xf1, 0xaa, 
-	0x75, 0xf3, 0x57, 0x57, 0xaf, 0x9f, 0x7f, 0xb1, 0xe1, 0x13, 
-	0xd, 0x47, 0x87, 0xb4, 0xdc, 0x25, 0xd0, 0x32, 0xc6, 0xd6, 
-	0x59, 0x68, 0xa2, 0x4c, 0xa0, 0x65, 0x15, 0x50, 0x94, 0x5e, 
-	0x9a, 0x2e, 0xbf, 0xd7, 0x30, 0x41, 0x16, 0x14, 0x27, 0xc8, 
-	0xa4, 00, 0x9e, 0x96, 0xf5, 0x1a, 0x37, 0xe4, 0xb9, 0x34, 
-	0xa5, 0xc0, 0x4d, 0xfe, 0xb4, 0x45, 0x95, 0xa, 0xae, 0x54, 
-	0x45, 0x3e, 0xfa, 0x9d, 0xef, 0x7c, 0xa7, 0x48, 0x42, 0xc1, 
-	0x4e, 0x9f, 0xdf, 0x45, 0x79, 0x77, 0x97, 0x88, 0x20, 0xdc, 
-	0x74, 0xd3, 0x83, 0xd5, 0xdb, 0x39, 0xbf, 0xd5, 0x96, 0xd5, 
-	0x3f, 0x96, 0x80, 0xfd, 0x3b, 0xb5, 0xc0, 0x65, 0xea, 0xee, 
-	0x67, 0x6e, 0xa4, 0xc2, 0x3, 0x43, 0x25, 0x34, 0xf9, 0xc6, 
-	0xe2, 0x5c, 0x43, 0xc8, 0xc, 0x6c, 0xb, 0x1c, 0x7e, 0xb, 
-	0x21, 0x60, 0x46, 0x50, 0xd, 0x6c, 0xfc, 0xb6, 0x74, 0x43, 
-	0x35, 0x89, 0x54, 0xc8, 0xe6, 0xc, 0xe2, 0x4b, 0x7b, 0xf, 
-	0xea, 0xed, 0xb3, 0x21, 0xe, 0x39, 0x14, 0xe8, 0x87, 0xd4, 
-	0xeb, 0x8, 0x5d, 0x77, 0xba, 0xa9, 0x1f, 0x14, 0xc3, 0xbb, 
-	0xd4, 0x7c, 0x3e, 0x48, 0x75, 0x35, 0xa8, 0xb2, 0x15, 0xa8, 
-	0xd7, 0x45, 0xf7, 0x9b, 0xf, 0x14, 0x84, 0x43, 0x17, 0xc5, 
-	0xa3, 0x61, 0x2d, 0x6d, 0xb0, 0x9a, 0x57, 0xa6, 0xf0, 0x2b, 
-	0xb6, 0x8e, 0x47, 0x18, 0x3c, 0xa6, 0x1e, 0x9, 0x83, 0xe2, 
-	0x77, 0x1d, 0xc5, 0x74, 0xbc, 0xfc, 0xa2, 0x7e, 0x5f, 0x7b, 
-	0xed, 0x35, 0xbe, 0xbc, 0xf9, 0xbe, 0x5e, 00, 0xf9, 0xdf, 
-	0x9a, 0xef, 0xd9, 0xa7, 0x34, 0xe8, 0x1d, 0x5a, 0xa6, 0x90, 
-	0x2f, 0x60, 0x68, 0x99, 0x3, 0xe4, 0x98, 0x75, 0x99, 0xe9, 
-	0x99, 0x47, 0xab, 0xd7, 0x57, 0xad, 0xae, 0xbb, 0xbb, 0xe6, 
-	0xec, 0xe2, 0x2d, 0x8b, 0xbb, 0xe8, 0x8a, 0x73, 0xc0, 0x61, 
-	0x78, 0x2f, 0x9b, 0xe3, 0x15, 0xd4, 0x1, 0x94, 0x1c, 0x32, 
-	0xc7, 0x9d, 0x4e, 0xa2, 0x5d, 0x69, 0x2c, 0x94, 0xe5, 0xeb, 
-	0x20, 0x9b, 0x27, 0x44, 0xc0, 0xb6, 0x9b, 0xe0, 0xf1, 0x98, 
-	0x29, 0x7, 0x6e, 0x32, 0xcf, 0x36, 0x55, 0x75, 0xd7, 0xca, 
-	0x55, 0x91, 0x8f, 0x7e, 0xf7, 0xbb, 0xdf, 0x2d, 0xd2, 0xdb, 
-	0x59, 0x8c, 0x7f, 0xdc, 0xa2, 0x9a, 0xf9, 0x30, 0x1a, 0xa6, 
-	0xe3, 0x67, 0x56, 0x33, 0xcc, 0x6c, 0x4a, 0x5b, 0x1c, 0x52, 
-	0x57, 0xf0, 0x3f, 0x8, 0x4c, 0x5f, 0x97, 0xb0, 0xd5, 0x6b, 
-	0x1c, 0x5e, 0x42, 0xd7, 0xef, 0x46, 0xc, 0x82, 0x14, 0xba, 
-	0x50, 0xba, 0x19, 0x81, 0xc2, 0x4d, 0xc5, 0x78, 0x9d, 0x9c, 
-	0x30, 0x2c, 0x42, 0x7, 0x90, 0x11, 0x44, 0x40, 0x8c, 0xf6, 
-	0x31, 0x98, 0x9, 0x8f, 0x41, 0x6e, 0x37, 0x20, 0x27, 0x8e, 
-	0x40, 0x11, 0xf6, 0xaf, 0xf3, 0x2c, 0x5e, 0x21, 0x94, 0x16, 
-	0x1f, 0xd4, 0x2c, 0x7b, 00, 0x3, 0x63, 0x40, 0x8e, 0x36, 
-	0x56, 0xfa, 0x9c, 0x6e, 0x1a, 0x9e, 0x9d, 0xbf, 0x1c, 0x63, 
-	0x10, 0x96, 0xfc, 0x37, 0xe6, 0xd, 0xd5, 0xbc, 0x47, 0xde, 
-	0x70, 0x2, 0xe1, 0x1, 0x79, 0xd7, 0x30, 0x8, 0xde, 0x73, 
-	0x4a, 0x6a, 0x1, 0x65, 0x52, 0x63, 0x3a, 0x24, 0x6d, 0x5d, 
-	0xa0, 0xf2, 0xb0, 0xb7, 0x19, 0x10, 0x86, 0x32, 0xa0, 0xa5, 
-	0x29, 0x9b, 0x41, 0x6a, 00, 0xc3, 0x37, 0xbb, 0xe1, 0x1f, 
-	0x6e, 0x68, 0x6c, 0xcd, 0xdf, 0x98, 0x92, 0x7, 0xd2, 0xbb, 
-	0x19, 0x50, 0x93, 0x6, 0x73, 0x25, 0x7a, 0x43, 0x8c, 0xc3, 
-	0xc, 0x8f, 0x6b, 0xa5, 0xe3, 0x7b, 0xf2, 0xf3, 0x9e, 0x3, 
-	0xdb, 0x99, 0xbd, 0xa5, 0x19, 0x79, 0x32, 0xc8, 0x61, 0x30, 
-	0x16, 0xbc, 0xdc, 0x55, 0x3c, 0xa3, 0xf8, 0xb3, 0xd5, 0xeb, 
-	0xab, 0x5b, 0xeb, 0x1f, 0x58, 0x78, 0x52, 0xf6, 0x44, 0xe8, 
-	0x8a, 0xf, 0x14, 0x48, 0x5b, 0x6b, 0x93, 0x7f, 0xd0, 0xd8, 
-	0x4c, 0xa2, 0x69, 0x9, 0x2c, 0xf4, 0xcc, 0xc3, 0xb8, 0x5a, 
-	0xf7, 0x66, 0xe9, 0x18, 0xab, 0x2a, 0xe0, 0x5f, 0x3f, 0xa1, 
-	0x9c, 0xea, 0x2f, 0x50, 0xe6, 0x34, 0xb, 0x22, 0x63, 0x34, 
-	0x53, 0x12, 0xdc, 0xe4, 0xfd, 0x81, 0x7, 0x1e, 00, 0x24, 
-	0xb3, 0x55, 0xa8, 0x47, 0xf5, 0xa5, 0xce, 0x8c, 0x26, 0xa6, 
-	0x40, 0xe8, 0xaf, 0x65, 0xd, 0x64, 0xa2, 0x61, 0xc, 0x70, 
-	0x26, 0xe1, 0xb0, 0x3d, 0xd2, 0x24, 0xa7, 0x5e, 0x7f, 0xfd, 
-	0xf5, 0xff, 0xaa, 0x43, 0x17, 0xfe, 0x50, 0x1f, 0x5c, 0xbf, 
-	0x57, 0x6f, 0x2, 0x15, 0xb3, 0x71, 0xe6, 0x46, 0x8c, 0x85, 
-	0x28, 0x6, 0x39, 0x61, 0x30, 0xdb, 0x9a, 0x1d, 0x37, 0x2, 
-	0x88, 0xd0, 0x9b, 0x22, 0xac, 0x80, 0xd7, 0xe0, 0xce, 0x5, 
-	0x35, 0xd7, 0x88, 0x4f, 0xb8, 0xa9, 0xf2, 0x5d, 0xc0, 0xbb, 
-	0xc9, 0xea, 0x26, 0x86, 0x74, 0x88, 0x73, 0xe2, 0xc4, 0xc9, 
-	0xa1, 0xb9, 0xe5, 0xb5, 0x43, 0x99, 0xcc, 0xfb, 0xa1, 0xa2, 
-	0x8b, 0x8a, 0x52, 0x20, 0xe8, 0x39, 0xe1, 0xa8, 0x62, 0xcd, 
-	0xda, 0x49, 0xea, 0x8a, 0x74, 0xc8, 0xc2, 0xa2, 0xbc, 0xc5, 
-	0x3b, 0x71, 0xe2, 0x48, 0xf2, 0xbd, 0xff, 0xab, 0x3, 0x48, 
-	0x4, 0xb8, 0x35, 0x6b, 0x37, 0x25, 0xf7, 0x6f, 0x7a, 0x64, 
-	0x38, 0xde, 0xab, 0x2f, 0x3f, 0x9f, 0xbc, 0xf3, 0xf6, 0x8b, 
-	0xc1, 0xff, 0xc4, 0x3f, 0xfe, 0xf7, 0x49, 0x65, 0xd5, 0xc2, 
-	0xe4, 0xc2, 0xb9, 0x23, 0xc9, 0x25, 0x8d, 0x14, 0xc9, 0xd3, 
-	0x40, 0x7f, 0xfa, 0xa6, 0x5c, 0x5f, 0x5f, 0xbf, 0x8e, 0x40, 
-	0xd6, 0x3c, 0x82, 0xfc, 0x83, 0x7a, 0x4d, 0xb4, 0xa8, 0xe0, 
-	0x12, 0xc3, 0x8c, 0x21, 0xe5, 0xbd, 0x90, 0x53, 0x72, 0xb2, 
-	0x7c, 0x8, 0xf9, 0x31, 0x48, 0xd, 0x48, 0x3, 0x17, 0xbf, 
-	0x81, 0x4b, 0x1c, 0xfc, 0x8e, 0xeb, 0x70, 0x87, 0x41, 0xcd, 
-	0x53, 0x68, 0x6c, 0xe1, 0x3d, 0x86, 0xb0, 0x1b, 0x35, 0xc, 
-	0x1b, 0x74, 0x70, 0x22, 0x4b, 0xaf, 0xdb, 0xa5, 0xb1, 0x7f, 
-	0xa1, 0xfc, 0xb3, 0xd, 0x9a, 0x7d, 0x16, 0xbc, 0xa8, 0x4, 
-	0x45, 0x8e, 0x58, 0x2, 0x43, 0xd6, 0x90, 0x2f, 0x1e, 0x8a, 
-	0x32, 0x79, 0xa0, 0x78, 0x76, 0xf1, 0x96, 0x9a, 0xb5, 0x35, 
-	0xab, 0x1a, 0x1e, 0x5c, 0x74, 0x6c, 0xc1, 0x87, 0x17, 0x9c, 
-	0x4, 0xd8, 0x3a, 0xf3, 0x4c, 0x67, 0xa0, 0xd1, 0x1d, 0xbf, 
-	0x62, 0x81, 0xa5, 0xe2, 0x5f, 0xd1, 0xda, 00, 0x55, 0x75, 
-	0x30, 0x66, 0x43, 0x7c, 0xa5, 0x90, 0x8e, 0xb9, 0x71, 0xd3, 
-	0xa0, 0x8d, 0xf9, 0xee, 0x10, 0xf1, 0x96, 0x80, 0x5b, 0x63, 
-	0xac, 0xa0, 0x71, 0xb4, 0xa1, 0x83, 0xcf, 0xe1, 0x8c, 0x2f, 
-	0x47, 0x51, 0x6c, 0x5e, 0xcb, 0x13, 0xc0, 0x59, 0xbb, 0xfe, 
-	0xfd, 0xe7, 0x9e, 0x7b, 0xae, 0x44, 0xdd, 0x27, 0x10, 0xfa, 
-	0x33, 0x59, 0x98, 0x4f, 0xab, 0x4a, 0x71, 0xd1, 0xdc, 0x54, 
-	0x4, 0x2d, 0x2e, 0x15, 0x43, 0x99, 0x8a, 0x54, 0x61, 0x45, 
-	0x3a, 0xac, 0xee, 0x7, 0xd, 0xd, 0xd, 0x47, 0x74, 0x72, 
-	0xc6, 0xe3, 0x3a, 0x66, 0xa7, 0x88, 0x83, 0x17, 0x2d, 0x1c, 
-	0x8a, 0x33, 0x2e, 0x13, 0x83, 0xdc, 0x82, 0x65, 0x90, 0xe3, 
-	0x47, 0xc0, 0x11, 0x4a, 0x2c, 0xc0, 0xb0, 0x3f, 0x80, 0x24, 
-	0x2, 0x71, 0xc, 0xea, 0x18, 0xf8, 0x6, 0xb8, 0xe3, 0x43, 
-	0x49, 0x6b, 0xe6, 0xcc, 0xe9, 0x5, 0xdd, 0x27, 0xba, 0x92, 
-	0xb2, 0xd9, 0x75, 0x49, 0xe3, 0x92, 0xd6, 0x64, 0x61, 0xfd, 
-	0x72, 0x85, 0x67, 0x74, 0x4c, 0x71, 0x66, 0xb0, 0xa4, 0x58, 
-	0x27, 0x8e, 0x66, 0x8a, 0x95, 0x8d, 0xb4, 0x87, 0xa1, 0xb3, 
-	0xbc, 0xc2, 0x3a, 0x4b, 0xe8, 0x9, 0xd2, 0x21, 0x94, 0x29, 
-	0x2e, 0x9e, 0x99, 0x1c, 0xdc, 0xff, 0xae, 0xd6, 0x8f, 0x4f, 
-	0x6a, 0x79, 0xee, 0x48, 0xb2, 0x66, 0xdd, 0x47, 0x83, 0xf6, 
-	0x1d, 0x1c, 0x18, 0x1c, 0xfa, 0xf5, 0xb, 0x3f, 0x48, 0x3a, 
-	0x8f, 0xec, 0x2d, 0xa8, 0xad, 0x5b, 0xa2, 0x33, 0xe4, 0xde, 
-	0x1b, 0xaa, 0xa9, 0x5d, 0x99, 0xf4, 0x57, 0x2e, 0x2f, 0xe0, 
-	0xb0, 0x7, 0xf2, 0xd6, 0xdb, 0xdb, 0x37, 0x4, 0x78, 0xdf, 
-	0xbf, 0xd4, 0x53, 0xd0, 0xd5, 0xd5, 0x56, 0x70, 0xfc, 0xc4, 
-	0x5e, 0x7d, 0xf6, 0xe2, 0x74, 0x52, 0x5d, 0x35, 0x2b, 0xcc, 
-	0x21, 0x50, 0x6e, 0x3, 0xd5, 0x65, 0x27, 0x2c, 0x6, 0x2b, 
-	0x6e, 0xae, 0x39, 0xcc, 0x94, 0x30, 0xdf, 0xeb, 0x38, 0x84, 
-	0x71, 0xbf, 0x29, 0x6e, 0x2c, 0x7c, 0xce, 0xb5, 0xe3, 0xaa, 
-	0xbc, 0x6c, 0x64, 0x1a, 0x68, 0xc9, 0x4, 0x9f, 0x13, 0x1e, 
-	0x90, 0x8c, 0xfe, 0xb5, 0xc6, 0xd7, 0x6f, 0xe9, 0x92, 0xf, 
-	0xfb, 0x80, 0xf2, 0x32, 0x93, 0x1, 0x8e, 0x4c, 0x21, 0x5b, 
-	0x20, 0x12, 0x99, 0xfa, 0xf4, 0xb4, 0x79, 0xd3, 0x36, 0xd6, 
-	0xac, 0xae, 0x5a, 0xd1, 0xb8, 0xa5, 0xb1, 0xb3, 0x76, 0x43, 
-	0xed, 0xe9, 0x1, 0x80, 0xcd, 0xac, 0xb8, 0xa6, 0x5e, 0x14, 
-	0x33, 0xb5, 0x9a, 0x19, 0x57, 0x97, 0x9c, 0x59, 0xf1, 0x30, 
-	0x81, 0x26, 0x1a, 0x30, 0xa9, 0x47, 0x3, 0x55, 0x25, 0x73, 
-	0xc5, 0xf4, 0xf7, 0xf4, 0x17, 0xca, 0x16, 0x65, 0x66, 0x64, 
-	0x6, 0x32, 0xaa, 0xcf, 0x2b, 0x57, 0x1c, 0x53, 0xe5, 0xe, 
-	0x7f, 0x69, 0x2b, 0xe1, 0xd0, 0x38, 0xde, 0xb5, 0xdc, 0x13, 
-	0xa, 0x6e, 0x4, 0x9a, 0x23, 0x7f, 0xb4, 0x9c, 0x10, 0xb4, 
-	0x96, 0x36, 0x2, 0x24, 0xea, 0x16, 0x27, 0x7a, 0x97, 0x3a, 
-	0x54, 0xe, 0x19, 0x81, 0xc1, 0x54, 0xd4, 0x58, 0x8d, 0x40, 
-	0xc9, 0xb9, 0xd9, 0x1a, 0x82, 0x4e, 0x7f, 0x44, 0xb3, 0x99, 
-	0x65, 0x9a, 0xf8, 0xe0, 0xd3, 0x2f, 0x9c, 0x30, 0x49, 0x6b, 
-	0x1b, 0x3, 0x1c, 0xc0, 0x53, 0x1e, 0x9a, 0xf4, 0xe1, 0x3e, 
-	0x8c, 0xc6, 0x7e, 0x2f, 0x6b, 0xec, 0x77, 0x58, 0xa0, 0x7a, 
-	0x42, 0x5a, 0xb1, 0x4a, 0x5d, 0xfe, 0x92, 0x1b, 0xd5, 0xe2, 
-	0x4a, 0x77, 0x58, 0xc8, 0x28, 0x2b, 0x82, 0xe7, 0x30, 0xdc, 
-	0xe, 0x43, 0x58, 0x1, 0x7, 0x42, 0x1a, 0x83, 0x95, 0x30, 
-	0x4, 0x9a, 0x78, 0x6, 0x79, 0xc, 0x6a, 0xc2, 0xb8, 0x16, 
-	0xdf, 0x43, 0xb7, 0x76, 0xda, 0xb4, 0x53, 0x1a, 0xcf, 0x1e, 
-	0x4f, 0xda, 0xf, 0xaa, 0xc0, 0x2a, 0x71, 0x6d, 0x5d, 0x93, 
-	0x3e, 0xe7, 0x33, 0x58, 0x20, 0x80, 0xea, 0xc0, 0x5, 0xde, 
-	0xdb, 0x4e, 0x35, 0x82, 0xf2, 0xa0, 0x31, 0x3, 0x9b, 0x19, 
-	0x91, 0x2d, 0x6b, 0x89, 0x82, 0xa4, 0xa1, 0x69, 0xdd, 0xd0, 
-	0xdb, 0xdb, 0xfe, 0xa6, 0xa0, 0xeb, 0xe8, 0x1, 0x9, 0xf7, 
-	0x1b, 0x83, 0xd3, 0xa7, 0xcf, 0x29, 0xb8, 0x78, 0xfe, 0x6c, 
-	0x41, 0xe7, 0x91, 0x7d, 0x21, 0xff, 0x2, 0x75, 0x81, 0xf8, 
-	0x54, 0xc0, 0xe1, 0xd, 0xfd, 0x7d, 0xea, 0x49, 0xe8, 0x21, 
-	0xd4, 0x93, 0x48, 0xa8, 0xa8, 0x33, 0xa7, 0xe, 0x25, 0xdd, 
-	0x27, 0xf6, 0x49, 0x63, 0x9f, 0x4b, 0xea, 0xea, 0x2b, 0x12, 
-	0x8e, 0xa0, 0x32, 00, 0x63, 0x8a, 0x3b, 0x6, 0xaa, 0xfd, 
-	0xe, 0xcb, 0xa5, 0xbe, 0x97, 0x70, 0xf8, 0x67, 0x3f, 0xf2, 
-	0x81, 0x3f, 0x17, 0xd0, 0xe3, 0x91, 0x9b, 0x50, 0xb0, 0xe8, 
-	0x47, 0x93, 0xb3, 0xe1, 0xac, 0x33, 0xcd, 0x9, 0x9c, 0x92, 
-	0xb6, 0xfe, 0x99, 0x86, 0x6e, 0x9c, 0x77, 0x6, 0x98, 0x1, 
-	0xb5, 0xcf, 0x3c, 0xc3, 0x8f, 0x45, 0x96, 0xdc, 0x2d, 0xe7, 
-	0xdb, 0x62, 0xf, 0xcf, 0xae, 0x2f, 0x5b, 0x33, 0x7f, 0xc5, 
-	0xfc, 0xa6, 0x65, 0x9f, 0x59, 0xba, 0xbf, 0xa2, 0xb9, 0xe2, 
-	0xa2, 0x78, 0xaf, 0xb3, 0xcf, 0x38, 0xb5, 0x54, 0xa0, 0xe, 
-	0x5d, 0x71, 0xb1, 0x67, 0x58, 0xf6, 0xd4, 0xda, 0xa6, 0x48, 
-	0xa4, 0x55, 0x42, 0xe8, 0xaf, 0xca, 0x7a, 0xcf, 0xf9, 0xcb, 
-	0x99, 0xae, 0xad, 0xc7, 0xaa, 0x4e, 0xef, 0x3d, 0x55, 0x31, 
-	0xbf, 0xa5, 0xb2, 0xbb, 0x66, 0x5d, 0xcd, 0xc9, 0x92, 0x59, 
-	0x25, 0x3c, 0x33, 0x35, 0xba, 0x8f, 0x5b, 0xc3, 0x8d, 0x61, 
-	0xe4, 0x9e, 0xca, 0x9a, 0x2f, 0x8f, 0x85, 0x4e, 0x18, 0xb8, 
-	0xe9, 0xea, 0x68, 0xa6, 0x3a, 0xf9, 0xcd, 0x6f, 0x7e, 0xc3, 
-	0xee, 0x2c, 0xc6, 0x64, 0xe1, 0x65, 0xfa, 0xef, 0x7f, 0xff, 
-	0xfb, 0x2c, 0x1, 0x71, 0x2e, 0x19, 0x93, 0x17, 0x41, 0xa8, 
-	0x59, 0xd7, 0xe6, 0x7c, 0xb5, 0xb1, 0x1a, 0xcd, 0x7c, 0x27, 
-	0x4f, 0x3d, 0xf5, 0x54, 0x46, 0x63, 0xd2, 0x4f, 0x68, 0x27, 
-	0x5a, 0xb9, 0xce, 0x54, 0x9b, 0xa5, 0x7b, 0x1, 0x38, 0xe3, 
-	0x24, 0xb7, 0x78, 0xb4, 0xb2, 0x68, 0x6e, 0xc, 0x92, 0x8d, 
-	0xe5, 0x1a, 0xbb, 0xc6, 0xda, 0x5f, 0x79, 0xe5, 0x95, 0x3f, 
-	0xd1, 0x33, 0x1f, 0xd4, 0x98, 0xf0, 0x93, 0xda, 0x38, 0x83, 
-	0x16, 0xd7, 0x8b, 0x36, 0x41, 0x76, 0x15, 0x65, 0xfc, 0x6, 
-	0xe1, 0xc3, 0x18, 0xd0, 0xb8, 0x49, 0x8f, 0x70, 0x87, 0x41, 
-	0xd, 0x56, 0x53, 0x80, 0x8b, 0x1b, 0x90, 0xdb, 0xd, 0xe8, 
-	0x63, 0x40, 0xdb, 0x4d, 0x38, 0x71, 0x99, 0x5c, 0x2b, 0x2d, 
-	0xed, 0xd6, 0x39, 0x69, 0xdd, 0xc9, 0xe1, 0x43, 0xbb, 0x4, 
-	0x82, 0xc2, 0xa4, 0x6e, 0xc1, 0x92, 0x64, 0xb0, 0x50, 0xd, 
-	0x4c, 0x16, 0xdc, 0x34, 0xc, 0x87, 0x3a, 0x76, 0x86, 0x12, 
-	0x7, 0x70, 0xaa, 0xf8, 0xe4, 0xa7, 0xa6, 0x76, 0x59, 0xb2, 
-	0x68, 0xf1, 0xea, 0x2, 0x81, 0x9b, 0x2c, 0x26, 0x6d, 0xbb, 
-	0xdf, 0x28, 0x5c, 0xb6, 0xfc, 0xde, 0xa4, 0xbd, 0x7d, 0x87, 
-	0x7c, 0x69, 0x3, 0xb0, 0x70, 0x51, 0x6b, 0x78, 0xe, 0xd7, 
-	0x1, 0x58, 0x38, 0xd0, 0x87, 0xab, 0x1a, 0x26, 0x9e, 0x3a, 
-	0xd9, 0x9e, 0x9c, 0x3e, 0xd5, 0x9e, 0x14, 0x67, 0x2e, 0x24, 
-	0x8b, 0xea, 0x6b, 0x12, 0xf1, 0x7f, 0x4, 0x10, 0xd, 0x48, 
-	0x68, 0xae, 0x35, 0x98, 0x1d, 0x27, 0xd7, 0xef, 0x70, 0x78, 
-	0x86, 0xc5, 0x8f, 0x31, 0x6f, 0xc9, 0xbf, 0x6d, 0xb8, 0x70, 
-	0x3, 0x3f, 0xd6, 0xd6, 0x7a, 0x41, 0x69, 0x40, 0x3d, 0x9b, 
-	0x97, 0xf4, 0x35, 0x91, 0x37, 0x94, 0xc, 00, 0xe6, 0x50, 
-	0x5, 0x80, 0x8d, 0x92, 0xb0, 0xd6, 0x36, 0xb0, 0x3d, 0xee, 
-	0x46, 0x91, 0x7c, 0xae, 0x62, 0x79, 0x45, 0xab, 0x6c, 0xd5, 
-	0x8a, 0xdf, 0x5f, 0xb1, 0x67, 0x76, 0x5d, 0xd9, 0x65, 0xb6, 
-	0x94, 0xa6, 0x5f, 0x7, 0xb9, 0xd2, 0xd, 0xd7, 0x90, 0x1a, 
-	0x4d, 0x2d, 0x18, 0x5e, 0xe9, 0x8a, 0x23, 0x5e, 0x41, 0x63, 
-	0xe3, 0xc8, 0x1a, 0xdd, 0x9b, 0x5c, 0x3a, 0x75, 0xa9, 0x74, 
-	0xef, 0xcf, 0xf7, 0x35, 0x9d, 0x3b, 0x7c, 0xae, 0x7c, 0xde, 
-	0xd2, 0x8a, 0xee, 0xc3, 0xaf, 0x1c, 0x59, 0x7c, 0xfe, 0xe8, 
-	0x85, 0xb2, 0xa6, 0x87, 0x9a, 0x3a, 00, 0x78, 0xef, 0x85, 
-	0x5e, 0x1a, 0x8d, 0xa4, 0x74, 0x76, 0x69, 0xaf, 0xc6, 0xf7, 
-	0x7c, 0x8c, 0x20, 0xbc, 0x15, 0x36, 0x5e, 0x78, 0x4f, 0x8, 
-	0xb8, 0xa5, 0x11, 0x93, 0x1f, 0xfd, 0xe8, 0x47, 0xec, 0x34, 
-	0x4a, 0xf4, 0xfe, 0x74, 0xb0, 0x9a, 0xcc, 0x4a, 0x3e, 0xff, 
-	0xf9, 0xcf, 0xf3, 0x59, 0xdd, 0x44, 0x1f, 0x1b, 0x8, 0x54, 
-	00, 0xb, 0x13, 0x19, 0x54, 0xd8, 0x78, 0xc0, 0xd, 0x5f, 
-	0x38, 0xb8, 0x4f, 00, 0x67, 0xd2, 0x69, 0x83, 0x34, 0xc7, 
-	0x5c, 0x1d, 0xb8, 0x58, 0xa6, 0x49, 0x10, 0x3e, 0xb2, 0xd6, 
-	0x21, 0xb, 0xb0, 0xdd, 0x3d, 0x97, 0xf3, 0xa, 0xb0, 0xb3, 
-	0xe1, 0xb4, 0x88, 0xfd, 0x9a, 0x4d, 0xff, 0x95, 0xf2, 0xb5, 
-	0x5b, 0x40, 0xf8, 0x82, 0xdc, 0xd5, 0xd2, 0xe2, 0xbc, 0xfb, 
-	0x4d, 0xfc, 0x1b, 0x36, 0x16, 0x44, 0x84, 0xc8, 0x6e, 0x28, 
-	0xa0, 0x44, 0x58, 0xa1, 0xf8, 0x53, 0x4d, 0x78, 0x5, 0xec, 
-	0xb9, 0xe0, 0xe6, 0xba, 0xc1, 0x6c, 0x70, 0x73, 0xaf, 0xdd, 
-	0x6c, 0xce, 0x41, 0x8b, 0x1f, 0x3e, 0x72, 0x5c, 0x20, 0x4e, 
-	0x1, 0xbe, 0x60, 0xc1, 0xb2, 0x61, 0xcd, 0xdd, 0x7b, 0xf9, 
-	0x52, 0xf2, 0x93, 0xe7, 0x9e, 0x19, 0x51, 0x8e, 0x4c, 0xa6, 
-	0x38, 0x79, 0xea, 0x9f, 0x3d, 0xa3, 0x86, 0x60, 0xa9, 0xd6, 
-	0xd9, 0x2b, 0x35, 0x79, 0x77, 0x32, 0x39, 0xda, 0xb9, 0x3b, 
-	0x59, 0xd9, 0xba, 0x29, 0x39, 0x71, 0x7c, 0x5f, 0x88, 0x5b, 
-	0x55, 0xdd, 0xa8, 0xf, 0xb, 0xce, 0x47, 0x8, 0xa5, 0xf4, 
-	0x25, 0x51, 0x81, 0xa6, 0xa0, 0xef, 0x3e, 0xde, 0x9e, 0x9c, 
-	0xea, 0x3e, 0x90, 0x94, 0x16, 0x5f, 0x48, 0x1a, 0x1b, 0xeb, 
-	0x13, 0xf6, 0xf, 0x50, 0x26, 0xea, 0x8f, 0x32, 0x19, 0x9c, 
-	0xd0, 0x5c, 0x77, 0xae, 0x3f, 0x8e, 0x6f, 0xb7, 0xd3, 0xc1, 
-	0x6f, 0x10, 0x43, 0x31, 0xf6, 0x7, 0xcf, 0xd, 0xfe, 0xe4, 
-	0xd1, 0xd6, 0xdd, 0x4a, 0x2a, 0x6, 0x36, 0xa0, 0x36, 0xb0, 
-	0xe9, 0x8e, 0x63, 0x3d, 0xa9, 0x56, 0xab, 0x7c, 0x7d, 0xb6, 
-	0x6a, 0x4d, 0xd5, 0x4a, 0x69, 0xea, 0x99, 0xad, 0x9f, 0x5f, 
-	0xb5, 0xab, 0xb4, 0x4c, 0xe7, 0x75, 0x86, 0x59, 0x71, 0xb6, 
-	0x95, 0x66, 0x81, 0x2d, 0xad, 0xd, 0xf6, 0x74, 0x9f, 0xec, 
-	0xb5, 0x35, 0x76, 0xff, 0xe5, 0xfe, 0xc2, 0xd3, 0xfb, 0xce, 
-	0xcc, 0xde, 0xf3, 0x7c, 0xdb, 0xb2, 0xa2, 0x92, 0xa2, 0x81, 
-	0xbb, 0x9e, 0xfc, 0xd0, 0x5b, 0xd3, 0xca, 0xa7, 0x5d, 0xbe, 
-	0x74, 0xf2, 0xd2, 0xd1, 0x5d, 0x3f, 0xde, 0xd3, 0xbc, 0xf3, 
-	0x2f, 0xde, 0x6d, 0xa9, 0x5c, 0x55, 0x75, 0xe2, 0xf0, 0x4b, 
-	0x87, 0x17, 0x6b, 0xbe, 0xa3, 0xa8, 0x69, 0x4b, 0xe3, 0xbe, 
-	0xa6, 0x8f, 0x36, 0x76, 0xd2, 0x64, 0xc0, 0x23, 0xfd, 0xe8, 
-	0x31, 0x63, 0x37, 0x37, 0x5, 0x6e, 0x84, 0x4f, 0xdd, 0x64, 
-	0x4e, 0x27, 0xd, 0x82, 0xa9, 0xcf, 0xf1, 0x86, 0x17, 0x42, 
-	0x34, 0x1, 0xc6, 0xd8, 0x26, 0xd1, 0x7a, 0x73, 0x58, 0xda, 
-	0xe2, 0x4b, 0x95, 0x1a, 0x33, 0xf3, 0x6, 0x55, 0x58, 0x32, 
-	0x51, 0x37, 0x79, 0xec, 0x39, 0x8c, 0x62, 0xb2, 0xe9, 0xe3, 
-	0xc9, 0x27, 0x9f, 0xe4, 0x2b, 0x97, 0x4b, 0xb5, 0x8f, 0xfb, 
-	0xf, 0x35, 0x93, 0x3e, 0x4b, 0xcb, 0x17, 0xbf, 0x54, 0x94, 
-	0xdf, 0xca, 0x2, 0x6e, 0x40, 0x8c, 0x64, 0xa2, 0xb1, 0xa1, 
-	0x58, 0xc2, 0x7c, 0xad, 0x4f, 0x5a, 0xbc, 0xff, 0xd5, 0x57, 
-	0x5f, 0xfd, 0x53, 0x1d, 0xe4, 0xf0, 0x11, 0xe5, 0xe7, 0xa1, 
-	0x89, 0xd0, 0xe2, 0x4a, 0x7f, 0x58, 0x18, 0x1, 0x29, 0x6, 
-	0xe1, 0xc6, 0x6d, 0x1, 0x86, 0x57, 0x6, 0x38, 0xd7, 0xec, 
-	0x7, 0xbc, 0xee, 0xaa, 0xe3, 0x36, 0xa0, 0x89, 0x6b, 0x3f, 
-	0x61, 0x58, 0x3, 0xfc, 0x60, 0x7b, 0x67, 0xd2, 0xd1, 0xbe, 
-	0x33, 0xe1, 0x4, 0x96, 0x5, 0x1a, 0x83, 0xd3, 0x2d, 0x2f, 
-	0x2e, 0xc9, 0xb7, 0xbd, 0x35, 0x3d, 0x55, 0x85, 0x7b, 0x97, 
-	0x2d, 0xbf, 0x27, 0xd9, 0xfa, 0xbb, 0xe7, 0x93, 0xae, 0xa3, 
-	0x6d, 0x92, 0x91, 0x2, 0x6d, 0xff, 0xdc, 0x1d, 0xf2, 0xb9, 
-	0x74, 0x59, 0x98, 0xd7, 0x18, 0x1, 0x6e, 0x4a, 0x70, 0xfc, 
-	0xd8, 0x7e, 0xd, 0x5, 0xf6, 0x27, 0x33, 0xa6, 0xbd, 0xaf, 
-	0x86, 0xb8, 0x89, 0x59, 0xfc, 0x11, 0xc0, 0x46, 0xd8, 0xb0, 
-	0x6, 0xb1, 0xfd, 0x71, 0x58, 0xee, 0x35, 0xf3, 0xc2, 0x71, 
-	0xc8, 0x80, 0x41, 0x1c, 0xd3, 0x90, 0xb1, 0x9b, 0xf8, 0x81, 
-	0x77, 0x8c, 0xad, 0xd1, 0xd6, 0xfa, 0x32, 0xcd, 0xcb, 0x1a, 
-	0x5f, 0xb3, 0x94, 0xa, 0x70, 0xad, 0xad, 0x4d, 0x1, 0xb6, 
-	0xc3, 0xe9, 0xf5, 0x19, 0xd8, 0x77, 0x15, 0x4f, 0x2f, 0x7e, 
-	0x50, 0x13, 0x67, 0xcd, 0xea, 0x32, 0xf, 0xae, 0xfc, 0x83, 
-	0x95, 0xbb, 0x8a, 0x74, 0xfe, 0x94, 0xba, 0xe2, 0x1, 0xd4, 
-	0x41, 0x6b, 0x73, 0xce, 0xb8, 0xda, 0xed, 00, 0xf2, 0xb4, 
-	0xd7, 0xad, 0x16, 0x2a, 0xc, 0x63, 0x28, 0xa, 0xfc, 0x4c, 
-	0xfb, 0xd5, 0x4a, 0x14, 0xd3, 0xf3, 0x5e, 0x4f, 0xe6, 0xc8, 
-	0x6b, 0x9d, 0xd5, 0x1d, 0x2f, 0xb6, 0x37, 0x56, 0xb6, 0xcc, 
-	0x3f, 0xde, 0xf2, 0xc8, 0x8a, 0x3, 0x67, 0x3a, 0xce, 0x96, 
-	0xb5, 0xbf, 0x74, 0x68, 0xc1, 0xc2, 0xbb, 0xeb, 0x8e, 0x7d, 
-	0xe8, 0x9f, 0xac, 0xdf, 0xde, 0xf6, 0xb3, 0xb6, 0x86, 0x3, 
-	0x7f, 0x7d, 0x60, 0x59, 0x5f, 0x4f, 0x5f, 0x89, 0xce, 0x54, 
-	0x2b, 0xbc, 0x78, 0xe2, 0xd2, 0x4c, 0x7a, 0x51, 0xa4, 0xc7, 
-	0xbc, 0xca, 0x78, 0xcd, 0xd, 0x83, 0x9b, 0x75, 0x4d, 0xc6, 
-	0xd6, 0xfa, 0xe8, 0x59, 0xa2, 0x75, 0xda, 0x44, 0xe7, 0x8c, 
-	0xb3, 0x1c, 0x92, 0x3c, 0xf3, 0xcc, 0x33, 0x41, 0x4b, 0xb3, 
-	0xd4, 0x20, 0xed, 0x18, 0xbe, 0x78, 0xf8, 0xf8, 0xe3, 0x8f, 
-	0x27, 0x5f, 0xfb, 0xda, 0xd7, 0x2, 0xf0, 0x35, 0xb9, 0x15, 
-	0xbe, 0xe5, 0xcc, 0xfd, 0xec, 0xda, 0x1a, 0xaf, 0x61, 0x99, 
-	0x49, 0x2f, 0x9b, 0xd0, 0x3d, 0xac, 0x96, 0xb0, 0x7f, 0x41, 
-	0x43, 0x81, 0xa, 0xbd, 0x70, 0x50, 0xa7, 0x74, 0x7e, 0x2e, 
-	0x4b, 0x45, 0x1, 0xe4, 0x7c, 0xc0, 0x6, 0xe4, 0x9e, 0x1, 
-	0xed, 0x55, 0x6f, 0xe3, 0x5, 0xe5, 0x77, 0x17, 0x5a, 0x5c, 
-	0x5d, 0xb5, 0xaa, 0xcd, 0x9b, 0x37, 0x97, 0x4c, 0xc4, 0x71, 
-	0xc6, 0x16, 0x52, 0x4, 0xc, 0x13, 0x6a, 0x5a, 0x14, 0x81, 
-	0x6, 0x64, 0x31, 0xb0, 0xed, 0x37, 0xe8, 0xf1, 0x63, 0xed, 
-	0x8f, 0xc1, 0xed, 0xb0, 0xc6, 0xc6, 0xc6, 0xa0, 0xc1, 0xf7, 
-	0xee, 0x6d, 0x57, 0xd7, 0xfa, 0x5d, 0x9d, 0x7a, 0x9a, 0x9, 
-	0x93, 0x6c, 0x73, 0xe6, 0xcc, 0x4b, 0xfe, 0xf9, 0xd3, 0x7f, 
-	0x82, 0xfa, 0x55, 0x1a, 0x59, 0x2d, 0x2c, 0xa1, 0x80, 0x5f, 
-	0xa4, 0xb9, 0xaa, 0xf5, 0xbe, 00, 0xee, 0xfe, 0xfe, 0xde, 
-	0x64, 0xcf, 0xee, 0x97, 0x93, 0x4b, 0x17, 0xcf, 0x5, 0x81, 
-	0x59, 0xbe, 0xe2, 0xa, 0xb8, 0x19, 0xa7, 0x73, 0x70, 0x62, 
-	0x57, 0xd7, 0x3e, 0x69, 0xf6, 0xbd, 0xc9, 0xcc, 0xe9, 0x3d, 
-	0xc9, 0x8a, 0xe5, 0xcb, 0x12, 0xbd, 0x46, 0x1b, 0xca, 0x61, 
-	00, 0x53, 0xa6, 0x5c, 0x77, 0xc, 0xe4, 0xf8, 0x3a, 0xf1, 
-	0x62, 0x3f, 0xee, 0xd8, 0x9a, 0x47, 0x84, 0x4d, 0x84, 0xe1, 
-	0x55, 0x51, 0xd, 0xd, 0xf9, 0xac, 0x8f, 0xc7, 0xd6, 0x68, 
-	0x6b, 0xc0, 0x1c, 0x6b, 0x6c, 0x83, 0x1b, 0x79, 0xc1, 0x2, 
-	0x6a, 0xc6, 0xd9, 0x20, 0xe8, 0x33, 0x33, 0xe7, 0xcf, 0x5c, 
-	0x5f, 0xb5, 0xaa, 0xaa, 0xb9, 0x7e, 0xe3, 0x82, 0x13, 0x4d, 
-	0x1f, 0x5f, 0xd2, 0x5, 0x80, 0xd5, 0x9d, 0x2e, 0x4c, 0xfa, 
-	0x86, 0xb4, 0x96, 0x2d, 0x50, 0x87, 0xc9, 0x33, 0xa1, 0x8d, 
-	0x57, 0x39, 0xd3, 0x93, 0x54, 0x86, 0x27, 0xcf, 0x54, 0xe3, 
-	0x20, 0x7b, 0xb8, 0x34, 0xda, 0x63, 0xae, 0x6e, 0xf8, 0xc5, 
-	0x52, 0x69, 0xeb, 0xc6, 0x33, 0x1d, 0x67, 0x2a, 0x96, 0x7d, 
-	0xaa, 0xb9, 0x4d, 0x93, 0x72, 0xa7, 0x3b, 0x5e, 0x3a, 0x54, 
-	0x7b, 0xe0, 0x57, 0x7, 0x9a, 0xfb, 0x2e, 0xf7, 0x15, 0x77, 
-	0xef, 0xec, 0xae, 0x59, 0xf2, 0xb1, 0x25, 0xfb, 0x5a, 0x3e, 
-	0xdb, 0xd2, 0x3e, 0xb7, 0xbe, 0xfc, 0xbd, 0x83, 0xbf, 0x39, 
-	0xd8, 0x74, 0xf1, 0xe4, 0x45, 0x86, 0x9e, 0x52, 0x4d, 0xea, 
-	0xef, 0x17, 0x6b, 0xa2, 0x91, 0xb6, 0x22, 0x4, 0x8c, 0xfd, 
-	0xe7, 0x86, 0xc0, 0x2d, 0x30, 0x84, 0x6e, 0x38, 0x6b, 0xb0, 
-	0x74, 0xc3, 0x5, 0xc, 0xe, 0x9b, 0x4b, 0xd4, 0x55, 0xe6, 
-	0xb5, 0xbd, 0xa0, 0x89, 0x18, 0x27, 0x32, 0xd3, 0xaa, 0xb5, 
-	0x44, 0x9, 0x4b, 0x17, 0xaf, 0x77, 0x26, 0x4f, 0x3c, 0xf1, 
-	0x44, 0xa2, 0x83, 0x14, 0x60, 0x7e, 0xa2, 0x97, 0x44, 0x38, 
-	0x34, 0x31, 0x34, 0xc, 0x63, 0xcf, 0x6e, 0x1a, 0x13, 0x81, 
-	0xe1, 0x83, 0x83, 0x4a, 0x6b, 0x86, 0x1a, 0x88, 0x87, 0x1b, 
-	0x1a, 0x1a, 0x6a, 0x75, 0xe8, 0x5d, 0x85, 0x84, 0xf8, 0x27, 
-	0x8a, 0x71, 0x5c, 0x16, 0x64, 0x1, 0x66, 0x6b, 0x70, 0xdc, 
-	0x23, 0xc0, 0x8d, 0x5f, 0x5a, 0xbc, 0x57, 0x5a, 0xfc, 0xbf, 
-	0x69, 0x88, 0xf0, 0x80, 0xdc, 0x9f, 0xd0, 0xae, 0xb1, 0x42, 
-	0xcd, 0x7, 0x70, 0x9a, 0x8b, 0x2e, 0xdf, 0x9c, 0xb1, 00, 
-	0x93, 0x8a, 0x81, 0xe, 00, 0x30, 0x5c, 0x23, 0xcc, 0x40, 
-	0x27, 0x2c, 0x6, 0x75, 0xec, 0x36, 0xa8, 0xe3, 0x30, 0xe6, 
-	0x34, 00, 0xed, 0xee, 0xdd, 0xfb, 0x93, 0x83, 0x7, 0xb6, 
-	0xb, 0x68, 0x45, 0x1a, 0x57, 0xaf, 0x8, 0xcb, 0x61, 0x8c, 
-	0xe9, 0x98, 0x64, 0xe3, 0x2f, 0xbd, 0x27, 0x4d, 0xbb, 0xb6, 
-	0xae, 0x31, 0x99, 0x5f, 0xb5, 0x48, 0x13, 0x63, 0x87, 0x92, 
-	0xdf, 0xbd, 0xf6, 0x53, 0x1e, 0x99, 0xd4, 0x2f, 0x6a, 0x51, 
-	0x2f, 0xa8, 0x82, 0xf6, 0x40, 0xf9, 0x49, 0x1b, 0x84, 0xa3, 
-	0x47, 0xda, 0x92, 0x63, 0x47, 0xf7, 0x24, 0xb3, 0xa6, 0x5f, 
-	0xd6, 0x5b, 0x7b, 0x2b, 0x2, 0xb0, 0x63, 0x80, 0x72, 0x5f, 
-	0x2e, 0xb0, 0x29, 0x4f, 0xbe, 0x30, 0x87, 0x9b, 0x17, 0x50, 
-	0x4c, 0xae, 0x3f, 0x4, 0xde, 0xe4, 0xf, 0x1b, 0x67, 0x54, 
-	0x97, 0xfd, 0xd2, 0xd4, 0x83, 0xda, 0xea, 0xca, 0xd8, 0x7a, 
-	0xab, 0x92, 0x4, 0xc4, 0x80, 0xd7, 0x60, 0x36, 0x35, 0xa8, 
-	0xd1, 0xd6, 0x80, 0x9a, 0x46, 0x9f, 0x95, 0x98, 0xdf, 0xab, 
-	0x5c, 0x5e, 0xb9, 0xb2, 0x62, 0x59, 0x45, 0x6d, 0xf3, 0xa7, 
-	0x96, 0x1d, 0xac, 0x5e, 0x55, 0xf5, 0x1e, 0x87, 0x2c, 0xa8, 
-	0xc9, 0xd5, 0x7, 0x3, 0x78, 0xf9, 0x23, 0x29, 0x3a, 0xf8, 
-	0x77, 0x1d, 0x75, 0x7b, 0xfe, 0x72, 0x4f, 0x8b, 0xe2, 0xc6, 
-	0x58, 0x1b, 0x76, 0x2f, 0xfd, 0xd8, 0x92, 0x3, 0x8b, 0xee, 
-	0x5b, 0x44, 0x83, 0x92, 0x30, 0x1b, 0x7e, 0x6a, 0xff, 0xe9, 
-	0xb2, 0x5d, 0x3f, 0xd9, 0xd5, 0xac, 0xba, 0x1e, 0xbc, 0xfb, 
-	0xa9, 0xbb, 0xb7, 0x31, 0xa6, 0xde, 0xf1, 0x83, 0x9d, 0xcd, 
-	0x5d, 0xef, 0x74, 0x2d, 0xcc, 0x14, 0x17, 0xd, 0x94, 0x4c, 
-	0x2b, 0xee, 0x1d, 0xe8, 0x19, 0x28, 0x6e, 0xfb, 0xcb, 0xb6, 
-	0x96, 0xf3, 0x5d, 0xe7, 0xcb, 0x56, 0x3c, 0xdc, 0x7c, 0x70, 
-	0x6e, 0xfd, 0xec, 0xed, 0x3b, 0x7f, 0xbc, 0x6b, 0xd9, 0x99, 
-	0x83, 0x67, 0xe6, 0x75, 0xb7, 0x9d, 0x9a, 0x33, 0x7f, 0x79, 
-	0xe5, 0xd9, 0xa2, 0x69, 0x82, 0x6a, 0x96, 0x7f, 0xa4, 0x3d, 
-	0x16, 0x33, 0x6e, 0x70, 0x6b, 0x39, 0x2a, 0xd1, 0x37, 0xba, 
-	0xc3, 0xc4, 0x18, 0x80, 0x55, 0xf7, 0x36, 0xd1, 0x9e, 0xee, 
-	0xd0, 0xed, 0x66, 0xe2, 0x8c, 0x71, 0xa1, 0xd, 0x15, 0x8e, 
-	0x70, 0xb2, 0xed, 0x92, 0x31, 0x38, 0xda, 0x5d, 0x7b, 0xbf, 
-	0x43, 0x17, 0x8f, 0xc9, 0x37, 0xd2, 0xf9, 0xd2, 0x97, 0xbe, 
-	0x94, 0x34, 0x36, 0x36, 0xfa, 0x96, 0x71, 0x51, 0xbe, 0x49, 
-	0xf6, 0xd5, 0xaf, 0x7e, 0xb5, 0x50, 0x1a, 0x77, 0xa3, 0xba, 
-	0xfe, 0x75, 0x5a, 0xd3, 0xae, 0x52, 0xcb, 0xfd, 0x63, 0x25, 
-	0xb2, 0x53, 0xd6, 00, 0x87, 0xa2, 0xcd, 0xb1, 0x80, 0xdd, 
-	0xcb, 0x66, 0x80, 0x3d, 0x74, 0xc3, 0xd4, 0xc3, 0x78, 0x41, 
-	0xcb, 0x22, 0x5b, 0xa5, 0xc9, 0xb7, 0x48, 0x38, 0xee, 0xd5, 
-	0x67, 0x68, 0x38, 0x6, 0x99, 0x3, 0x20, 0x14, 0xe5, 0xe6, 
-	0x8d, 0x85, 0x99, 0x94, 0xe0, 0x7, 0x7c, 0xb1, 0x31, 0x8f, 
-	0x4c, 0xb9, 0x6e, 0x40, 0x13, 0x27, 0x6, 0x75, 0xec, 0x37, 
-	0xc0, 0x77, 0xbc, 0xbb, 0x27, 0x39, 0xb0, 0xff, 0x6d, 0xa5, 
-	0x59, 0x90, 0x2c, 0x6e, 0x58, 0x29, 0xe4, 0x29, 0x7d, 0xb4, 
-	0xb7, 0xa4, 0x31, 0x4d, 0x2b, 0x4d, 0x63, 0x40, 0xa0, 0x6f, 
-	0x5d, 0xfd, 0x40, 0xf2, 0xeb, 0x5f, 0x7d, 0x4f, 0xf3, 0x1e, 
-	0xc8, 0xb8, 0x36, 0x46, 0xaf, 0xba, 0x2f, 0xcc, 0x6e, 0xd3, 
-	0x83, 0xa4, 0x6b, 0x7f, 0xe4, 0xc8, 0xee, 0x30, 0x26, 0x9f, 
-	0x35, 0xb3, 0x37, 0x59, 0xb3, 0x7a, 0x55, 0xd8, 0x3, 0xef, 
-	0xbc, 0xba, 0xc, 0x50, 0xc2, 0xae, 0xe7, 0x27, 0xfd, 0x38, 
-	0x4e, 0xec, 0xc7, 0x3d, 0x51, 0x6, 0x5, 0x22, 0xf9, 0x1a, 
-	0xd0, 0x7c, 0xcf, 0x90, 0xe4, 0x6f, 0x9b, 0x7a, 0x64, 0xaf, 
-	0xaa, 0x37, 0xc6, 0x24, 0x99, 0x41, 0x4d, 0x61, 0x9d, 0xa9, 
-	0xd8, 0xd0, 00, 00, 0x16, 0x5a, 0x49, 0x44, 0x41, 0x54, 
-	0xd1, 0xda, 0xd6, 0xdc, 0xf8, 0x63, 0x6d, 0x8d, 0x1c, 0xf0, 
-	0x56, 0xd7, 0xc7, 0x6b, 0xd7, 0xd5, 0xb6, 0x94, 0x37, 0x95, 
-	0x17, 0xb7, 0xfe, 0x41, 0xeb, 0xce, 0x99, 0x15, 0x33, 0xfb, 
-	0x83, 0x96, 0xe, 0x5a, 0x3b, 0xab, 0xb1, 0xb5, 0xcc, 0x75, 
-	0xe1, 0xd8, 0x85, 0xb2, 0x53, 0x6d, 0xa7, 0x16, 0xea, 0x9e, 
-	0xbc, 0xa6, 0x76, 0x6d, 0xed, 0x31, 0xba, 0xd0, 0x7d, 0x97, 
-	0xfa, 0x8a, 0xda, 0x5f, 0xea, 0xa8, 0x39, 0xf8, 0xb7, 0x7, 
-	0x1b, 0x35, 0xcb, 0x7e, 0xa2, 0xf5, 0xf1, 0xd6, 0xfd, 0x67, 
-	0x3b, 0xce, 0xce, 0xdc, 0xf6, 0x9d, 0xdf, 0xb6, 0xa, 0xc4, 
-	0x73, 0x8b, 0x4b, 0x8b, 0x91, 0xc3, 0x60, 0x14, 0x1d, 0x19, 
-	0x4d, 0x8e, 0x6e, 0x3d, 0x5a, 0x7f, 0xb1, 0xfb, 0xe2, 0xcc, 
-	0x95, 0x9f, 0x5b, 0xb9, 0xf7, 0xee, 0x7f, 0xba, 0x71, 0xfb, 
-	0xae, 0xe7, 0x76, 0x35, 0xee, 0xf8, 0x8b, 0x1d, 0xad, 0x8d, 
-	0x9b, 0x1b, 0xf7, 0x2f, 0xfd, 0xd8, 0xd2, 0xc3, 0x69, 0xec, 
-	0xb1, 0xff, 0x8e, 0x1b, 0xdc, 0x8c, 0x97, 0x39, 0x71, 0x84, 
-	0xae, 0x36, 0xc2, 0x43, 0x37, 0x1c, 0x4d, 0xcc, 0xcb, 0x12, 
-	0xf9, 0xc0, 0x40, 0x5, 0x33, 0xa6, 0x14, 0x78, 0x82, 0xb6, 
-	0x16, 0x78, 0x92, 0x2f, 0x7e, 0xf1, 0x8b, 0x61, 0xec, 0xac, 
-	0x13, 0x28, 0xc3, 0x3e, 0xe4, 0xb1, 0x67, 0xf7, 0xea, 0x98, 
-	0x74, 0xa5, 0xbf, 0xfc, 0xe5, 0x2f, 0x27, 0xd2, 0xdc, 0xb, 
-	0xb5, 0xc4, 0xf5, 0xf, 0xd5, 0x68, 0x54, 0xa9, 0x9b, 0xfe, 
-	0x37, 0x8a, 0x89, 0xa5, 0x12, 0xd, 0x6a, 0x80, 0x8d, 0xa5, 
-	0x32, 0xb1, 0x6, 0x79, 00, 0xb8, 0xf2, 0xdf, 0xab, 0x5e, 
-	0xc7, 0x4f, 0xd4, 0xe3, 0x78, 0x85, 0x19, 0x75, 0x9, 0x4b, 
-	0xab, 0x66, 0xd4, 0xb, 0x34, 0xcb, 0x5f, 0xc4, 0x2c, 0xef, 
-	0x44, 0x19, 0xb, 0x3c, 0xe9, 0xc1, 0x3f, 0xfc, 0x50, 0x1b, 
-	0xc0, 0x8c, 0x49, 0x81, 0x99, 0x2, 0x1d, 0xbf, 0x41, 0x6e, 
-	0x37, 0x94, 0x46, 0x11, 0xde, 0x6e, 0xdf, 0xbe, 0x2b, 00, 
-	0x1c, 0xa1, 0x6a, 0x6a, 0x5c, 0xa5, 0x93, 0x8d, 0xaf, 0x6, 
-	0xb7, 0x4e, 0xca, 0x4e, 0x56, 0xaf, 0xf9, 0x48, 00, 0x37, 
-	0xf7, 0xb2, 0x19, 0x66, 0xa5, 0xc0, 0x1d, 0xc6, 0xfb, 0x7a, 
-	0x3c, 0x33, 0xed, 0x9d, 0x87, 0x77, 0x26, 0x65, 0x33, 0x2f, 
-	0x27, 0xeb, 0xd6, 0xad, 0xe, 0x3d, 0x2c, 0xe2, 0xc5, 0xf9, 
-	0xcd, 0x5, 0x35, 0xd7, 0x1d, 0x96, 0x1b, 0x97, 0xfb, 0x72, 
-	0xc3, 0x42, 0xc0, 0x4, 0xfd, 0x30, 0xf9, 0xa8, 0x7a, 0x1e, 
-	0x64, 0x6c, 0xad, 0x89, 0xb3, 0x36, 0xf5, 0x22, 0x5f, 0x14, 
-	0xd0, 0x99, 0xcc, 0x89, 0x41, 0x8d, 0x3b, 0x6, 0x36, 0x9a, 
-	0x3a, 0x1e, 0x5b, 0x53, 0xb1, 0x9f, 0xa6, 0x1b, 0x5e, 0xbd, 
-	0xba, 0x7a, 0x69, 0x4d, 0x6b, 0xcd, 0x7b, 0x2d, 0x8f, 0xb4, 
-	0xec, 0xcf, 0x14, 0x6b, 0xb2, 0x3a, 0xcc, 0x88, 0x73, 0x98, 
-	0x61, 0x76, 0xf2, 0x2c, 0x5d, 0xee, 0x2a, 0xac, 0x5b, 0x5f, 
-	0x77, 0x4a, 0x1d, 0x64, 0xc6, 0xf0, 0xf4, 0x8e, 0xa, 0x34, 
-	0xb3, 0x5d, 0x22, 0x4d, 0xde, 0x1a, 0x3e, 0x5, 0xa4, 0xa0, 
-	0xd9, 0xb5, 0xb3, 0x2f, 0xc2, 0x93, 0xce, 0x37, 0x3b, 0x2b, 
-	0x1, 0x76, 0xf3, 0x27, 0x9b, 0xf7, 0x2e, 0xdc, 0xb8, 0xf0, 
-	0x64, 0xc7, 0xcb, 0x1d, 0xd5, 0x6d, 0xbf, 0x68, 0x6b, 0xd6, 
-	0x78, 0xba, 0x38, 0x6, 0x36, 0xe9, 0xd8, 0xe8, 0x8, 0xe4, 
-	0xc1, 0x73, 0x87, 0xce, 0xcd, 0xdb, 0xf6, 0xec, 0xb6, 0xb5, 
-	0xcd, 0x9f, 0x6a, 0xde, 0xbb, 0xe6, 0xb, 0x6b, 0xf6, 0x1d, 
-	0x7a, 0xe5, 0xd0, 0xb9, 0xfd, 0xbf, 0xde, 0xdf, 0x34, 0x63, 
-	0xde, 0x8c, 0x4b, 0xe3, 0xed, 0x98, 0x8f, 0x5b, 0x6a, 0xd1, 
-	0x96, 0xd2, 0x6c, 0x61, 0xad, 0xf3, 0x5b, 0xdf, 0xfa, 0x16, 
-	0x3b, 0x7d, 0xc2, 0x44, 0xf, 0xdd, 0x44, 0x1b, 0xb, 0x68, 
-	0x2c, 0x18, 0x8, 0x11, 0x5d, 0x27, 0xb4, 0x3c, 0x42, 0xc9, 
-	0xc4, 0x18, 0x63, 0x39, 0xc2, 0x6f, 0xd6, 0x90, 0x6, 0x5d, 
-	0x7c, 0x6d, 0x98, 0x99, 0xa9, 0x2e, 0xf5, 0x23, 0xca, 0x63, 
-	0x83, 0x5e, 0x1, 0x5d, 0xac, 0x71, 0x3f, 0xfd, 0xcf, 0xe, 
-	0x59, 0x83, 0xda, 0x1a, 0xfc, 0x2a, 0x70, 0x2b, 0x4e, 0x18, 
-	0x77, 0x69, 0x97, 0xd8, 0x65, 0x6d, 0x72, 0xf8, 0x73, 0x75, 
-	0xf7, 0x6b, 0xe5, 0xfe, 0x8c, 0x4, 0xa8, 0x51, 0x9b, 0x69, 
-	0x8a, 0xd0, 0xe6, 0x16, 0xd8, 0x9b, 0xcd, 0xaf, 0xef, 0x77, 
-	0x7a, 0xa6, 00, 0x1a, 0xc1, 0x88, 0x8d, 0x79, 0x19, 0x87, 
-	0x3b, 0x8c, 0x78, 0xf0, 0x92, 0xc6, 0xe7, 0xad, 0xb7, 0xdf, 
-	0x4d, 0xe, 0xec, 0x7b, 0x4b, 0x53, 0xb7, 0xd2, 0xe0, 0x8d, 
-	0xad, 0xe1, 0xc4, 0xbd, 0xb4, 0x81, 0x30, 0x40, 0xb, 0x93, 
-	0xca, 0xf9, 0x75, 0xc9, 0x9c, 0xb9, 0xf3, 0x93, 0x73, 0x67, 
-	0xbb, 0x93, 0xe5, 0x2b, 0xee, 0xd1, 0xca, 0x83, 0x56, 0x7a, 
-	0x4, 0xec, 0xc3, 0x9a, 0x9c, 0x3b, 0x7c, 0xe8, 0xdd, 0x4, 
-	0x8d, 0xfd, 0xa1, 0xf5, 0x6b, 0xc3, 0xdc, 0x88, 0xf3, 0x14, 
-	0x53, 0xdc, 0xb1, 0x9f, 0xe7, 0xe7, 0xf3, 0x3b, 0x8c, 0xeb, 
-	0x13, 0x6d, 0x28, 0x93, 0x80, 0xcc, 0x69, 0x29, 0x7c, 0xdb, 
-	0xed, 0xb0, 0x7a, 0x92, 0x7f, 0xab, 0x89, 0x51, 0x86, 0x62, 
-	0x80, 0x16, 0x30, 0xc7, 0xe0, 0xb6, 0xd6, 0xf6, 0xb5, 0xd0, 
-	0x90, 0x2b, 0xe, 0xd, 0xfb, 0xc2, 0xc2, 0x4c, 0xe1, 0xa7, 
-	0xaa, 0x5b, 0xaa, 0x57, 0x94, 0x37, 0x94, 0xcf, 0x6f, 0xfa, 
-	0x68, 0x53, 0x47, 0xfd, 0xc6, 0xfa, 0x33, 0x80, 0x94, 0xae, 
-	0xb8, 0x36, 0xa7, 0x4, 0x60, 0x3, 0xee, 0x2c, 0xc0, 0x99, 
-	0x3c, 0x2b, 0xac, 0x6c, 0xaa, 0xbc, 0x54, 0xd1, 0x58, 0xd1, 
-	0xa1, 0x7c, 0x14, 0xf4, 0xf7, 0xf6, 0x17, 0xfe, 0xd5, 0x1f, 
-	0xff, 0xd5, 0x3, 0x59, 0x60, 0x27, 0x2b, 0x1e, 0x5e, 0xb1, 
-	0x7d, 0xf1, 0x87, 0x17, 0x9f, 0x54, 0xda, 0x49, 0xe5, 0x92, 
-	0xca, 0xf7, 0x2a, 0xbe, 0x56, 0xf1, 0xe6, 0xdc, 0x45, 0x73, 
-	0x2f, 0xed, 0xfa, 0xe9, 0xae, 0xfa, 0x5d, 0xcf, 0xef, 0x6a, 
-	0x51, 0xa3, 0x31, 0x20, 0x8b, 0xec, 0x61, 0x86, 0xbb, 0xf2, 
-	0xa9, 0x37, 0xd5, 0xde, 00, 0xfc, 0xf2, 0xf9, 0xcb, 0xd3, 
-	0x76, 0xfc, 0xbf, 0x1d, 0xad, 0x6a, 0x60, 0xde, 0x6d, 0xfe, 
-	0x44, 0x73, 0x67, 0x65, 0x73, 0xe5, 0xd9, 0x92, 0x19, 0x25, 
-	0xbd, 0xba, 0x63, 0x5c, 0x5d, 0xc9, 0x71, 0x83, 0x3b, 0x5e, 
-	0x3a, 0xe2, 0x2c, 0x6f, 0xc6, 0x8d, 0x1e, 0x4b, 0x92, 0x49, 
-	0x98, 0x4f, 0x1c, 0x84, 0x11, 0x6d, 0xe, 0xa0, 0x5d, 0xd9, 
-	0xc4, 0x63, 0xa2, 0x8d, 0xee, 0x3b, 0x66, 0xa2, 0xf, 0x16, 
-	0x54, 0x57, 0x1a, 0x80, 0x17, 0x6a, 0x66, 0x7e, 0x9d, 0xc6, 
-	0xcf, 0xd, 0x1a, 0xef, 0x37, 0x4a, 0x1b, 0x3, 0xf0, 0x97, 
-	0x65, 0xa9, 0x58, 0x54, 0x24, 0x36, 0xd6, 0xde, 0x54, 0x34, 
-	0xe3, 0xae, 0xd8, 0xf6, 0x4a, 0x7b, 0x73, 0x1a, 0xc7, 0x9f, 
-	0x69, 0xe2, 0xae, 0x51, 0x1a, 0xe1, 0xf7, 0x4, 0xf8, 0x4a, 
-	0xad, 0xdd, 0xf3, 0x95, 0xd0, 0x11, 0xe5, 0xd5, 0x7d, 0x13, 
-	0x66, 0xe0, 0x93, 0x79, 0xe5, 0x44, 0xf1, 0xc3, 0xd3, 0xd8, 
-	0xc0, 0x47, 0x3, 0x1c, 0xb7, 0x1, 0xbe, 0x6d, 0xdb, 0x76, 
-	0x4d, 0x62, 0xbe, 0x15, 0xc6, 0xd0, 0x4d, 0x4b, 0x57, 0x67, 
-	0xb5, 0x7f, 0xa, 0xc0, 0x53, 0x27, 0x8f, 0xe8, 0xc4, 0x93, 
-	0x77, 0x2, 0xb0, 0x49, 0x6b, 0xc3, 0xdd, 0xf, 0x85, 0x72, 
-	0x74, 0x1c, 0x14, 0xb0, 0x3b, 0x76, 0x24, 0x65, 0xb3, 0x7a, 
-	0x93, 0xbb, 0x3e, 0xb4, 0x6e, 0xc4, 0x8e, 0xc2, 0x38, 0x2f, 
-	0x76, 0x9b, 0x92, 0x86, 0xdd, 0xa6, 0x84, 0xdd, 0x2a, 0xc3, 
-	0xe4, 0x22, 0x73, 0x3d, 0xfa, 0x52, 0x48, 0x9f, 0xea, 0xe6, 
-	0xb4, 0x7a, 0x56, 0x2f, 0x68, 0x8, 0x46, 0x57, 0x95, 0x7a, 
-	0x3, 0xbc, 0xee, 0x6e, 0x43, 0x6d, 0xd, 0x76, 0x6b, 0x6b, 
-	0x1a, 0x77, 0x98, 0xb9, 0x69, 0x46, 0xe5, 0x8c, 0xfb, 0x6b, 
-	0x5b, 0x6b, 0x97, 0x8, 0xd8, 0xfd, 0xab, 0x1f, 0x5b, 0xbd, 
-	0x43, 0x9a, 0xb1, 0x5f, 0x3c, 0x2d, 0x1c, 0x62, 0xd2, 0x2c, 
-	0xb, 0x6c, 0xf5, 0xf9, 0x34, 0x69, 0xa6, 0xf6, 0x32, 0xfb, 
-	0x3e, 0x76, 00, 0x31, 0x9d, 0x2d, 0x70, 0x29, 0xfa, 0xe2, 
-	0x7f, 0x79, 0xf1, 0x2e, 0x75, 0xb5, 0xe7, 0x2b, 0xbd, 0x64, 
-	0xf1, 0x7d, 0x8b, 0xf7, 0xdd, 0xf5, 0xc4, 0x5d, 0xfb, 0x71, 
-	0x63, 0xca, 0x17, 0x96, 0xf3, 0xec, 0x60, 0xce, 0x1e, 0x3a, 
-	0x3b, 0x87, 0x7d, 0x6b, 0xb2, 0x69, 0xb7, 0x2c, 0x5, 0xf6, 
-	0xc8, 0x4a, 0x8d, 0xc2, 0x88, 0xa7, 0xcd, 0x44, 0x19, 0xad, 
-	0x83, 0xcf, 0xd6, 0xb3, 0x3a, 0x2b, 0x1b, 0x2b, 0x2f, 0xaa, 
-	0x21, 0x72, 0xa3, 0xe0, 0x64, 0xaf, 0x4b, 0xc7, 0xd, 0xee, 
-	0x38, 0x45, 0x4, 0x2b, 0xae, 0x58, 0xba, 0x4a, 0xf7, 0xdc, 
-	0x73, 0x4f, 0xb2, 0x65, 0xcb, 0x96, 0x30, 0xe1, 0xc3, 0xd2, 
-	0x17, 0x9a, 0x9a, 0x2e, 0x39, 0x71, 0x31, 0xc4, 0x8f, 0xb5, 
-	0x50, 0x9c, 0xde, 0x44, 0xb8, 0xd9, 0x64, 0xc1, 0x38, 0x5e, 
-	0xeb, 0xeb, 0x73, 0xa5, 0x7d, 0x1f, 0xd3, 0x6e, 0xa4, 0x25, 
-	0xea, 0x5d, 0x2c, 0x15, 0x40, 0x19, 0x8b, 0x1f, 0x93, 0x5, 
-	0xcc, 0x54, 0x72, 0xac, 0xbd, 0xe3, 0x2e, 0xba, 0x41, 0x8e, 
-	0x40, 0x4c, 0xd7, 0x38, 0xbc, 0x47, 0xb6, 0x5d, 0xbd, 0x8c, 
-	0x95, 0x2a, 0xcf, 0x83, 0x5a, 0xab, 0xaf, 0xe1, 0x9c, 0x34, 
-	0x1d, 0x11, 0x55, 0xc4, 0xd2, 0xd4, 0xad, 0x36, 0xf0, 0x2b, 
-	0xe6, 0xb1, 0x9f, 0xe7, 0x30, 0x3, 0xbf, 0xa1, 0xa1, 0x21, 
-	0xf0, 0x78, 0xeb, 0xd6, 0xb7, 0xd5, 0x45, 0x7f, 0x4b, 0x2b, 
-	0xae, 0x5, 0x49, 0xd3, 0x92, 0xd5, 0x61, 0x2c, 0x4d, 0xdc, 
-	0xff, 0xfe, 0xcc, 0xd3, 0x6a, 0x58, 0x53, 0x79, 0xd3, 0xe, 
-	0xb7, 0x64, 0xe9, 0xb2, 0xf5, 0x2, 0xcb, 0x76, 0xad, 0x5c, 
-	0xbc, 0x23, 0x8d, 0x7d, 0x39, 0xd9, 0xb0, 0x61, 0xfd, 0x8, 
-	0x8d, 0xed, 0xe7, 0x40, 0xfd, 0x2c, 0xd3, 0xf8, 0xda, 0xad, 
-	0x76, 0xf3, 0xf2, 0x8c, 0xea, 0x70, 0x90, 0xf3, 0xd5, 0xa4, 
-	0x2c, 0xba, 0x35, 0xa6, 0x7e, 0x4d, 0x6f, 0xd4, 0xed, 0xd3, 
-	0x73, 0xa9, 0x1f, 0x5b, 0x3, 0x3b, 0xd6, 0xda, 0x5c, 0x23, 
-	0x9c, 0x46, 0x9d, 0xfa, 0xa5, 0xbe, 0x7, 0x24, 0x7b, 0x5f, 
-	0xa8, 0x5a, 0x59, 0xb5, 0x71, 0xee, 0xa2, 0xf2, 0xda, 0x86, 
-	0xf, 0x2f, 0xee, 0x5c, 0xfa, 0xf1, 0xe6, 0x63, 0xd2, 0xc8, 
-	0x45, 0xa1, 0x1b, 0xde, 0xaf, 0xf, 0xf2, 0xe9, 0xcd, 0x2e, 
-	0x7d, 0xc0, 0x47, 0x5a, 0x3a, 0x7c, 0x9c, 0x4f, 0xa3, 0x61, 
-	0x4e, 0x2c, 0x15, 0x3, 0x87, 0x6, 0xc5, 0x51, 0x2d, 0x69, 
-	0x7, 0x7d, 0x3b, 0x54, 0xf0, 0xfa, 0xff, 0x7c, 0xb5, 0x45, 
-	0x93, 0x62, 0x8b, 0x94, 0x66, 0x52, 0xd5, 0x52, 0xd5, 0xf9, 
-	0xc0, 0xd7, 0x37, 0x6d, 0xf7, 0xe6, 0x1f, 0xc2, 0x62, 0x53, 
-	0x98, 0x29, 0xe2, 0x93, 0x40, 0x2, 0xb3, 0x95, 0xb5, 0xfa, 
-	0xf8, 0xa5, 0x99, 0xfe, 0xd9, 0x35, 0x65, 0xe7, 0xf5, 0x9e, 
-	0xf6, 0x60, 0x7f, 0x4f, 0x5f, 0xe6, 0xc2, 0xf1, 0xb, 0xb3, 
-	0x95, 0x7, 0x75, 0xdb, 0x88, 0x17, 0x78, 0x3e, 0xa4, 0xbc, 
-	0xca, 0xb2, 0xa9, 0x8, 0xcc, 0x30, 0x63, 0x3e, 0xb2, 0x57, 
-	0x17, 0x3f, 0x23, 0x9f, 0xfb, 0xa6, 0xc0, 0x9d, 0x2f, 0x41, 
-	0x7d, 0xa0, 0x9c, 0x6f, 0x32, 0x5, 00, 0xb3, 0x6b, 0x8a, 
-	0xcf, 0xbe, 0xb0, 0xc9, 0xc5, 0xe0, 0xce, 0x77, 0xcf, 0x44, 
-	0x87, 0xf1, 0xac, 0xcd, 0x9b, 0x37, 0xb3, 0x51, 0x6, 0x2d, 
-	0xbe, 0x5e, 0xda, 0xbc, 0x41, 0x6b, 0xf1, 0xb5, 0x9a, 0x38, 
-	0xfb, 0x8f, 0x7a, 0x16, 0xc0, 0xa6, 0xb2, 0xe1, 0xb4, 0xdd, 
-	0x54, 0xbc, 0xbb, 0x6c, 0x8, 0x5, 00, 0x47, 0x50, 0x40, 
-	0x6f, 0x10, 0x20, 0xcd, 0xf8, 0xbf, 0x29, 0xbb, 0x53, 0xe3, 
-	0xfa, 0x3a, 0x8d, 0xf1, 0xee, 0xd7, 0xf7, 0xa2, 0x5a, 0x35, 
-	0x87, 0x37, 0xa4, 0xed, 0xb1, 0xc5, 0xac, 0x1, 0x4f, 0xb6, 
-	0x31, 0xd0, 0x4c, 0x79, 0x3e, 0x4b, 0x92, 0xf8, 0xb7, 0x6e, 
-	0x7d, 0x2b, 0xd9, 0xbf, 0x6f, 0x5b, 0xc8, 0x52, 0xd3, 0x92, 
-	0x35, 0x81, 0xce, 0x9b, 0x57, 0xa3, 0x6f, 0x88, 0xf5, 0xeb, 
-	0x90, 0x88, 0x85, 0xc9, 0x27, 0x3f, 0xfd, 0x64, 0x18, 0x63, 
-	0x1f, 0x2, 0xd8, 0x33, 0x7a, 0x5, 0xec, 0xd0, 0xe3, 0x9, 
-	0xf1, 0xa6, 0xca, 0xf, 0xaf, 0xc4, 0xaa, 0xb7, 0xd4, 0xa7, 
-	0x83, 0x33, 0x39, 0x57, 0xad, 0x8d, 0xb5, 0x6a, 0x69, 0x6c, 
-	0xba, 0xdf, 0xd6, 0xd4, 0x31, 0xb0, 0x1, 0xb1, 0xc1, 0xc, 
-	0xa5, 0xee, 0xa0, 0xc4, 0xa5, 0x6e, 0xb1, 0x80, 0x66, 0x68, 
-	0xce, 0xa2, 0x39, 0xab, 0xb4, 0xdc, 0x54, 0xb7, 0xf1, 0x4b, 
-	0xf7, 0xec, 0x98, 0xb7, 0x78, 0x5e, 0xcf, 0xa0, 0x36, 0x8b, 
-	0x68, 0x47, 0x9f, 0xba, 0xe1, 0xec, 0x13, 0x67, 0xe7, 0x19, 
-	0x4b, 0x5d, 0x3a, 0xe, 0x29, 0x5d, 0xc3, 0x6, 0xdc, 0xcc, 
-	0xa, 0x8b, 0xad, 0x62, 0x6c, 0x16, 0x9d, 0x3b, 0x9e, 0xdb, 
-	0xbe, 0x78, 0xef, 0xaf, 0xf6, 0x32, 0x63, 0x9e, 0xcc, 0x59, 
-	0x38, 0xf7, 0xd4, 0x96, 0x7f, 0xfb, 0xf1, 0x37, 0xae, 0x25, 
-	0xdf, 0x86, 0xb4, 0xa9, 0x26, 0x2f, 0xb, 0x9a, 0xee, 0x6b, 
-	0x3c, 0xd4, 0xf2, 0xc8, 0xaa, 0x43, 0xd2, 0xc8, 0x43, 0xbd, 
-	0x17, 0x7b, 0x8b, 0x5e, 0xff, 0x5f, 0xaf, 0xad, 0x3a, 0xb9, 
-	0xa7, 0x7b, 0x7e, 0x21, 0x47, 0x28, 0xe, 0x1b, 0x26, 0x2e, 
-	0xb3, 0x4b, 0x89, 0xe1, 0xf1, 0xc3, 0x17, 0xc6, 0xe4, 0x98, 
-	0x50, 0x70, 0x53, 0x7e, 0x4e, 0x19, 0x71, 0x41, 0x19, 0x87, 
-	0xeb, 0xb3, 0x3e, 0x61, 0x33, 0xc6, 0x98, 0x72, 0x33, 0xc1, 
-	0x91, 0x58, 0x76, 0xfb, 0xca, 0x57, 0xbe, 0x92, 0x7c, 0xf3, 
-	0x9b, 0xdf, 0x2c, 0x97, 0xe0, 0x2f, 0x11, 0xb8, 0x19, 0xe0, 
-	0xbb, 0x6b, 0x64, 0xed, 0xd, 0xcf, 0xdd, 0xb2, 0xc7, 0x1a, 
-	0x9c, 0xf1, 0x8d, 0x5, 0xc9, 0x40, 0x9f, 0x26, 0x60, 0xf7, 
-	0x48, 0xe8, 0x8e, 0xaa, 0x6c, 0xbf, 0x50, 0x9a, 0x77, 0x49, 
-	0xf8, 0x3e, 0xac, 0x5d, 0x73, 0x25, 0x2, 0x79, 0x9, 0x2b, 
-	0x7, 0x2e, 0xfb, 0x4, 0x17, 0x65, 0xcc, 0xc9, 0xf1, 0xa2, 
-	0xe, 0xf5, 0xf0, 0xc6, 0x1b, 0xdb, 0x92, 0x7d, 0x7b, 0xdf, 
-	0xc, 0x5d, 0xf3, 0xc6, 0xa6, 0xd5, 0xc9, 0xbf, 0xfc, 0xa3, 
-	0xff, 0x21, 0x77, 0x3a, 0x31, 0xc7, 0xf2, 0xd9, 0xc1, 0x83, 
-	0x6f, 0x6b, 0x1d, 0x3b, 0xd5, 0xd8, 0xdc, 0x33, 0x15, 0xc, 
-	0x5d, 0x6f, 0x14, 0x81, 0x36, 0x9f, 0xf4, 0x49, 0x63, 0xf7, 
-	0x8a, 0xb7, 0x5b, 0xa5, 0x1c, 0xb6, 0x4b, 0x49, 0x30, 0x29, 
-	0x66, 0xb0, 0x42, 0xb1, 0xb9, 0x80, 0x26, 0x2c, 0x6, 0xb5, 
-	0x81, 0x4d, 0x3d, 0x53, 0xe7, 0xc3, 0xe0, 0x14, 0x7b, 0xa, 
-	0x2a, 0x1b, 0x2a, 0x7a, 0x6, 0x58, 0xe6, 0xd2, 0x8b, 0x1f, 
-	0xa1, 0x1b, 0xce, 0xac, 0xb8, 0xad, 0xa6, 0x3e, 0xd4, 0x14, 
-	0x48, 0x5f, 0xfa, 0x9e, 0x80, 0xac, 00, 0xef, 0x83, 0x2f, 
-	0x1f, 0x98, 0xbf, 0xed, 0xcf, 0xb7, 0xad, 0x57, 0x7a, 0x49, 
-	0xe9, 0x9c, 0x69, 0x97, 0x3e, 0xf2, 0x2f, 0x36, 0x6d, 0x1d, 
-	0xb8, 0x3c, 0x50, 0xf4, 0xbe, 0x2c, 0x61, 0xc5, 0xa5, 0x99, 
-	0x81, 0xe2, 0xe9, 0x25, 0x96, 0x31, 0x82, 0x94, 0xa, 0x1a, 
-	0x57, 0x36, 0x8b, 0x6e, 0x25, 0x34, 0x34, 0x7f, 0x45, 0xf5, 
-	0x59, 0x6d, 0x3c, 0xa, 0x40, 0x9e, 0x5e, 0x36, 0x7d, 0x60, 
-	0x6e, 0xdd, 0x9c, 0xf3, 0x27, 0x76, 0x1d, 0xaf, 0x16, 0xd8, 
-	0xb3, 0xf7, 0xb2, 0x49, 0x88, 0x9, 0x4b, 0x65, 0x36, 0x58, 
-	0x3c, 0xd9, 0x4, 0x42, 0xa2, 0xd7, 0xff, 0xb9, 0x29, 0x70, 
-	0xbb, 0x4b, 0x18, 0x3f, 0x26, 0x37, 0xcc, 0x63, 0xc3, 0x6b, 
-	0xc5, 0x89, 0xaf, 0x4d, 0xb4, 0xdb, 0x13, 0x7d, 0xca, 0x17, 
-	0xcc, 0xe7, 0xb5, 0x51, 0x98, 0xe7, 0xa, 0x87, 0xb9, 0xf8, 
-	0xdd, 0xba, 0x5b, 0x7b, 0x3, 0x72, 0x84, 0xc3, 0x16, 0xa0, 
-	0x23, 0x3c, 0xd3, 0x65, 0x11, 0xa0, 0x69, 0xea, 0x22, 0xbe, 
-	0xaf, 0x4f, 0xdc, 0xbc, 0x20, 0x61, 0x7c, 0x45, 0x5b, 0x63, 
-	0x97, 0x6b, 0x15, 0xe1, 0x7e, 0xad, 0xb3, 0xd6, 0x32, 0xf1, 
-	0x26, 0x90, 0x17, 0xd1, 0xa8, 0xdd, 0x2e, 0xc3, 0x29, 0x2f, 
-	0x98, 0x37, 0xb6, 0x6e, 0xb, 0x1a, 0x9c, 0x65, 0x2e, 00, 
-	0x8e, 0x39, 0xb0, 0x7f, 0xbb, 0x5e, 0x40, 0x79, 0x2b, 0x6c, 
-	0x50, 0x41, 0x63, 0x3b, 0x6e, 0xb8, 0x78, 0x9b, 0x7e, 0x58, 
-	0x26, 0x15, 0x1f, 0x7, 0x98, 0x28, 0xd3, 0xf0, 0xe9, 0x84, 
-	00, 0xfd, 0x3b, 0xba, 0xde, 0x92, 0x1d, 0xea, 0x1, 0xbe, 
-	0x53, 0x2f, 0x6, 0x2e, 0x7e, 0x5b, 0xc2, 0x1c, 0xee, 0x86, 
-	0x98, 0xb8, 0xb8, 0xb9, 0x37, 0x6, 0x19, 0xb2, 0xe, 0x68, 
-	0xc1, 0xac, 0xbe, 0x9d, 0xc9, 0xc6, 0x94, 0xf4, 0xc5, 0xf, 
-	0x68, 0x34, 0x69, 0x86, 0xee, 0xcc, 0x7e, 0x9, 0x84, 0x21, 
-	0x91, 0x1, 0x9e, 0x42, 0x73, 0xe7, 0xf3, 0x3b, 0x97, 0x79, 
-	0x2, 0xed, 0xf2, 0xb9, 0x9e, 0x19, 0x3f, 0xfd, 0xd7, 0x3f, 
-	0x7d, 0x48, 0xe9, 0xe, 0x9b, 0xc6, 0xfb, 0x9b, 0xf6, 0x6d, 
-	0xfe, 0x57, 0x9b, 0xb7, 0xf, 0x7, 0x4, 0x7, 0xc3, 0xed, 
-	0x91, 0x21, 0xf4, 0x6, 00, 0xae, 0x8d, 0x16, 0x49, 0xd2, 
-	0x27, 0x65, 0x3, 0xd2, 0x4b, 0x3c, 0xff, 0x8a, 0xe6, 0xbe, 
-	0x12, 0xdb, 0x77, 0x5d, 0x9b, 0xde, 0x14, 0xb8, 0x59, 0x86, 
-	0xa2, 0xb5, 0x65, 0xac, 0x8d, 0xc1, 0x9d, 0xf, 0xdc, 0x5c, 
-	0x8f, 0xe3, 0xdc, 0x8e, 0xc3, 0xfb, 0x95, 0x2f, 0xca, 0xa, 
-	0x48, 0xc9, 0x2c, 0x2, 00, 0xaf, 0xc, 0x6a, 0x39, 0x87, 
-	0xdd, 0xd6, 0xe8, 0x4c, 0xff, 0x1b, 0xec, 0x8, 0xd0, 0x30, 
-	0xb0, 0x63, 0xb7, 0x4, 0xb0, 0x54, 0x1a, 0x66, 0x9b, 0xec, 
-	0x4e, 0x8d, 0xf1, 0xab, 0x25, 0xa8, 0x1b, 0x74, 0x4e, 0xd8, 
-	0x4a, 0x69, 0xf0, 0x69, 0x9a, 0x7c, 0x2b, 0xd4, 0xd0, 0xa0, 
-	0x88, 0x6e, 0x7b, 0x68, 0xf6, 0x75, 0xe3, 0x64, 0x19, 0x83, 
-	0x16, 0xd, 0x7e, 0x60, 0xff, 0xb6, 0x50, 0x2f, 0x68, 0x6e, 
-	0x80, 0xcd, 0x96, 0xd2, 0xdb, 0x9, 0x6c, 0x64, 0x84, 0x6e, 
-	0xb7, 0x7a, 0x52, 0x3, 0x9a, 0x24, 0x1b, 0x92, 0xdc, 0xf4, 
-	0xe8, 0x65, 0xad, 0x3d, 0x9a, 0x9b, 0x79, 0x47, 0xf3, 0x1a, 
-	0xcc, 0x36, 0x1b, 0xa0, 0x6, 0x76, 0xc, 0x66, 0xdc, 0x80, 
-	0x97, 0x3a, 0xc9, 0x5, 0xb4, 0xeb, 0xcb, 0xf5, 0x4a, 0xe3, 
-	0x9d, 0x55, 0x9b, 0xa1, 0x5b, 0x4e, 0x9d, 0x87, 0x53, 0x52, 
-	0xa, 0xd4, 0x1d, 0x2f, 0x90, 0xe6, 0x4e, 0xfa, 0x6, 0xf4, 
-	0xfd, 0x2e, 0x1d, 0xac, 0x80, 0x5b, 0x33, 0xe5, 0xda, 0x23, 
-	0x10, 0x3e, 0xa3, 0xcb, 0x87, 0xb3, 0x15, 0x97, 0xde, 0xe, 
-	0x33, 0x9a, 0x63, 0xc6, 0x15, 0x11, 0xd3, 0xd9, 0x25, 0xee, 
-	0x4e, 0x8d, 0xbe, 0xcd, 0x9b, 0x36, 0x32, 0xa1, 0x61, 0x9, 
-	0x61, 0x41, 0x97, 0xc7, 0xf1, 0xc8, 0x64, 0x3a, 0x70, 0x48, 
-	0x1b, 0x11, 0xbc, 0x2, 0x78, 0xd0, 0x48, 0xf9, 0xd2, 0xe4, 
-	0xfa, 0xf5, 0xcc, 0x4d, 0x81, 0x9b, 0x43, 0xd, 0xb5, 0x54, 
-	0xc4, 0xb7, 0xbf, 0xc2, 0x18, 0x1b, 0x70, 0xe7, 0xae, 0x75, 
-	0xd3, 00, 0xd0, 0x5d, 0x65, 0xf2, 0x89, 0x4a, 0xc5, 0xcf, 
-	0x5b, 0x61, 0x93, 0x6d, 0xf4, 0x6c, 0x78, 0x9, 0x40, 0x69, 
-	0xd1, 0xb1, 0x80, 0x18, 0x61, 0xb0, 0xf6, 0xc6, 0x6f, 0xeb, 
-	0x38, 0x50, 0xe2, 00, 0x74, 0x4, 0x9, 0xcd, 0x4f, 0x3, 
-	0x81, 0x60, 0x41, 0xed, 0xc7, 0x3d, 0x4d, 0x63, 0xc2, 0x8b, 
-	0x9a, 0xfc, 0x39, 0x2a, 0xf7, 0x2f, 0xb4, 0x62, 0x50, 0xa3, 
-	0xd5, 0x84, 0x55, 0xac, 0x97, 0xb, 0xe8, 0xb3, 0x18, 0xf, 
-	0xb, 0xe8, 0x19, 0xf6, 0xd9, 0xdf, 0xca, 0x9, 0x45, 0x3d, 
-	0x7b, 0xd8, 0x5c, 0x1, 0xf8, 0x9b, 0x1, 0xe0, 0x5c, 0xb8, 
-	0x5d, 0xc0, 0xa6, 0x7, 0xa7, 0x6, 0x10, 0x40, 0xf7, 0x33, 
-	0xf, 0x23, 0x59, 0xb9, 0xa8, 0x55, 0x93, 0x3d, 0x2, 0xf9, 
-	0x2e, 0xc9, 0x8f, 0x1, 0x6d, 0x50, 0x43, 0xd, 0xe2, 0x98, 
-	0xe2, 0xb6, 0x9f, 0xfa, 0x88, 0xe3, 0xbb, 0xce, 00, 0x36, 
-	0xf5, 0x8, 0xa0, 0xc, 0x4a, 0xea, 0x1e, 0x77, 0x46, 0xba, 
-	0x90, 0xb7, 0x1, 0xb5, 0x6b, 0x47, 0x33, 0x54, 0x61, 0x7f, 
-	0xb8, 0x8e, 0x4b, 0x11, 0xa6, 0x75, 0x51, 0xf8, 0xd2, 0xeb, 
-	0xf0, 0x1a, 0x64, 0xa7, 0xd6, 0xf7, 0xca, 0xef, 0x54, 0x94, 
-	0xc0, 0xe7, 0xfe, 0xd3, 0xe7, 0x5e, 0x15, 0x19, 0x97, 0xd1, 
-	0xd8, 0xfe, 0x7c, 0xd7, 0x8e, 0xae, 0xec, 0xa4, 0x5a, 0x7a, 
-	0x2b, 0x13, 0x64, 0x3a, 0xa9, 0x65, 0x38, 0x1d, 0xb2, 0xc4, 
-	0x4, 0x9a, 0x28, 0xf2, 0xa8, 0xf7, 0xf4, 0x8b, 0x6, 0xca, 
-	0xeb, 0xe7, 0x5d, 0x8, 0xf1, 0x94, 0xbb, 0xb0, 0xc7, 0x3c, 
-	0xce, 0xc8, 0xf0, 0x9d, 0xa3, 0x3b, 0x6e, 0xa, 0xdc, 0xbc, 
-	0xd6, 0xf9, 0xf4, 0xd3, 0x4f, 0x87, 0x83, 0xe5, 0xc9, 0x1c, 
-	0xe0, 0x65, 0xcc, 0x1d, 0x1b, 0x80, 0xcc, 0x92, 0x17, 0x6b, 
-	0xb1, 0x5c, 0xa7, 0xbb, 0xca, 0xe7, 0x7c, 0x27, 0xdb, 0xe8, 
-	0xd9, 0x34, 0x8e, 0x80, 0x10, 0xe1, 0xb0, 0x56, 0x86, 0xbb, 
-	0x8, 0x3, 0x82, 0x80, 0x25, 0xe, 0x34, 0x6, 0x39, 0xe3, 
-	0x74, 0x83, 0xdc, 0x9a, 0x82, 0xfb, 0x3, 0xa0, 0x45, 0x1, 
-	0xb8, 0x41, 0xee, 0xf0, 0x12, 0x75, 0xd3, 0x2f, 0xca, 0x1e, 
-	0xd6, 0xb5, 0x17, 0xa4, 0xd1, 0x2b, 0xb5, 0x25, 0x72, 0xa5, 
-	0xba, 0x9e, 00, 0xbd, 0x5c, 0xa0, 0xe3, 0xdc, 0xb4, 0x30, 
-	0x11, 0x77, 0xab, 0x4f, 0x40, 0x8d, 0x1, 0xae, 0xbc, 0x4c, 
-	0xaa, 0xc6, 0x66, 0xb5, 0x4, 0xd, 0x2d, 0x8d, 0xdc, 0x27, 
-	0x5b, 0xa8, 0xde, 0xdb, 0x39, 0x1, 0x7a, 0xa7, 0x1a, 0xbd, 
-	0x36, 0x5d, 0x63, 0xc3, 0x89, 0xf9, 0xa, 0x48, 0x6d, 0xa9, 
-	0x1f, 0x83, 0xdb, 0x34, 0x6, 0xb4, 0x41, 0xed, 0xf8, 0xa4, 
-	0x61, 0x4d, 0x1d, 0x3, 0x5b, 0xc1, 0xc3, 0x4a, 0x14, 0x78, 
-	0x52, 0xd7, 0x42, 0x94, 0xea, 0x58, 0x58, 0xa1, 0xb1, 0xc7, 
-	0xe2, 0xd7, 0x66, 0x94, 0x34, 0x9c, 0xfa, 0xd7, 0xb5, 0xf4, 
-	0x9f, 0xdb, 0x69, 0x11, 0x22, 0x64, 0xa7, 0x41, 0xe3, 0xfe, 
-	0x6d, 0xf9, 0x74, 0xcb, 0x51, 0xd2, 0x39, 0x77, 0xec, 0xdc, 
-	0x2c, 0xc0, 0x2b, 0x93, 0xcc, 0xac, 0x9c, 0x79, 0x59, 0x6b, 
-	0xda, 0xc3, 0x69, 0xb1, 0x2e, 0xde, 0x73, 0xbe, 0xa7, 0x53, 
-	0xa0, 0xd6, 0x59, 0x19, 0x43, 0xc9, 0x9c, 0x5, 0x73, 0x2e, 
-	0x34, 0x6f, 0x6e, 0x3e, 0xce, 0x49, 0x4d, 0x61, 0xb6, 0x9c, 
-	0xb8, 0xe3, 0xcc, 0xca, 0x8, 0x70, 0xf3, 0x54, 0xb7, 0x1c, 
-	0x7a, 0x2a, 0x2d, 0x48, 0x68, 0x45, 0x22, 0x3a, 0x9c, 0x19, 
-	0x1c, 00, 0x76, 0xc3, 0x86, 0xd, 0x23, 0xc2, 0x72, 0x3d, 
-	0xfa, 0xdc, 0x2d, 0x9f, 0xbc, 0xcd, 0xd, 0x9e, 0x74, 0xbf, 
-	0x8a, 0x46, 0xe5, 0x2, 0x3e, 0xc0, 0x9a, 0x56, 0x74, 0x4a, 
-	0x61, 0x99, 0xb5, 0xb7, 0xa9, 0x1, 0xe, 0x7f, 00, 0x3a, 
-	0x2, 0xc4, 0x7d, 0x8, 0x14, 0x94, 0x74, 0x62, 0xa0, 0xf, 
-	0x83, 0x5a, 0xe1, 0x80, 0x1e, 0xbf, 0x41, 0x5f, 0x82, 0x46, 
-	0x97, 0x3d, 0xaa, 0x31, 0xfa, 0xdf, 0x69, 0xf2, 0x6d, 0xae, 
-	0x76, 0xe9, 0xad, 0x94, 0x7b, 0x89, 0xce, 0x45, 0xe3, 0xb5, 
-	0xc2, 0x8c, 0x96, 0xef, 0x6, 0x35, 0xf9, 0x57, 0xac, 0xb1, 
-	0x7b, 0x1, 0x4b, 0x79, 0x13, 0x3d, 0x29, 0x7, 0xc0, 0xbd, 
-	0x5f, 0x3e, 0xde, 0xa7, 0xa0, 0x3c, 0x4e, 0x98, 0xa1, 0xd7, 
-	0xa6, 0x25, 0x43, 0x4e, 0x3d, 0xe5, 0x18, 0x63, 0x5e, 0xdc, 
-	0x28, 0x94, 0xb6, 0xee, 0xd7, 0xbe, 0x86, 0xe3, 0x2c, 0x25, 
-	0x76, 0x75, 0x75, 0xed, 0xd1, 0x24, 0xd9, 0x39, 0x3d, 0x10, 
-	00, 0xc2, 0xcf, 0x18, 0xd8, 0x31, 0x60, 0x73, 0xc1, 0xcd, 
-	0x35, 0x5f, 0x87, 0xfa, 0x5e, 0x68, 0xc, 0x6a, 0xd7, 0x19, 
-	0x14, 0x4b, 0x1d, 0x53, 0x9f, 0xd4, 0x2f, 0x16, 0x24, 0x11, 
-	0x96, 0x82, 0x97, 0x9, 0xb3, 0xa0, 0x91, 0xe8, 0xfd, 0x6, 
-	0xc4, 0xa5, 0x7e, 0xe2, 0x66, 0x41, 0x4, 0x1c, 0x14, 0x3f, 
-	0xaf, 0x89, 0x70, 0x92, 0xf7, 0x7a, 0x1c, 0x58, 0x3a, 0xbd, 
-	0x74, 0x70, 0xed, 0x63, 0x6b, 0x8f, 0xc4, 0x61, 0xb9, 0xee, 
-	0xa5, 0x9b, 0x96, 0x9e, 0xc4, 0xc6, 0xe1, 0x2, 0xb5, 0xd6, 
-	0xdf, 0xd2, 0x31, 0xf7, 0xd5, 0x83, 0xf6, 0x38, 0xe6, 0xb0, 
-	0x1b, 0x8, 0x1b, 0xb3, 0xe1, 0xe4, 0x92, 0xe1, 0x2b, 0x79, 
-	0x1c, 0x44, 0x8c, 0x6d, 0x9e, 0x28, 0x1f, 0x98, 0x20, 0x2a, 
-	0xa, 0xb0, 0x1a, 0xd8, 0x6e, 0x36, 0x9, 0x77, 0x25, 0x22, 
-	0x14, 0x18, 0xca, 0x6c, 0x21, 0x21, 0x1e, 0xf7, 0x59, 0x28, 
-	0x63, 0x90, 0xbb, 0x17, 00, 0x98, 0xe9, 0xaa, 0x43, 0xd, 
-	0x6c, 0x28, 0x40, 0x77, 0x63, 0x10, 0xae, 0xe9, 0x40, 0xc1, 
-	0xb, 0x1a, 0x67, 0x9e, 0x90, 0x7d, 0x49, 0xd7, 0x32, 0x2, 
-	0x9d, 0x46, 0x2a, 0xf3, 0xea, 0xd5, 0x7d, 0x5f, 0xac, 0xb9, 
-	0x88, 0x7a, 0xd5, 0xcd, 0x1c, 0x69, 0xfa, 0x7e, 0xf5, 0x80, 
-	0x8a, 0xd4, 0x85, 0x2f, 0x92, 0x3b, 0xbc, 0x3d, 0x77, 0xb3, 
-	0x5b, 0x60, 0x27, 0x12, 0xd4, 0xcc, 0x9f, 0xa8, 0xb1, 0xa, 
-	0xaf, 0xf0, 0xa, 0xc8, 0x3, 0xea, 0x6e, 0xf, 0x68, 0xb9, 
-	0x2a, 0x23, 0x81, 0x7f, 0x4f, 0xb4, 0x93, 0x1e, 0x8b, 0x36, 
-	0x98, 0x74, 0xaa, 0xac, 0x67, 0x55, 0x46, 0x3, 0x30, 0x6, 
-	0xa5, 0xb5, 0x2e, 0x94, 0x70, 0x83, 0xd7, 0xc0, 0x8e, 0xaf, 
-	0x3b, 0x8e, 0xa9, 0x41, 0x4d, 0xa3, 0x4b, 0xda, 0xd4, 0x93, 
-	0xbb, 0xe1, 0xae, 0x3f, 0x5, 0x5, 0xe3, 0x7a, 0x75, 0x1d, 
-	0x9b, 0xa, 0xe9, 0xac, 0x70, 0x49, 0x97, 0xe9, 0x5f, 0xb5, 
-	0x2d, 0x8, 0x31, 0xd7, 0xc6, 0xa0, 0xd8, 0xb7, 0xe8, 0x7e, 
-	0xae, 0xdc, 0x2e, 0xa3, 0x67, 0x93, 0x17, 0xfe, 0x4, 0x70, 
-	0x75, 0x3b, 0xc3, 0x9f, 0xf3, 0x13, 0x63, 0xd2, 0x61, 0x57, 
-	0xe5, 0x14, 0xa1, 0x1d, 0xcd, 0xf8, 0x26, 0xb, 0x79, 0x48, 
-	0xf0, 0x1b, 0xdf, 0xf8, 0xc6, 0x68, 0xf1, 0x3f, 0x8, 0xe1, 
-	0xd4, 0x1c, 0x60, 0x75, 0x25, 0xdb, 0x1d, 0xf2, 0xee, 0x56, 
-	0x4f, 0x42, 0x6a, 0x21, 0xa1, 0xcc, 0x2e, 0x3f, 0x71, 0x2d, 
-	0xa8, 0xf0, 0xd, 0x61, 0x83, 0x2, 0x5e, 0x3, 0x18, 0xbf, 
-	0x1, 0x7e, 0x2d, 0x3a, 0x7c, 0x8f, 0x76, 0xf0, 0x61, 0xba, 
-	0xd4, 0x6d, 0x7d, 0x93, 0xf4, 0x64, 0x4a, 0x35, 0x8c, 0x59, 
-	0xa8, 0xb1, 0xe9, 0x2, 0x81, 0xbe, 0x41, 0xb3, 0xfd, 0xe5, 
-	0xca, 0xd7, 0xc, 0x69, 0xf3, 0x41, 0xcd, 0x5b, 0x84, 0x2f, 
-	0x8a, 0xa, 0xa8, 0x19, 0x35, 0x4, 0x5, 0x74, 0xe9, 0x1, 
-	0xff, 0xad, 0xd8, 0x4c, 0xc3, 0xe6, 0x11, 0x3, 0x58, 0x80, 
-	0xd5, 0x19, 0x6b, 0x67, 0xfa, 0x35, 0x36, 0x1e, 0x52, 0x38, 
-	0xe7, 0x8f, 0xc3, 0x8b, 0x4b, 0x5a, 0xa2, 0x3a, 0xa7, 0xf0, 
-	0xe, 0xd9, 0xa3, 0x58, 0xf9, 0xe1, 0x89, 0x41, 0x67, 0x5e, 
-	0x41, 0x9, 0x37, 0x35, 0x48, 0xa1, 0xa3, 0x59, 00, 0xec, 
-	0x78, 0x6, 0xb3, 0x29, 0xe9, 0xdb, 0xba, 0x6e, 0x42, 0x7d, 
-	0x89, 0x4f, 0x81, 0xaa, 0xfe, 0xc8, 0x9f, 0x8d, 0xeb, 0x1a, 
-	0x7f, 0x40, 0xae, 0xae, 0x27, 0xbf, 0xfc, 0xcf, 0xbf, 0x5c, 
-	0x17, 0xb0, 0x2c, 0x79, 00, 0xe4, 0xd9, 0x6b, 0xe1, 0xba, 
-	0x6f, 0xbc, 0xcd, 0xd4, 0xf8, 0xa3, 0x37, 0x4d, 0xb9, 0x68, 
-	0x79, 0x18, 0xca, 0x4, 0x1c, 0x46, 0x74, 0xd4, 0x6c, 0x22, 
-	0x8c, 0xf9, 0x8c, 0x13, 0x30, 0xf3, 0x60, 0xe6, 0x61, 0xed, 
-	0x12, 0x3a, 0xa4, 0x31, 0xd4, 0x5, 0x31, 0x23, 0x93, 0xb5, 
-	0x30, 0x6, 0x4d, 0x18, 0x33, 0x28, 0x5f, 0x7a, 0x93, 0x15, 
-	0xe6, 0x61, 0x5, 0x93, 0x17, 0x21, 0xef, 0xea, 0xf6, 0xf6, 
-	0xcb, 0x3d, 0x20, 0xe1, 0xdb, 0xa7, 0x4c, 0x98, 0x61, 0xd7, 
-	0xcc, 0x8f, 0xca, 0x14, 0xe2, 0x65, 0xd3, 0x20, 0x2e, 0x7e, 
-	0xd2, 0xa3, 0xf2, 0x2d, 0xbc, 0x8, 0x10, 0xfc, 0x43, 0xe8, 
-	0xa0, 0x68, 0x1f, 0x40, 0x8b, 0xdb, 0xe0, 0x35, 0x35, 0xd0, 
-	0x73, 0xfd, 0xc4, 0xe5, 0xda, 0xf0, 0x3d, 0xd2, 0x8a, 0x45, 
-	0xe2, 0xf1, 0x19, 0x26, 0x9a, 0xb2, 0xe1, 0xe1, 0x39, 0x2, 
-	0x70, 0x99, 0xb4, 0x7c, 0xb9, 0x68, 0xb9, 0x5e, 0x6e, 0x29, 
-	0x97, 0xbb, 0x52, 0x93, 0x97, 0x73, 0x95, 0xc7, 0x32, 0xea, 
-	0x42, 0xe5, 0x1c, 0x54, 0x3, 0xa0, 0x53, 0x52, 0x33, 0x43, 
-	0x59, 0xca, 0x2e, 0xc1, 0xf0, 0x8d, 0x32, 0xed, 0xbd, 0xe7, 
-	0xdb, 0xd6, 0xb8, 0xb, 0x5, 0xc0, 0x41, 0x75, 0x95, 0x87, 
-	0xb4, 0x94, 0xa7, 0x13, 0x4d, 0xfb, 0xd8, 0x22, 0xcc, 0x29, 
-	0xa6, 0x4c, 0x70, 0x15, 0xc8, 0x5f, 0xa0, 0xae, 0x34, 0x96, 
-	0x2e, 0x2a, 0xdb, 0x31, 0x2f, 0x28, 0xee, 0x59, 0x8d, 0x8f, 
-	0x4f, 0x69, 0x89, 0xea, 0x2c, 0x9a, 0x58, 0xf6, 0x8c, 00, 
-	0xce, 0x5b, 0x57, 0xf0, 0x3, 0x5e, 0x40, 0x1, 0xae, 0xf9, 
-	0x2, 0x35, 0x10, 0xd, 0x68, 0x53, 0xc2, 0xb1, 0x6, 0x75, 
-	0xae, 0x9f, 0x78, 0x8e, 0x6b, 0xb7, 0xa9, 0xd3, 0xe7, 0x79, 
-	0xae, 0xf, 0xdc, 0x68, 0xe0, 0x40, 0x71, 0xe7, 0x31, 0x71, 
-	0x9d, 0xf, 0xf5, 0xbf, 0x3f, 0xd0, 0xd6, 0xbd, 0xaf, 0x7b, 
-	0xba, 0x52, 0xc8, 0x48, 0x53, 0x87, 0xf5, 0x6c, 0xdd, 0x3, 
-	0x8f, 0x83, 0x6, 0xcf, 0x73, 0xff, 0xed, 0xb, 0x4a, 0x7b, 
-	0xe, 0x94, 0x2d, 0xc8, 0x73, 0xcf, 0xc5, 0x1e, 0xd6, 0xf6, 
-	0xf, 0xe1, 0x97, 0xa5, 0x5c, 0xb9, 0x56, 0x41, 0x57, 0xc, 
-	0xa3, 0xfb, 0x2b, 0x3e, 0xb9, 0x54, 0xa9, 0x80, 0x15, 0x81, 
-	0x63, 0xcc, 0xc8, 0xe, 0xad, 0x99, 0xb2, 0xb3, 0x64, 0xe7, 
-	0xc8, 0x96, 0xcb, 0xf2, 0xde, 0x2b, 0x6e, 0xc2, 0xb8, 0xe6, 
-	0x31, 0x26, 0xf7, 0xa4, 0x4c, 0x92, 0xe3, 0x36, 0x19, 0xa, 
-	0x6d, 0xe1, 0x40, 0x80, 0x60, 0x6, 0xa7, 0x6d, 0x20, 0x8c, 
-	0x1c, 0x82, 0x77, 0x5a, 0x96, 0x71, 0x5f, 0x7c, 0x20, 0x9e, 
-	0x27, 0x6b, 0xfa, 0x47, 0x13, 0x12, 0xf1, 0xc4, 0x2d, 0xba, 
-	0x5b, 0x78, 0xca, 0x89, 0xd, 0xd, 0x5b, 0x96, 0xe2, 0x6, 
-	0xa4, 0xa6, 00, 0xd9, 0xbc, 0x24, 0x3c, 0x6, 0xb2, 0x1, 
-	0x6d, 0x6a, 0xd0, 0x3b, 0x1e, 0x7e, 0xbb, 0xa1, 0x3c, 0xcb, 
-	0xd4, 0xcf, 0xf4, 0xf3, 0x39, 0x1f, 0x5c, 0xb8, 0x2d, 0x9e, 
-	0x96, 0xa5, 0xa5, 0x2, 0x7a, 0xb1, 0xdc, 0x25, 0xf8, 0x71, 
-	0xb, 0xec, 0xd8, 0x12, 0xdc, 0x2, 0x6c, 0x9f, 0x80, 0xdc, 
-	0x27, 0x40, 0xf7, 0x65, 0xdd, 0xbd, 0xb8, 0xb3, 0x61, 0xb8, 
-	0x7b, 0xd1, 0xc0, 0x84, 0xe9, 0x99, 0x16, 0x1e, 0x83, 0x38, 
-	0x8, 0x9a, 0xc2, 0xcd, 0x67, 0x53, 0x3, 0xcf, 0x40, 0x34, 
-	0x68, 0xed, 0xa7, 0x2e, 0x5c, 0x2f, 0x31, 0x8d, 0xe3, 0xe1, 
-	0x8e, 0x1b, 0x86, 0x38, 0xed, 0xdc, 0xe7, 0x7, 0xa1, 0xbd, 
-	0x46, 0x7d, 0x99, 0x37, 0xf0, 0xc, 0x5e, 0xc2, 0x67, 0xe4, 
-	0x94, 0xd5, 0x12, 0x64, 0xda, 0x6e, 0xc2, 0xb1, 0xae, 0x33, 
-	0xee, 0xc3, 0x50, 0xcf, 0x23, 0x81, 0x11, 0x82, 0x27, 0xf5, 
-	0x87, 0xf2, 0x53, 0x6e, 0xf3, 0xd6, 0x43, 0x17, 0x86, 0x7f, 
-	0x58, 0x6f, 0xe2, 0x89, 0x1b, 0x4a, 0x64, 0x98, 0xf8, 0xc1, 
-	0x50, 0xf8, 0x7c, 0x86, 0x82, 0x39, 0x71, 0x2a, 0x83, 0x1b, 
-	0x60, 0x3e, 0xf, 00, 0xc, 0x30, 0xc, 0x46, 0x10, 0x8f, 
-	0xeb, 0x16, 0x52, 0xc2, 0xcc, 0x20, 0x39, 0x27, 0xd5, 0x90, 
-	0x17, 0xac, 0xf3, 0x4a, 0xa1, 0x61, 0x82, 0xc1, 0x4b, 0xde, 
-	0x29, 0x83, 0xcb, 0x43, 0x3c, 0xdf, 0x3, 0x1d, 0xd5, 0x88, 
-	0x61, 0xbe, 0x4e, 0xcf, 0x80, 0x8a, 0x87, 0x37, 0x94, 0x93, 
-	0x34, 0x5c, 0x66, 0x53, 0x83, 0x10, 0x8a, 0xe5, 0xb9, 0x50, 
-	0x4, 0x28, 0x6, 0x6d, 0xec, 0xe6, 0x7a, 0xae, 0xdf, 0xf7, 
-	0x9b, 0x92, 0x3e, 0x6e, 0x28, 0x69, 0xd, 0x83, 0x5c, 0x40, 
-	0xe4, 0xc3, 00, 0x7e, 0xbe, 0x1b, 0x20, 0x53, 0x45, 0x1d, 
-	0xb5, 0x4e, 0x5c, 0x2e, 0xca, 0x63, 0x83, 0x1b, 0x6b, 0xde, 
-	0xd8, 0x4f, 0x59, 0xed, 0x86, 0x87, 0xb8, 0xcd, 0x4b, 0xe8, 
-	0x68, 0xd6, 0x3c, 0x37, 0x8d, 0xe3, 0x11, 0x46, 0xba, 0xe, 
-	0xb3, 0x9b, 0xb4, 0xe3, 0xe7, 0xf9, 0xb9, 0xd7, 0xd3, 0xd2, 
-	0xba, 0x2d, 0x18, 0xe7, 0xdd, 0x94, 0x40, 0xa7, 0x49, 0xba, 
-	0x58, 0x9e, 0xd, 0x8f, 0x30, 0xf0, 0x95, 0xeb, 0xf0, 0xd0, 
-	0x61, 0x72, 0x6, 0x1e, 0x40, 0x6f, 0x87, 0x21, 0xef, 0x71, 
-	0x5e, 0xc9, 0x6f, 0xcc, 0x43, 0xf2, 0xeb, 0xf2, 0x99, 0x8e, 
-	0xc8, 0x27, 0x85, 0xca, 0x35, 0x8e, 0xe8, 0xc4, 0x61, 0x3c, 
-	0x89, 0xe6, 0x2, 0x9b, 0xfb, 0xb8, 0x6, 0x88, 0x2c, 0x98, 
-	0xb9, 0xcc, 0x21, 0xce, 0x64, 0x9a, 0x38, 0xcf, 0xe4, 0x8b, 
-	0x3c, 0xd3, 0xc2, 0xb9, 0x95, 0xc3, 0x4f, 0x38, 0xf9, 0xb6, 
-	0xf0, 0x70, 0xcf, 0x98, 0x8d, 0x81, 0x2e, 0x8c, 0xc3, 0x5c, 
-	0x8c, 0x9f, 0xe9, 0xb2, 0x93, 0x2e, 0x6e, 0x78, 0x66, 00, 
-	0x1a, 0xa0, 0xf8, 0x71, 0x8f, 0x46, 0x1d, 0xcf, 0x71, 0x1c, 
-	0xf, 0x3f, 0x69, 0xe6, 0x52, 0xc2, 0x88, 0x83, 0x40, 0x9a, 
-	0xe2, 0x26, 0x1c, 0x63, 0x4a, 0x58, 0x2c, 0xb4, 0x5c, 0x8b, 
-	0xcb, 0xed, 0xb2, 0xc4, 0xd4, 0xc2, 0x43, 0x79, 0x5c, 0x46, 
-	0xf3, 0xc, 0xfe, 0x71, 0xdd, 0x7c, 0x24, 0x1c, 0xb7, 0xfd, 
-	0xf9, 0xdc, 0x84, 0xf9, 0x9e, 0xf8, 0xba, 0xef, 0xe5, 0x5a, 
-	0x6c, 0x9, 0xc7, 0x10, 0x36, 0x56, 0x50, 0x13, 0x35, 0xd7, 
-	0xc4, 0x79, 0x27, 0xcd, 0xb8, 0x5e, 0x88, 0xeb, 0xeb, 0xf0, 
-	0xf, 0x3b, 0x55, 0x8c, 0x79, 0x61, 0x5e, 0x91, 0x6f, 0x2c, 
-	0x7e, 0xca, 0x11, 0x5b, 0xca, 0x60, 0x2b, 0x67, 0x6a, 0x10, 
-	0x96, 0x7c, 0x86, 0x88, 0x24, 0xee, 0x4, 00, 0x4, 0x71, 
-	0xd1, 0x84, 0x16, 0x18, 0xae, 0xa1, 0x15, 0xd1, 0xda, 0x80, 
-	0x1b, 0xc6, 0x70, 0x2d, 0x57, 0x88, 0x14, 0x34, 0x69, 0xc6, 
-	0xf9, 0x86, 0x1, 0x30, 0x82, 0x7c, 0x93, 0x47, 0xf2, 0x1d, 
-	0xef, 0x4f, 0xe6, 0x9a, 0xcb, 0x46, 0x39, 0xaf, 0x62, 0x8c, 
-	0xc2, 0xae, 0x69, 0xc, 0x72, 0x45, 0x1a, 0xc8, 0xd1, 0xe6, 
-	0xa4, 0x67, 0x80, 0xc1, 0xf, 0x2c, 0xcf, 0x33, 0x7f, 0x72, 
-	0x1, 0x9a, 0xcf, 0x6f, 0x41, 0xcb, 0xbd, 0x46, 0x5a, 0xbe, 
-	0xe6, 0xb4, 0xf1, 0xc7, 0xcf, 0xc3, 0x6d, 0x4b, 0x1c, 0x8c, 
-	0xfd, 0xa9, 0x2f, 0xfd, 0xa5, 0xcc, 0x36, 0xe4, 0x19, 0x13, 
-	0xf3, 0x2, 0xb7, 0x2d, 0x71, 0x63, 0x7e, 0x11, 0x1e, 0xfb, 
-	0xe1, 0x37, 0x61, 0x16, 0x44, 0xbb, 0xc7, 0x42, 0x89, 0x63, 
-	0xeb, 0xfa, 0xc3, 0x7f, 0x33, 0x80, 0xe, 0xb7, 0x47, 0xe9, 
-	0x92, 0x1e, 0xf9, 0xb5, 0x5c, 0x98, 0x2f, 0xe, 0x37, 0x9f, 
-	0x1d, 0xe, 0xbf, 0x62, 0xfe, 0xc8, 0x3b, 0xe9, 0xc6, 0xbc, 
-	0x88, 0xf3, 0x8d, 0x1c, 0x61, 0x29, 0x87, 0xf9, 0xef, 0x78, 
-	0x57, 0x65, 0x90, 0x42, 0xe5, 0x33, 0xdc, 0xe0, 0x9b, 0x1, 
-	0x88, 0x5, 0x9, 0xca, 0x35, 0x12, 0x8f, 0x81, 0x1d, 0x33, 
-	0x7, 0xc6, 0xdc, 0x2e, 0xe3, 0x82, 0xc6, 0xc, 0x41, 0x5b, 
-	0x63, 0x3d, 0x4e, 0xb1, 0xf6, 0x36, 0xc0, 0xa9, 0x60, 0xee, 
-	0xbb, 0x61, 0x63, 0xa0, 0x47, 0xda, 0x9c, 0xb4, 0xe0, 0x95, 
-	0x41, 0x65, 0xfe, 0xe1, 0xc7, 0x6d, 0xa0, 0x9b, 0x12, 0x16, 
-	0xf3, 0x30, 0x17, 0xc0, 0xf1, 0x35, 0xa7, 0xe5, 0x74, 0x9c, 
-	0x66, 0x4c, 0xfd, 0x5c, 0x53, 0x25, 0x1f, 0xf2, 0x2, 0xb5, 
-	0xc9, 0x2d, 0xb3, 0xf9, 0x60, 0x1e, 0x12, 0x8f, 0x30, 0x5b, 
-	0xc2, 0xe1, 0xab, 0xfd, 0x50, 0xfb, 0x2d, 0x2b, 0xbe, 0x16, 
-	0xfb, 0x63, 0x77, 0x7c, 0xdd, 0xcf, 0x31, 0xe5, 0x1a, 0x6, 
-	0x76, 0x12, 0x76, 0xc3, 0x86, 0xfb, 0x55, 0x17, 0xa4, 0xe1, 
-	0xb4, 0xc9, 0x3, 0xfc, 0xa2, 0xce, 0xcd, 0x13, 0xe7, 0xdf, 
-	0x75, 00, 0xf5, 0x35, 0x39, 0x6f, 0xab, 0x89, 0xf3, 0xee, 
-	0x7c, 0xba, 0xe1, 0xcc, 0x5, 0x38, 0xd7, 0x1d, 0x7f, 0x44, 
-	0xa6, 0xf3, 0x81, 0xdb, 0x11, 0xa1, 0x30, 0x85, 0x44, 0x1, 
-	0x38, 0x5, 0x77, 0x18, 0xfe, 0x58, 0x63, 0x5b, 0x18, 0x15, 
-	0x7c, 0x95, 0x10, 0x11, 0x36, 0x59, 0xc6, 0x79, 0x37, 0x43, 
-	0xcc, 0x8, 0xa8, 0xc7, 0xde, 0x50, 0xf2, 0xef, 0xd6, 0x2f, 
-	0x30, 0xe7, 0x66, 0x5, 0x8a, 0x2, 0xe6, 0xa4, 0x61, 0x8d, 
-	0xce, 0x25, 0x4, 0xb, 0x3, 0xb5, 00, 0xe1, 0xce, 0x67, 
-	0x2d, 0x64, 0x5c, 0xb3, 0xe0, 0xe5, 0x8b, 0x47, 0x3a, 0xe, 
-	0x8f, 0xd3, 0x54, 0xf0, 0xf0, 0xf3, 0x1c, 0x4e, 0x18, 0x6, 
-	0x7f, 0x6c, 0xcc, 0x2f, 0x87, 0xc1, 0xb, 0x4c, 0x4c, 0x3, 
-	0x7f, 0x14, 0x46, 0x5c, 0xdc, 0xf9, 0x2c, 0x72, 0xe2, 0x78, 
-	0x76, 0xc7, 0xf1, 0x2c, 0x37, 0x71, 0x1a, 0xba, 0x25, 0x7d, 
-	0x8e, 0xf8, 0x46, 0xdc, 0x5b, 0x61, 0xfc, 0x3c, 0xf2, 0x14, 
-	0x97, 0x9d, 0x70, 0x64, 0x1f, 0x19, 0x30, 0x8f, 0xb9, 0xe, 
-	0x3f, 0x31, 0x71, 0xdc, 0x34, 0x64, 0xf2, 0x7e, 0xc9, 0x1b, 
-	0x6, 0x8a, 0x35, 0x3f, 0x2d, 0xaf, 0x50, 0xcb, 0x35, 0xd7, 
-	0x7c, 0xdd, 0xfc, 0x57, 0x50, 0x6a, 0xae, 0x2, 0x37, 0x2, 
-	0x9a, 0xd5, 0x40, 0x14, 0xd0, 0x4c, 0x71, 0x61, 0x49, 0x80, 
-	0x30, 0xc0, 0xc1, 0xbd, 0xd8, 0x98, 0x39, 0xc4, 0x73, 0x5c, 
-	0x39, 0x27, 0xdd, 0x98, 0x21, 0x16, 0x2c, 0xf2, 0xa, 0x33, 
-	0xcc, 0x10, 0xf2, 0x8d, 0x85, 0x39, 0x66, 0x8a, 0x99, 0xa9, 
-	0xa0, 0x89, 0x35, 0x11, 0xd8, 0xd, 0x74, 0xf2, 0x65, 0x1e, 
-	0xe5, 0xd2, 0x18, 0xa8, 0xd7, 0x72, 0x73, 0x5f, 0x7c, 0xdd, 
-	0x7e, 0x32, 0x6f, 0xe1, 0x34, 0x25, 0x8c, 0xeb, 0x18, 0xd3, 
-	0xd4, 0x97, 0xa, 0x8e, 0xdd, 0x50, 0xf3, 0xe, 0x37, 0xf9, 
-	0xc4, 0xc4, 0x14, 0xb7, 0xe3, 0xe0, 0xb6, 0xcd, 0x17, 0x96, 
-	0x1b, 0x37, 0x8e, 0x43, 0xba, 0x37, 0xdb, 0xe5, 0xe, 0x69, 
-	0x5c, 0xe7, 0x87, 0x67, 0x92, 0xf, 0xca, 0xd, 0xa5, 0xbe, 
-	0x6d, 0xec, 0x47, 0xe, 0x72, 0xe5, 0x97, 0x38, 0xdc, 0xc3, 
-	0xfd, 0xb7, 0xd3, 0xc4, 0x3c, 0xc3, 0x6d, 0x79, 0xb5, 0x3c, 
-	0x43, 0x1d, 0x16, 0xf2, 0x1a, 0xc9, 0x5b, 0xc8, 0xf7, 0x55, 
-	0xe0, 0x8e, 0x4a, 0x3, 0x3, 0x6c, 0xe2, 0x7, 0x91, 0xa0, 
-	0xc1, 0x6d, 0x21, 0x83, 0xc2, 0x90, 0x5c, 0x1, 0xf2, 0xfd, 
-	0x93, 0x49, 0x73, 0xf3, 0x4a, 0x7e, 0x6d, 0xa9, 0x4c, 0x33, 
-	0xc5, 0x8c, 0xa1, 0x9c, 0x81, 0x39, 0xb7, 0x32, 0x93, 0x11, 
-	0xe3, 0xc3, 0xb3, 0xb2, 0xe3, 0x74, 0x1e, 0x19, 0xf3, 0xcd, 
-	0xa0, 0x8c, 0xf9, 0x19, 0x87, 0xc5, 0x6e, 0xee, 0x8d, 0xe3, 
-	0xc5, 0xe9, 0xe4, 0xba, 0x89, 0x7b, 0x3d, 0x33, 0x5a, 0x7d, 
-	0x73, 0x5f, 0xcc, 0x53, 0xfc, 0xe6, 0x19, 0xe1, 0xb1, 0x3b, 
-	0x5f, 0x3c, 0xe2, 0x4f, 0x6, 0x98, 0xc3, 0x73, 0xfc, 0x3, 
-	0xbf, 0xb3, 0x3c, 0x8e, 0xcb, 0x15, 0xb2, 0xa2, 0x1f, 0xc2, 
-	0xa8, 0x7f, 0x80, 0xd, 0xaf, 0xcc, 0xd7, 0x98, 0x6f, 0xa, 
-	0xbe, 0xad, 0xc6, 0xbc, 0x34, 0x8f, 0xcd, 0x67, 0xcb, 0x72, 
-	0x2c, 0xbf, 0xbe, 0x36, 0x22, 0xc3, 0xa3, 0x81, 0x9b, 0x4, 
-	0x31, 0x50, 0x12, 0xb1, 0xc1, 0xd, 0x38, 0xcc, 0x14, 0xd3, 
-	0xa9, 0xc4, 0x14, 0xf2, 0x6a, 0x86, 0x98, 0xba, 0x32, 0xcd, 
-	0x18, 0xfc, 0xb6, 0xb9, 0xdd, 0x69, 0xee, 0xbf, 0xe5, 0x66, 
-	0x14, 0xb0, 0x93, 0x27, 0x78, 0x49, 0x3e, 0xa1, 0x18, 0xb, 
-	0x9e, 0x69, 0xcc, 0x6b, 0x87, 0xc5, 0xf1, 0x7c, 0x9f, 0x29, 
-	0xd7, 0xec, 0x36, 0x75, 0xfd, 0x72, 0xd, 0x83, 0x3f, 0x37, 
-	0x8c, 0xbc, 0x60, 0xe2, 0x6b, 0xe, 0x23, 0xdc, 0xee, 0x5c, 
-	0xca, 0xb5, 0x49, 0x7, 0x73, 0x78, 0xe8, 0xd5, 0x3f, 0x2e, 
-	0x93, 0xf3, 0x88, 0x1f, 0x9e, 0x41, 0xe1, 0x85, 0xf9, 0x8c, 
-	0xdb, 0xbc, 0x91, 0x73, 0xca, 0x18, 0xf3, 0xde, 0x94, 0x72, 
-	0x60, 0xf1, 0x93, 0x77, 0x68, 0x28, 0x5b, 0x24, 0x4f, 0xa, 
-	0x4a, 0xcd, 0x55, 0x9b, 0x58, 0x86, 0x2f, 0xa8, 0xd9, 0x93, 
-	0xdb, 0x16, 0x86, 0xe0, 0x86, 0xc6, 0x6e, 0x33, 0xc4, 0xf1, 
-	0x74, 0xf9, 0xb6, 0x32, 0x89, 0xc2, 0x62, 0xcc, 0xc, 0xdc, 
-	0x66, 0x86, 0xe9, 0x8, 0xa6, 0x10, 0x37, 0x1f, 0x63, 0xb8, 
-	0xf1, 0x76, 0x9b, 0x48, 0xbb, 0x93, 0x95, 0x98, 0xd7, 0xf6, 
-	0x3b, 0xcc, 0x59, 0x8d, 0xeb, 0xc1, 0x71, 0x7c, 0x6d, 0x2c, 
-	0x34, 0xe6, 0x1b, 0xf1, 0x63, 0x7e, 0xfa, 0xfe, 0x20, 0x4c, 
-	0xf6, 0x10, 0x67, 0xaa, 0xf2, 0x8f, 0x3c, 0x66, 0x79, 0x68, 
-	0x3e, 0x59, 0x76, 0xf1, 0xe3, 0xc6, 0x98, 0x67, 0x8e, 0x93, 
-	0x86, 0x4e, 0x8d, 0xdf, 0x98, 0xff, 0xae, 0x1b, 0x53, 0xcb, 
-	0x33, 0x39, 0xcd, 0x5b, 0x7, 0xa3, 0x82, 0x9b, 0x3b, 0x22, 
-	0xe1, 0x8a, 0x19, 0x60, 0x26, 0xc4, 0x61, 0x44, 0x9f, 0x8a, 
-	0xc6, 0x8c, 0x30, 0x93, 0xae, 0xcb, 0x90, 0xa9, 0x58, 0x88, 
-	0xd1, 0xf2, 0x14, 0xd5, 0x8f, 0xa3, 0xb8, 0x6e, 0xec, 0x37, 
-	0x1d, 0x2d, 0xdc, 0x7c, 0x71, 0xbc, 0x5c, 0x1a, 0xae, 0x4f, 
-	0x65, 0xf0, 0xe6, 0x66, 0x78, 0x34, 0x7f, 0xe, 0xc8, 0x47, 
-	0x93, 0xdd, 0xd1, 0xf8, 0x34, 0x5a, 0xb2, 0xb7, 0x3a, 0x3c, 
-	0xae, 0x1f, 0xbb, 0xa1, 0xc3, 0xee, 0x6b, 0xd5, 0xcd, 0x35, 
-	0xc1, 0x1d, 0xe7, 0x3c, 0x12, 0xa4, 0xd1, 0x18, 0x30, 0x5a, 
-	0x78, 0x9c, 0xcc, 0x64, 0xb9, 0x5d, 0xf8, 0xdc, 0xe7, 0xe5, 
-	0x6d, 0xe1, 0x72, 0x23, 0xdd, 0xf1, 0xff, 0xfd, 0xe6, 0xc0, 
-	0x18, 0x64, 0x79, 0xaa, 0x32, 0x20, 0xc8, 0xf5, 0xb5, 00, 
-	0x1d, 0x67, 0x7c, 0xcc, 0xe0, 0x8e, 0x6f, 0xba, 0xe3, 0xbe, 
-	0xc3, 0x81, 0x3b, 0x1c, 0x98, 0xfa, 0x1c, 0xf0, 0xb8, 0x63, 
-	0xea, 0xe7, 0xf4, 0x4e, 0xe, 0xef, 0x70, 0xe0, 0xe, 0x7, 
-	0xc6, 0xc5, 0x81, 0x3b, 0xe0, 0x1e, 0x17, 0xbb, 0xee, 0x44, 
-	0xbe, 0xc3, 0x81, 0xf, 0xe, 0x7, 0xfe, 0x3f, 0xd2, 0x6d, 
-	0x85, 0xb4, 0xe8, 0xe9, 0xe0, 0x3, 00, 00, 00, 00, 
-	0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0};
-
-static const unsigned char data_img_control_z_png[] = {
-	/* /img/control_z.png */
-	0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x7a, 0x2e, 0x70, 0x6e, 0x67, 0,
-	0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00, 
-	00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x3b, 
-	00, 00, 00, 0xf4, 0x8, 0x6, 00, 00, 00, 0x25, 
-	0x9b, 0x5e, 0xd2, 00, 00, 00, 0x9, 0x70, 0x48, 0x59, 
-	0x73, 00, 00, 0xb, 0x13, 00, 00, 0xb, 0x13, 0x1, 
-	00, 0x9a, 0x9c, 0x18, 00, 00, 0x20, 00, 0x49, 0x44, 
-	0x41, 0x54, 0x78, 0x1, 0xed, 0x5d, 0x79, 0x78, 0x9c, 0x47, 
-	0x79, 0xff, 0xed, 0xae, 0xee, 0xfb, 0xb6, 0x25, 0x5f, 0xf2, 
-	0x21, 0xcb, 0x96, 0xcf, 0x24, 0x76, 0x7c, 0x3b, 0x3e, 0x62, 
-	0x97, 0x1c, 0x8e, 0x4d, 0x38, 0x4b, 0xe, 0x92, 0xa7, 0x94, 
-	0xd2, 0x3e, 0xd0, 0x14, 0x78, 0x42, 0x1b, 0x68, 0x49, 0xd2, 
-	0x34, 0x9, 0x14, 0xda, 0x3f, 0x1a, 0xfa, 0x40, 0x81, 0x4, 
-	0xda, 0xc4, 0x21, 0x9, 0x14, 0x48, 0xc0, 0x5, 0x72, 0x38, 
-	0x76, 0x20, 0x3e, 0x92, 0xd8, 0x96, 0x6f, 0x5b, 0xb6, 0xe4, 
-	0x43, 0x96, 0x25, 0x4b, 0x96, 0xac, 0x5b, 0x5a, 0x69, 0xb5, 
-	0xdb, 0xf7, 0x37, 0xbb, 0xb3, 0xfe, 0x56, 0x7b, 0x68, 0x3f, 
-	0xed, 0xa7, 0x48, 0x7e, 0xbc, 0xaf, 0x9e, 0xd1, 0xcc, 0x37, 
-	0xf7, 0x6f, 0xde, 0xf9, 0x66, 0xde, 0x79, 0x67, 0xf6, 0x1b, 
-	0x9b, 0xc7, 0xe3, 0xc1, 0xf5, 0x42, 0xf6, 0xeb, 0x5, 0x28, 
-	0x71, 0x5e, 0x57, 0x60, 0x13, 0xac, 0xe2, 0xac, 0x4d, 0xc8, 
-	0xaa, 0xbc, 0x6, 0xe7, 0x23, 0xaf, 0x9a, 0x25, 0xef, 0x9a, 
-	0xcd, 0x4c, 0x3e, 0x6, 0x40, 0x1a, 0x98, 0xee, 0x19, 0xfa, 
-	0x59, 0xdb, 0x83, 0xeb, 0x1b, 0xeb, 0xb3, 0x6, 0x4b, 0xdb, 
-	0x6d, 0xc8, 0x8c, 0xed, 0xa0, 0xc3, 0xc, 0xde, 0xa1, 0x9d, 
-	0x51, 0x81, 0xf5, 0x81, 0x24, 0x10, 0x1a, 0x2, 0xd4, 0xee, 
-	0x50, 0x76, 0xe8, 0x92, 0x62, 0xf3, 0x25, 0x20, 0x23, 0x50, 
-	0xfd, 0x4c, 0x7b, 0xc0, 0x97, 0xf5, 0x90, 0xc0, 0x23, 0x76, 
-	0xe3, 0x41, 0x20, 0x1d, 0x92, 0xa9, 0x6, 0xc7, 0x74, 0x74, 
-	0x1b, 0xfd, 0x74, 0x98, 0xb6, 0x7d, 0x75, 0x8, 0xb2, 0x18, 
-	0x9e, 0x22, 0xa6, 0x27, 0x28, 0x24, 0xd8, 0xc3, 0x8, 0x4a, 
-	0x83, 0xd5, 00, 0xb5, 0xcd, 0xfc, 0xc8, 0x6d, 0x37, 0xdf, 
-	0xa4, 0x48, 0x9c, 0xe, 0xcb, 0xd9, 0x10, 0x40, 0xc9, 0x51, 
-	0x82, 0x4c, 0xb8, 0xf7, 0xde, 0x7b, 0x2b, 0x4a, 0x4a, 0x4a, 
-	0x1e, 0x73, 0x38, 0x1c, 0xb7, 0xc8, 0x73, 0x92, 0x98, 0xa8, 
-	0xc8, 0xe5, 0x72, 0xe1, 0xf0, 0xe1, 0xc3, 0xe8, 0xea, 0xee, 
-	0xc2, 0xac, 0xf2, 0x59, 0x28, 0x28, 0x28, 0x88, 0x2a, 0x9d, 
-	0x21, 0x52, 0xbf, 0xdb, 0xed, 0x3e, 0x2d, 0xf9, 0xfc, 0xdf, 
-	0xb3, 0xcf, 0x3e, 0xfb, 0x2f, 0xad, 0xad, 0xad, 0x4, 0xe9, 
-	0x12, 0xa3, 0xc0, 0xfa, 0xdc, 0x61, 0x39, 0x1c, 0x9, 0xac, 
-	0xee, 0xae, 0x4, 0x48, 0x77, 0xa2, 0x18, 0x2, 0xbd, 0x69, 
-	0xd2, 0xa4, 0x49, 0xaf, 0x8e, 0x1b, 0x37, 0xce, 0x95, 0x95, 
-	0x95, 0x95, 0xc9, 0xd6, 0x8c, 0x86, 0x8, 0x74, 0xd7, 0xae, 
-	0x5d, 0xa8, 0xef, 0xa8, 0x47, 0x7f, 0x42, 0x1f, 0x32, 0x9d, 
-	0x59, 0x58, 0xba, 0x64, 0x29, 0x24, 0x9f, 0x68, 0x92, 0xfb, 
-	0xe3, 0x74, 0x77, 0x77, 0xa3, 0xb1, 0xb1, 0xb1, 0xbb, 0xbf, 
-	0xbf, 0x1f, 0x5b, 0xb7, 0x6e, 0x9d, 0x71, 0xee, 0xdc, 0xb9, 
-	0x6e, 0x9, 0x64, 0x57, 0x26, 0x68, 0xda, 0x34, 0x21, 0x1, 
-	0x13, 0x44, 0x10, 0x19, 0xb8, 0xca, 0x6e, 0xca, 0x38, 0xe4, 
-	0x5e, 0xe2, 0xed, 0xb7, 0xdf, 0x3e, 0x4d, 0x80, 0xbe, 0x3e, 
-	0x71, 0xe2, 0xc4, 0xd4, 0xec, 0xec, 0xec, 0xa8, 0x81, 0xe, 
-	0xc, 0xc, 0x60, 0xef, 0xde, 0xbd, 0x68, 0x68, 0x6f, 0x80, 
-	0x27, 0xd7, 0x83, 0xc2, 0xb2, 0x42, 0x74, 0x24, 0xb5, 0x63, 
-	0xef, 0x7b, 0x7b, 0xd1, 0xdc, 0xdc, 0x1c, 0x54, 0x7e, 0x24, 
-	0x8f, 0xb4, 0xb4, 0x34, 0x94, 0x96, 0x96, 0xa6, 0xa5, 0xa4, 
-	0xa4, 0x24, 0xdc, 0x7d, 0xf7, 0xdd, 0xdf, 0x94, 0xb8, 0xc9, 
-	0x62, 0x58, 0x4f, 0x6d, 0x34, 0x93, 0x82, 0xb2, 0x9, 0x9, 
-	0x56, 0x62, 0x91, 0x5d, 0xc, 0xd3, 0x40, 0xc9, 0xdd, 0x94, 
-	0xf2, 0xf2, 0xf2, 0x87, 0x73, 0x72, 0x72, 0x9a, 0x58, 0x60, 
-	0xb4, 0x24, 0xdd, 0xe, 0x1f, 0x7c, 0xf0, 0x1, 0xea, 0xaf, 
-	0xd4, 0x63, 0x20, 0x67, 00, 0xb, 0x6f, 0x5d, 0x80, 0xf2, 
-	0xa5, 0xe5, 0x28, 0x28, 0xcb, 0x47, 0x7b, 0x42, 0x1b, 0x76, 
-	0xef, 0xde, 0x8d, 0x2b, 0x57, 0xae, 0x44, 0x9b, 0x9d, 0x3f, 
-	0xde, 0xf8, 0xf1, 0xe3, 0x93, 0x52, 0x53, 0x53, 0xef, 0x11, 
-	0xf, 0xbe, 0xff, 0x4, 0xac, 0x7b, 0xa0, 0x1a, 0x47, 0x7c, 
-	0xc, 0xf3, 0xc7, 0xa7, 0x23, 0x8, 0xac, 0x81, 0xab, 0xc, 
-	0xd3, 0x19, 0x90, 0xb3, 0x49, 0xc9, 0xc9, 0xc9, 0x1f, 0x91, 
-	0xf7, 0x2c, 0x8f, 0x9, 0xa3, 0x21, 0xe9, 0x4b, 0xd8, 0xbf, 
-	0x7f, 0x3f, 0x6a, 0x1b, 0x6b, 0xd1, 0x9f, 0xd5, 0xaf, 0x80, 
-	0xa6, 0x65, 0xa5, 0x81, 0x5d, 0xbf, 0xfc, 0xe6, 0x99, 0xc8, 
-	0x29, 0xcd, 0x41, 0xab, 0xfd, 0x8a, 0x2, 0xdc, 0xde, 0xde, 
-	0x1e, 0x4d, 0x96, 0xfe, 0x38, 0x9, 0x9, 0xac, 0x1a, 0xd2, 
-	0xc5, 0x10, 0x28, 0xd, 0x5f, 0x33, 0x1a, 0x32, 0x4a, 0x1b, 
-	0x71, 0x5e, 0xa5, 0x20, 0xb0, 0xbe, 0x20, 0x1d, 0x99, 0x39, 
-	0x32, 0x3, 0x66, 0x96, 0x26, 0x95, 0xcc, 0xb2, 0xdb, 0xed, 
-	0x6c, 0xb9, 0xa8, 0xe8, 0xe0, 0xc1, 0x83, 0x38, 0x77, 0xf1, 
-	0x9c, 00, 0xed, 0xc3, 0x82, 0xf5, 0xf3, 0x91, 0x91, 0x9b, 
-	0xe1, 0x4f, 0x67, 0xb3, 0xdb, 0x30, 0x6b, 0x59, 0x39, 0xd2, 
-	0x27, 0xa5, 0xe3, 0x8a, 0xa7, 0x45, 0xbd, 0xcf, 0x5d, 0x5d, 
-	0x5d, 0xfe, 0xf0, 0xa1, 0x1c, 0x6c, 0x30, 0x69, 0x4c, 0xd6, 
-	0x3f, 0x55, 0x8c, 0x7a, 0xcd, 0xc4, 0x66, 0xbd, 0x15, 0x67, 
-	0xc5, 0xe, 0xa2, 0x50, 0x60, 0x8d, 0x40, 0xe9, 0x26, 0x58, 
-	0x9d, 0x59, 0x50, 0x6, 0xe1, 0x3c, 0x8e, 0x1c, 0x39, 0x82, 
-	0x9a, 0xf3, 0x35, 0xe8, 0x13, 0xa0, 0xf3, 0xd6, 0xce, 0x43, 
-	0x76, 0x61, 0x76, 0x50, 0x54, 0xbb, 0xc3, 0x8e, 0xd9, 0x2b, 
-	0x67, 0x23, 0xb9, 0x38, 0x19, 0x2d, 0xae, 0x16, 0xbc, 0xfb, 
-	0xee, 0xbb, 0xe8, 0xe9, 0x89, 0x66, 0x46, 0xa, 0xc8, 0x4a, 
-	0x73, 0x95, 0x75, 0xd4, 0x3d, 0x31, 0x24, 0xe0, 0x50, 0x60, 
-	0x99, 0x13, 0x23, 0x33, 0x8c, 0xb6, 0xee, 0x1e, 0x6c, 0xc1, 
-	0xa8, 0xe8, 0xe4, 0xc9, 0x93, 0x38, 0x55, 0x73, 0xa, 0xce, 
-	0xcc, 0x5e, 0xcc, 0x5d, 0x33, 0x17, 0x79, 0xc5, 0xe1, 0x7b, 
-	0xbe, 0x23, 0xc1, 0x81, 0x8a, 0xd5, 0xb3, 0x61, 0x2f, 0xb2, 
-	0xa3, 0xd9, 0x79, 0x59, 0x1, 0x76, 0x3a, 0x9d, 0x51, 0x95, 
-	0xe3, 0x8b, 0xc4, 0x7a, 0x11, 0x30, 0xeb, 0xaa, 0xc1, 0x32, 
-	0x88, 0x8c, 0xa, 0xa0, 0x50, 0x60, 0x75, 0x24, 0x86, 0x11, 
-	0xa8, 0xee, 0xca, 0x1c, 0x8, 0x86, 0xa4, 0xea, 0xea, 0x6a, 
-	0x1c, 0x3b, 0x71, 0xc, 0xbd, 0x19, 0xbd, 0x2, 0xa2, 0x2, 
-	0x85, 0x93, 0x86, 0x9e, 0x4b, 0x13, 0x12, 0x13, 0x30, 0xe7, 
-	0x96, 0xa, 0xa0, 0xc0, 0x83, 0xcb, 0xdd, 0x4d, 0xaa, 0x4b, 
-	0x73, 0x6a, 0x89, 0x92, 0x34, 0x33, 0x34, 0x50, 0xdd, 0x33, 
-	0x39, 0x36, 0x68, 0x2c, 0x2a, 0xab, 0x50, 0x60, 0x19, 0x40, 
-	0x7f, 0x46, 0xa4, 0xad, 0xc1, 0x32, 0xd3, 0x88, 0x74, 0xfe, 
-	0xfc, 0x79, 0x1c, 0x3a, 0x7c, 0x8, 0xce, 0xc, 0x27, 0x66, 
-	0xad, 0x9c, 0x85, 0xf1, 0x53, 0xc7, 0x47, 0x8c, 0x6f, 0xc, 
-	0x4c, 0x4c, 0x4e, 0x54, 0x80, 0x5d, 0x39, 0xfd, 0x68, 0x6c, 
-	0xbf, 0xa4, 0x6, 0x2d, 0xce, 0xcd, 0x51, 0x10, 0xeb, 0x65, 
-	0xec, 0x89, 0xac, 0xb3, 0xae, 0x7f, 0x40, 0x72, 0x2, 0x19, 
-	0x4c, 0xba, 0x65, 0x68, 0xeb, 0x4c, 0x18, 0x2f, 0x54, 0x5c, 
-	0x7f, 0xda, 0xba, 0xba, 0x3a, 0xec, 0x3f, 0xb0, 0x1f, 0x7d, 
-	0x99, 0x7d, 0x98, 0xb1, 0x6c, 0x6, 0x12, 0x53, 0x12, 0xf1, 
-	0xca, 0xb7, 0x7f, 0x2e, 0xe1, 0x1e, 0xdc, 0xf5, 0xa5, 0xbb, 
-	0x90, 0x90, 0x74, 0x35, 0x79, 0x4d, 0xe5, 0x19, 0xec, 0x7d, 
-	0x75, 0x8f, 0x12, 0x76, 0x3d, 0xfc, 0x2f, 0xa3, 0x36, 0x65, 
-	0x3f, 0xda, 0x3, 0xae, 0x1, 0x64, 0x16, 0x64, 0x4a, 0x4b, 
-	0xdb, 0xf1, 0xde, 0x7b, 0xef, 0x61, 0xc9, 0x92, 0x25, 0x10, 
-	0x49, 0xcd, 0x5f, 0x4e, 0x8, 0x87, 0x6, 0xcb, 0x2, 0x42, 
-	0x82, 0xd4, 0x69, 0xae, 0xd6, 0x40, 0xfb, 0x78, 0x6d, 0xd, 
-	0x58, 0xb7, 0x12, 0xed, 0x70, 0x71, 0xd1, 0xd0, 0xd0, 0x80, 
-	0x7d, 0xfb, 0xf6, 0xa1, 0x2f, 0xbd, 0xf, 0x53, 0x17, 0x4f, 
-	0x45, 0xe9, 0x9c, 0x52, 0x9c, 0xda, 0x7f, 0xa, 0xfb, 0x5f, 
-	0xdf, 0xaf, 0x72, 0xbb, 0xe3, 0xaf, 0xef, 0x8, 00, 0xdb, 
-	0xd6, 0xd4, 0x86, 0x93, 0x7b, 0xab, 0x2, 0x4b, 0x34, 0x3c, 
-	0xad, 0x79, 0x60, 0x35, 0xba, 0x5c, 0x9d, 0xa8, 0x6b, 0xac, 
-	0x53, 0x73, 0xf4, 0xe2, 0xc5, 0x8b, 0x21, 0xb3, 0x80, 0x21, 
-	0x46, 0x80, 0x93, 0x1, 0x1a, 0xb0, 0xae, 0x37, 0xed, 0x20, 
-	0xa, 0x5, 0x40, 0x47, 0xd4, 0xb9, 0x6b, 0xa0, 0x21, 0x9b, 
-	0xf7, 0xf2, 0xe5, 0xcb, 0x8a, 0x3, 0xce, 0x54, 0x27, 0x26, 
-	0x2f, 0x9c, 0x8c, 0xe9, 0xb, 0xa7, 0x73, 0x4a, 0x8, 0x2a, 
-	0xc8, 0xe8, 0x31, 0x79, 0xce, 0x64, 0x6c, 0xfe, 0xbb, 0x4d, 
-	0x70, 0xbb, 0xc9, 0x51, 0xf, 0x7a, 0x3a, 0x7b, 0xf0, 0xf6, 
-	0xff, 0xec, 0x80, 0xdb, 0x25, 0x22, 0xae, 0x94, 0x5e, 0x38, 
-	0xa5, 0x10, 0xb9, 0x13, 0x72, 0x71, 0x6c, 0xfb, 0x9, 0xd4, 
-	0xd6, 0xd7, 0xc2, 0xb1, 0xdf, 0x81, 0x9b, 0x6e, 0xba, 0x49, 
-	0xcd, 0xcf, 0xc6, 0x7c, 0x7c, 0x6e, 0x63, 0xbd, 0x8c, 0x60, 
-	0x35, 0xe, 0x7f, 0x92, 0x50, 0x60, 0x19, 0xa8, 0x13, 0x19, 
-	0xdd, 0x41, 0x89, 0x29, 0xf9, 0xec, 0xd9, 0xb3, 0x7, 0x7d, 
-	0xa9, 0x7d, 0x28, 0x9e, 0x5f, 0x82, 0x59, 0x4b, 0x66, 0x61, 
-	0xc0, 0xa3, 0x57, 0x5c, 0xfe, 0x32, 0x82, 0x1c, 0xf9, 0x25, 
-	0x79, 0xc8, 0x1b, 0x9f, 0xad, 0xc0, 0xf6, 0xc9, 0x40, 0xf4, 
-	0xb3, 0x47, 0x7f, 0xe6, 0x5, 0x2a, 0x31, 0xd7, 0xde, 0x7f, 
-	0xb, 0x26, 0xcf, 0x9d, 0x4, 0xb7, 0x34, 0xd8, 0xcc, 0x55, 
-	0x65, 0x38, 0xb9, 0xb3, 0xa, 0xe7, 0x2e, 0x9c, 0x3, 0x85, 
-	0x88, 0x85, 0xb, 0x17, 0x6, 0xe5, 0x25, 0x1e, 0xba, 0xae, 
-	0x46, 0x3b, 0x54, 0xbc, 0xf0, 0x5d, 0xd3, 0x17, 0xdb, 0x98, 
-	0x41, 00, 0x58, 0x4a, 0x3c, 0xbb, 0x44, 0xb0, 0x77, 0x26, 
-	0x3a, 0x51, 0x54, 0x31, 0xe, 0x15, 0xcb, 0x2a, 0xf0, 0xf4, 
-	0x7d, 0x4f, 0xa3, 0xb9, 0xce, 0x2b, 0xeb, 0x7a, 0x84, 0x6b, 
-	0x9a, 0x9e, 0xfa, 0xc4, 0xd3, 0xda, 0x89, 0x39, 0xab, 0x2a, 
-	0x70, 0xf7, 0xc3, 0x77, 0xfb, 0x9f, 0xb7, 0x3d, 0xf3, 0x7f, 
-	0x38, 0x7f, 0xa4, 0x56, 0x3d, 0x2f, 0xba, 0xf3, 0x46, 0x2c, 
-	0xda, 0x74, 0x93, 00, 0xe5, 0x22, 0x6, 0xc8, 0xcc, 0xcf, 
-	0xc4, 0xf4, 0x15, 0xd3, 0x51, 0xfd, 0xc7, 0x6a, 0xd4, 0x9c, 
-	0xad, 0x51, 0x80, 0xe7, 0xce, 0x9d, 0xab, 0xc2, 0xc, 0xff, 
-	0x2, 0xea, 0x65, 0xf0, 0xf, 0x72, 0xea, 0xae, 0x1a, 0x14, 
-	0x10, 0xc9, 0xa3, 0xb3, 0xb3, 0xd3, 0x3b, 0x1f, 0x3a, 0x9c, 
-	0xc8, 0x9f, 0x95, 0x8f, 0x79, 0xab, 0xe7, 0xab, 0x77, 0x8a, 
-	0xdd, 0x90, 0x3, 0xc, 0xd, 0x65, 0x62, 0x4d, 0xda, 0x4f, 
-	0xf9, 0xf, 0x5c, 0xf5, 0xdf, 0xb1, 0x75, 0x27, 0x8e, 0xec, 
-	0x38, 0xa2, 0xa2, 0xcd, 0x5c, 0x3a, 0x13, 0xeb, 0x1e, 0x58, 
-	0xab, 0x93, 0xf8, 0xed, 0xec, 0xa2, 0x2c, 0x94, 0x2e, 0x2b, 
-	0x45, 0xb3, 0xa3, 0x19, 0x55, 0xa7, 0xab, 0xc0, 0x39, 0xdc, 
-	0x4, 0x5, 0x34, 0x44, 0x40, 0x37, 0x1e, 0x3c, 0x2f, 0xf9, 
-	0x32, 0xd, 0x48, 0xc0, 0x25, 0x16, 0x39, 0xda, 0x23, 0x7f, 
-	0xd9, 0x65, 0xd9, 0xb8, 0x61, 0xad, 0x74, 0x2d, 0x91, 0x84, 
-	0x3c, 0x2, 0x6e, 0xf3, 0x17, 0x37, 0xa3, 0xb7, 0xbb, 0x57, 
-	0xbd, 0xb3, 0xd, 0x67, 0x1b, 0xb0, 0xfd, 0x85, 0xed, 0x2a, 
-	0x8b, 0x8f, 0x7e, 0x79, 0xb, 0x12, 0x64, 0x6a, 0xf1, 0x8, 
-	0xc7, 0xb4, 0x24, 0x55, 0xf9, 0xe6, 0x41, 0xfc, 0xf1, 0xe5, 
-	0x3f, 0xa9, 0xf0, 0x9, 0xb3, 0x26, 0x60, 0xd3, 0x97, 0xef, 
-	0x4, 0x45, 0x48, 0x63, 0x8f, 0xd0, 0xa0, 0x72, 0x8b, 0x73, 
-	0xe0, 0x5a, 0x3c, 0x11, 0xb5, 0xef, 0x5d, 0xc0, 0xb1, 0xe3, 
-	0xc7, 0x14, 0x87, 0xa7, 0x4f, 0x9f, 0xae, 0x83, 0x43, 0xd9, 
-	0x1, 0x75, 0xd6, 0x11, 0x2, 0xc0, 0x6a, 0x4f, 0xb1, 0x19, 
-	0x59, 0x1b, 0xbf, 0x77, 0x5f, 0x5f, 0x9f, 0x57, 0x86, 0x75, 
-	0x75, 0xc1, 0x9d, 0x23, 0x15, 0x2f, 0xc8, 0x46, 0xf5, 0xc1, 
-	0x6a, 0xb5, 0x72, 0xe6, 0xa0, 0x94, 0x9c, 0x9a, 0x8c, 0xd4, 
-	0xac, 0x54, 0x94, 0xcc, 0x28, 0x41, 0x46, 0x5e, 0x86, 0x1f, 
-	0xec, 0xdc, 0xd5, 0x73, 0x91, 0x9c, 0x96, 0xac, 0xba, 0x27, 
-	0xe3, 0x55, 0x1f, 0xa8, 0xc1, 0x6f, 0x9e, 0xd9, 0xa6, 0xf2, 
-	0xcd, 0x2a, 0xcc, 0xc2, 0xa6, 0x87, 0xee, 0x80, 0xab, 0xdf, 
-	0x5, 0x57, 0x9f, 0x1b, 0x7d, 0xbd, 0xfd, 0x68, 0xba, 0xd0, 
-	0xc4, 0x19, 0x4b, 0xbd, 0xb7, 0x8c, 0x4f, 0xc3, 0x77, 0xd8, 
-	0x9e, 0xed, 0xc0, 0xe5, 0xd6, 0x66, 0x35, 0x97, 0x27, 0x26, 
-	0x6, 0x4c, 0xfb, 0xa1, 0xc0, 0x5, 0xf9, 0x85, 0x3, 0xeb, 
-	0x7, 0x68, 0x74, 0x34, 0x35, 0x35, 0xa1, 0xa3, 0xbb, 0x3, 
-	0xee, 0x2c, 0xe9, 0x8a, 0x22, 0xe0, 0x9c, 0x3d, 0x70, 0x56, 
-	0x8d, 0xa6, 0x7a, 0x8e, 0x54, 0x15, 0x14, 0xe8, 0xac, 0x5c, 
-	0x24, 0xda, 0xfd, 0xcb, 0x5d, 0x70, 0xfb, 0xba, 0x73, 0x7b, 
-	0x53, 0x3b, 0x7e, 0xf0, 0xd7, 0x3f, 0xc, 0x88, 0x5e, 0x3c, 
-	0xa3, 0x58, 0x8d, 0xea, 0x92, 0x91, 0xca, 0x4b, 0xe7, 0xcf, 
-	0x17, 0x80, 0xa3, 0x77, 0x7, 0x3a, 0x71, 0xe2, 0xc4, 0x9, 
-	0x94, 0x96, 0x96, 0x6, 0xa4, 0x1b, 0xea, 0xc1, 0x14, 0xd8, 
-	0xa2, 0xa2, 0x22, 0x4c, 0x98, 0x30, 0x1, 0x5c, 0x8c, 0x87, 
-	0x22, 0x4e, 0x43, 0x4d, 0x57, 0x9a, 0x14, 0x97, 0x42, 0x85, 
-	0x47, 0xeb, 0xe7, 0x10, 0x59, 0x66, 0x66, 0xd6, 0xcc, 0xb0, 
-	0x6a, 0x1b, 0x4a, 0x81, 0x54, 0xe9, 0xb4, 0xb4, 0xb4, 0x44, 
-	0x9b, 0xa5, 0x8a, 0x67, 0xa, 0x2c, 0xbb, 0xce, 0xcc, 0x99, 
-	0x33, 0xc3, 0x16, 0x70, 0xfc, 0xf8, 0x71, 0x5, 0x96, 0x11, 
-	0xa6, 0xdf, 0x30, 0x1d, 0xdf, 0x7a, 0xeb, 0x69, 0x6f, 0x17, 
-	0x94, 0xf7, 0xd9, 0xc8, 0xed, 0x7b, 0xfe, 0xf9, 0x1e, 0x79, 
-	0x37, 0x39, 0x88, 0x89, 0xc4, 0xc4, 0x9e, 0x20, 0xe1, 0xec, 
-	0xa6, 0xe2, 0xc0, 0xd9, 0x43, 0x67, 0xd1, 0x74, 0xa8, 0x59, 
-	0x81, 0x99, 0x3d, 0x7b, 0x76, 0xd8, 0xb2, 0x18, 0x60, 0x16, 
-	0xec, 0xb0, 0x46, 0xe3, 0x88, 0x35, 0x18, 0xc3, 0x81, 0x71, 
-	0xb0, 0x63, 0x98, 0x39, 0x31, 0x55, 0x2d, 0xce, 0xd9, 0x98, 
-	0x9a, 0x6f, 0xc, 0x27, 0x8e, 0x73, 0x76, 0xc, 0x33, 0x27, 
-	0xa6, 0xaa, 0x5d, 0x57, 0x9c, 0x35, 0x25, 0x54, 0x14, 0x16, 
-	0x16, 0x46, 0xd4, 0xde, 0x77, 0x74, 0x74, 0xa0, 0xb7, 0xb7, 
-	0x17, 0x8d, 0xb5, 0x8d, 0xa0, 0x86, 0x90, 0xc2, 0x2, 0xc5, 
-	0x3b, 0xa, 0xf7, 0x69, 0xb2, 0x99, 0xe5, 0x12, 0xc9, 0xa7, 
-	0x5f, 0x54, 0x2c, 0x19, 0xb2, 0x6a, 0xea, 0x4e, 0x4e, 0x92, 
-	0xcd, 0x19, 0x1b, 0x92, 0xfa, 0x9c, 0xe8, 0x48, 0x49, 0xc1, 
-	00, 0x25, 0x59, 0x11, 0x2c, 0xda, 0x1a, 0xdb, 0x40, 0x19, 
-	0x9c, 0x79, 0xd, 0xb5, 0x53, 0xc0, 0xfa, 0x98, 0x21, 0x53, 
-	0x60, 0x99, 0x31, 0x75, 0x42, 0xe1, 0x88, 0xdb, 0x22, 0x4a, 
-	0xd, 0xda, 0x2a, 0x31, 0xc4, 0xd8, 0x1a, 0x1a, 0x1, 0x11, 
-	0x21, 0x91, 0x97, 0x7, 0xd7, 0xc5, 0x8b, 0x2a, 0x59, 0xa2, 
-	0x2c, 0xc2, 0x9d, 0xa2, 0x48, 0x73, 0x88, 0x9a, 0xc5, 0x21, 
-	0xd, 0x21, 0xa2, 0x13, 0xb2, 0x58, 0xe9, 0x1e, 0xd9, 0x9f, 
-	0x4a, 0x4a, 0x42, 0xce, 0x34, 0x59, 0xcd, 0x14, 0x1, 0xb, 
-	0x16, 0x2c, 0xc0, 0xbc, 0x79, 0xf3, 0xc2, 0x15, 0xa5, 0xfc, 
-	0xb9, 0x7f, 0x64, 0x86, 0x4c, 0x83, 0x8d, 0x94, 0xb9, 0x12, 
-	0x25, 0x85, 0x3b, 0xfd, 0xb2, 0xe5, 0x61, 0x4b, 0x4e, 0x56, 
-	0x6, 0x39, 0xa2, 0x1c, 0x17, 0xd1, 0x10, 0xe3, 0x87, 0xd8, 
-	0xad, 0xcb, 0xf0, 0xee, 0x16, 0x78, 0xb2, 0xb3, 0x91, 0xd8, 
-	0xd1, 0x8e, 0xb2, 0x49, 0x93, 0x22, 0x15, 0x35, 0xac, 0x30, 
-	0x4b, 0xc1, 0x26, 0x8b, 0xec, 0x3c, 0x6f, 0xca, 0x14, 0x38, 
-	0x76, 0xef, 0x2, 0x9c, 0xbd, 0xa2, 0x6a, 0x10, 00, 0x62, 
-	0x6, 0x28, 0xf7, 0xa, 0xbd, 0x74, 0xec, 0x38, 0x56, 0x4c, 
-	0x9c, 0x88, 0x67, 0xf, 0x1d, 0xc4, 0x3d, 0x15, 0x73, 0x70, 
-	0xf4, 0x72, 0x13, 0x56, 0xb, 0xa8, 0x42, 0xe9, 0x11, 0x8c, 
-	0xe3, 0x90, 0x6e, 0x8e, 0x66, 0xe9, 0x9, 0x42, 0x6e, 0x9, 
-	0xf3, 0x64, 0x65, 0x89, 0xbe, 0xd0, 0xba, 0x61, 0xc5, 0x32, 
-	0xb0, 0xb6, 0xb6, 0x36, 0xd8, 0x7f, 0x21, 0xaa, 0x53, 0xef, 
-	0x86, 0x93, 0xaa, 0x30, 0xff, 0x55, 0xb7, 0xb6, 0xe2, 0x91, 
-	0x9d, 0x3b, 0x91, 0x91, 0x98, 0x84, 0x63, 0xd2, 0xa5, 0x9f, 
-	0x11, 0x2d, 0x24, 0xe9, 0x8d, 0x33, 0x67, 0x95, 0xfd, 0xa2, 
-	0x34, 0x40, 0xae, 0xbc, 0xb3, 0x9b, 0x66, 0xcc, 0xc0, 0xe6, 
-	0xb2, 0x19, 0xec, 0xd8, 0x6a, 0x21, 0x6d, 0x97, 0xad, 0x10, 
-	0x6c, 0xdf, 0xe, 0xf7, 0xad, 0x1b, 0xe0, 0x99, 0x36, 0x4d, 
-	0xc5, 0x8d, 0xf5, 0x9f, 0x65, 0x60, 0x41, 0x85, 0xb6, 0x36, 
-	0x52, 0xab, 0x1e, 0x71, 0xdf, 0xfb, 0x9b, 0xdf, 0xa2, 0x57, 
-	0xec, 0xe6, 0x8, 0xfb, 0x37, 0x75, 0x32, 0x10, 0xd1, 0x9c, 
-	0x16, 0xe5, 0xdd, 0x2f, 0x44, 0xe5, 0xf2, 0xb7, 0xa2, 0x45, 
-	0x5c, 0x5c, 0x2c, 0xca, 0x75, 0x19, 0xe8, 0x14, 0xb1, 0x87, 
-	0xb0, 0x67, 0x90, 0xeb, 0x31, 0x92, 0x25, 0x60, 0xc9, 0x51, 
-	0x9b, 0x61, 0x53, 0xf9, 0x15, 0x59, 0x58, 0xef, 0xa9, 0xbb, 
-	0xa8, 0x40, 0x44, 0x5b, 0x3f, 0x36, 0xca, 0x29, 0x59, 0x9f, 
-	0xfe, 0x87, 0x70, 0x7e, 0x69, 0x49, 0x9, 0xfe, 0xe6, 0xc6, 
-	0x1b, 0xbc, 0x1c, 0x7e, 0xe7, 0x1d, 0xc8, 0x4e, 0x36, 0x6, 
-	0x3e, 0xf1, 0x49, 0xd9, 0xa0, 0xe4, 0xe, 0xe5, 0xf0, 0xc9, 
-	0x92, 0x17, 0xc2, 0x26, 0xa, 0x36, 0x4d, 0x2e, 0x99, 0x6e, 
-	0x5e, 0x3d, 0x75, 0x1a, 0xbb, 0x64, 0x87, 0x60, 0x38, 0x44, 
-	0xc0, 0x2f, 0xcb, 0xba, 0xb8, 0xc5, 0xd8, 0x1b, 0xb8, 0xef, 
-	0x63, 0x1, 0x67, 0x63, 0x3, 0x2b, 0x5d, 0xcd, 0xfe, 0xbb, 
-	0xdf, 0x49, 0x97, 0xf3, 0x6e, 0x33, 0x36, 0x8a, 0x32, 0xee, 
-	0xd6, 0x97, 0x5e, 0x46, 0xb5, 0x6f, 0x27, 0xfd, 0x6b, 0x5f, 
-	0xfb, 0x1a, 0x2a, 0x2b, 0x2b, 0xb1, 0x65, 0xcb, 0x96, 0x20, 
-	0xdc, 0x72, 0x36, 0x3, 0xaf, 0xbd, 0xf6, 0x1a, 0x8e, 0x1e, 
-	0x3d, 0x8a, 0x97, 0x5e, 0x7a, 0x9, 0x6b, 0xd6, 0xac, 0xf1, 
-	0xc7, 0xe9, 0x13, 0x4d, 0xc8, 0x96, 0x5f, 0xfe, 0xa, 0x3b, 
-	0x6b, 0xbd, 0x2a, 0x56, 0x2, 0xb5, 0xbf, 0xf9, 0x6, 0xd0, 
-	0x24, 0x53, 0x59, 0xc, 0x14, 0x5b, 0x37, 0x6e, 0x6b, 0x85, 
-	0xed, 0xfc, 0x39, 0x7f, 0xf1, 0x67, 0x65, 0x90, 0x62, 0x77, 
-	0x24, 0x71, 0xcb, 0xe2, 0x91, 0x47, 0x1e, 0x81, 0x1c, 0x4b, 
-	0x40, 0x7e, 0x7e, 0xbe, 0x3f, 0xe, 0x1d, 0x5f, 0xf8, 0xc2, 
-	0x17, 0xf0, 0xfd, 0xef, 0x7f, 0xdf, 0xef, 0x57, 0x51, 0x51, 
-	0x81, 0xcd, 0x9b, 0x37, 0xe3, 0xb6, 0xdb, 0x6e, 0xc3, 0x8e, 
-	0x1d, 0x3b, 0x94, 0x7f, 0xbf, 00, 0xae, 0x91, 0xc1, 0x6d, 
-	0xa5, 0x8c, 0xde, 0xe, 0x71, 0xdb, 0xea, 0xeb, 0x95, 0xf1, 
-	0x14, 0xca, 0x24, 0x3c, 0x4c, 0x8a, 0x89, 0xb3, 0x9c, 0x4b, 
-	0x91, 0x99, 0xa9, 0x8a, 0x26, 0x57, 0xbf, 0xba, 0xfd, 0x6d, 
-	0x3c, 0xf0, 0xc0, 0x3, 0x4a, 0xa7, 0xcc, 0xb3, 0x12, 0x4, 
-	0x3a, 0x98, 0xa8, 0x3f, 0xfa, 0xfa, 0xd7, 0xbf, 0xae, 0xbc, 
-	0xbf, 0xf7, 0xbd, 0xef, 0x61, 0xd6, 0xac, 0x59, 0x78, 0xfd, 
-	0xf5, 0xd7, 0x21, 0x7, 0x42, 0xf0, 0xd5, 0xaf, 0x7e, 0x35, 
-	0x20, 0xfa, 0x7f, 0x1d, 0xa8, 0xc4, 0xae, 0xb, 0xbe, 0xd7, 
-	0x41, 0x24, 0x2f, 0xa, 0x27, 0xb1, 0xd0, 0xf0, 0xc1, 0x8a, 
-	0x48, 0x67, 0xff, 0xc5, 0x2f, 0x20, 0x72, 0x9d, 0x2a, 0xbf, 
-	0xa5, 0xc7, 0xab, 0x2f, 0x9e, 0x3f, 0x7f, 0x3e, 0x96, 0x2f, 
-	0x5f, 0x1e, 0x76, 0xe7, 0xed, 0xc6, 0x1b, 0x6f, 0x84, 0x9c, 
-	0xb8, 0x51, 0x4a, 0xf4, 0x6f, 0x7c, 0xe3, 0x1b, 0x4a, 0xe9, 
-	0xfd, 0xd4, 0x53, 0x4f, 0xa9, 0x3c, 0x36, 0x6c, 0xd8, 0x20, 
-	0x63, 0x50, 0xe0, 0x20, 0xd4, 0xec, 0x7b, 0x45, 0x44, 0xcb, 
-	0x7, 0xfb, 0xb6, 0x6d, 0xc2, 0x5d, 0xaf, 0x24, 0x36, 0x1c, 
-	0xd0, 0xc3, 0x7, 0x4b, 0xbd, 0xed, 0xa4, 0xc9, 0xfe, 0x32, 
-	0x7f, 0x50, 0x79, 00, 0x1c, 0x9c, 0xbe, 0xf2, 0x95, 0xaf, 
-	0xa8, 0xdd, 0x1, 0xee, 0xba, 0x71, 0x1b, 0x73, 0x30, 0x95, 
-	0x95, 0x95, 0x29, 0x2f, 0x39, 0xbf, 0x4, 0x7d, 0x68, 0x84, 
-	0xef, 0x2d, 0x49, 0xe, 0xa8, 0xa8, 0x86, 0x50, 0xf, 0xbe, 
-	0x7f, 0xdf, 0x3f, 0x70, 00, 0xf5, 0xfa, 0xac, 0x85, 0x48, 
-	0x57, 0x9e, 0xdc, 0xe1, 0x73, 0x77, 0xf8, 0x60, 0x29, 0xe8, 
-	0x8b, 0x10, 0xaf, 0xa9, 0xdc, 0xd0, 0xc5, 0xb4, 0x62, 0x5b, 
-	0x87, 0x19, 0x6d, 0xaa, 0x63, 0x49, 0x6d, 0xf2, 0x7e, 0x6b, 
-	0x92, 0x93, 0x6a, 0xda, 0x9, 0x1d, 0xae, 0x3d, 0x36, 0x94, 
-	0x4e, 0x45, 0xb1, 0x8f, 0xdb, 0x1e, 0x69, 0x40, 0x9b, 0x2c, 
-	0x22, 0x86, 0x4b, 0xc3, 0x6, 0x6b, 0x6b, 0xbc, 0x4, 0x9b, 
-	0x4f, 0xb8, 0xa7, 00, 0xf1, 0xf6, 0xb9, 0xf3, 0x51, 0xd5, 
-	0x41, 0x77, 0x53, 0xae, 0x6c, 0x34, 0x71, 0x87, 0x5d, 0xab, 
-	0x5a, 0x75, 0xb8, 0xe, 0xfb, 0x7d, 0x4d, 0xd, 0x9c, 0xd2, 
-	0x85, 0x49, 0x36, 0x8e, 0xf2, 0xd5, 0xd5, 0x3a, 0xc8, 0xb4, 
-	0x3d, 0x6c, 0xb0, 0x9e, 0xc9, 0x53, 0xe0, 0x5e, 0x78, 0x83, 
-	0x2a, 0x30, 0x55, 0x44, 0xc4, 0x3b, 0x66, 0xc8, 0x6a, 0x25, 
-	0xa, 0xd2, 0x27, 0xda, 0x8c, 0x7, 0xc7, 0xe4, 0xf0, 0x96, 
-	0x7f, 0xef, 0x55, 0x87, 0xeb, 0xac, 0x6e, 0x90, 0xe3, 0x7e, 
-	0xc9, 0x1c, 0x9c, 0x84, 0x3c, 0xf2, 0xae, 0x7b, 0x44, 0xc2, 
-	0x1a, 0x2e, 0xd, 0x1b, 0xac, 0x8d, 0xd3, 0xc1, 0x89, 0xe3, 
-	0xfe, 0x72, 0x8f, 0x36, 0x79, 0x5, 0x78, 0xbf, 0x47, 0x18, 
-	0x87, 0x9c, 0x3b, 0x54, 0x21, 0x72, 0xd0, 0xd3, 0x1f, 0xa3, 
-	0xb8, 0xb8, 0xd8, 0xef, 0xbe, 0x74, 0xe9, 0x92, 0xdf, 0x4d, 
-	0xc7, 0x19, 0xe9, 0xe2, 0x72, 0x50, 0xd1, 0xeb, 0x77, 0xe1, 
-	0x2, 0xfb, 0x7f, 0x40, 0xb8, 0x99, 0x87, 0x61, 0x83, 0xf5, 
-	0x50, 0xa2, 0xe1, 0xaa, 0xc4, 0x47, 0x4f, 0xac, 0x5e, 0x85, 
-	0xb4, 0xc0, 0xcd, 0x26, 0x1d, 0x14, 0x60, 0xf3, 0xac, 0x13, 
-	0xbb, 0x6d, 0x9e, 0xbc, 0xe3, 0x7a, 0x73, 0x79, 0xed, 0xda, 
-	0xb5, 0x2a, 0xe, 0x7, 0x2d, 0x1e, 0x42, 0x31, 0xd2, 0xe3, 
-	0xab, 0x56, 0xfa, 0xf3, 0xb5, 0xf1, 0x18, 0xe1, 0xa0, 0x85, 
-	0x86, 0x31, 0xee, 0x50, 0xee, 0x61, 0x83, 0xe5, 0xd2, 0xcb, 
-	0xbd, 0xe9, 0x2e, 0xff, 0x3c, 0xdb, 0xda, 0x2b, 0x7b, 0xb5, 
-	0xd2, 0x1d, 0x87, 0x22, 0x6e, 0x8e, 0xfd, 0xfe, 0xf7, 0xbf, 
-	0x57, 0xd1, 0x7e, 0xfd, 0xeb, 0x5f, 0xe3, 0xb9, 0xe7, 0x9e, 
-	0xc3, 0x77, 0xbf, 0xfb, 0x5d, 0xf5, 0xfc, 0xfc, 0xf3, 0xcf, 
-	0xfb, 0xdf, 0x5d, 0x7a, 0x64, 0xa7, 0x24, 0xa3, 0x4b, 0x73, 
-	0x55, 0xba, 0xb2, 0xfb, 0xce, 0x4d, 0xe2, 0x19, 0x7c, 0x78, 
-	0x4c, 0x25, 0x8e, 0xe2, 0xdf, 0xf0, 0xc1, 0x4a, 0xe6, 0x36, 
-	0x76, 0x49, 0xdf, 0x3c, 0x3b, 0x2e, 0x3d, 0xd, 0x3f, 0xbe, 
-	0xed, 0x23, 0x51, 0x14, 0x9, 0xdc, 0x7f, 0xff, 0xfd, 0x6a, 
-	0xeb, 0x73, 0x8a, 0xac, 0x7d, 0x1f, 0x7c, 0xf0, 0x41, 0xa9, 
-	0x7f, 0x36, 0x5e, 0x78, 0xe1, 0x5, 0x3c, 0xfe, 0xf8, 0xe3, 
-	0x1, 0xe9, 0xbf, 0xb9, 0x7c, 0x5, 0x6e, 0xd6, 0x5d, 0x9c, 
-	0x83, 0x94, 0xc, 0x56, 0xb1, 0x50, 0x4c, 0xe2, 0xa2, 0x47, 
-	0xde, 0x3b, 0xf7, 0xfa, 0x5b, 0x61, 0x97, 0x23, 0x41, 0xb2, 
-	0xcb, 0x84, 0x3e, 0x99, 0x67, 0x6f, 0x9b, 0x3e, 0xd, 0x7f, 
-	0xa8, 0x39, 0xa3, 0x36, 0xaa, 0xe4, 0xa8, 0x6e, 0xc8, 0xba, 
-	0x51, 0xb7, 0xb4, 0x62, 0xc5, 0xa, 0xc8, 0xc9, 0x52, 0x4c, 
-	0x93, 0xb5, 0x2a, 0xe7, 0x59, 0xe3, 0x54, 0xc4, 0x44, 0xcb, 
-	0x64, 0xb7, 0x30, 0x53, 0xf4, 0x54, 0x8a, 0xe4, 0xf5, 0x70, 
-	0x2f, 0x5d, 0x6, 0x8f, 0xac, 0x79, 0x63, 0xa1, 0x98, 0xc0, 
-	0xb2, 0x60, 0x55, 0x81, 0x3f, 0xbe, 0xa3, 0xea, 0x50, 0x28, 
-	0xdd, 0xf8, 0x51, 0x1, 0xd1, 0xd4, 0xdd, 0x83, 0xf, 0x44, 
-	0x96, 0x1d, 0x8a, 0x78, 0xa4, 0x88, 0x66, 0x30, 0xf1, 0xdd, 
-	0xff, 0xf7, 0xf5, 0xeb, 0xd4, 0x12, 0x4f, 0x85, 0xb1, 0x2b, 
-	0x93, 0xc3, 0xa2, 0xa3, 0x8a, 0x85, 0x62, 0x6, 0xcb, 0xc2, 
-	0x39, 0x5, 0xd9, 0xd9, 0xa5, 0xcf, 0x9e, 0x51, 0x75, 0xf9, 
-	0xf2, 0xe2, 0x45, 0x4a, 0x2b, 0xf1, 0xe4, 0xae, 0xdd, 0xa6, 
-	0xeb, 0xf6, 0xc9, 0xd9, 0xb3, 0x70, 0xfb, 0x34, 0xc3, 0x34, 
-	0x26, 0x20, 0x3d, 0x32, 0x98, 0x79, 0x7c, 0x32, 0xb8, 0xe9, 
-	0xc, 0xd, 0x9, 0x2c, 0x1, 0xeb, 0xb9, 0xe1, 0x6, 0xb8, 
-	0x85, 0x43, 0x76, 0x1f, 0xd8, 0xe9, 0xb2, 00, 0x28, 0x95, 
-	0xf7, 0xb0, 0xae, 0xa3, 0x13, 0x67, 0x64, 0xaa, 0xd8, 0x39, 
-	0x68, 0x84, 0x35, 0x94, 0xef, 0x77, 0xce, 0x14, 0x40, 0x1b, 
-	0xa6, 0x96, 0xaa, 0x55, 0xce, 0x54, 0xc3, 0x20, 0xe4, 0x29, 
-	0x2d, 0x85, 0x7b, 0xfe, 0x2, 0x7f, 0xbc, 0x58, 0x1c, 0x96, 
-	0x80, 0x65, 0x5, 0x54, 0xeb, 0x97, 0x97, 0x8b, 0xcb, 0x6, 
-	0xdb, 0xc9, 0x13, 0x4a, 0x79, 0xf6, 0x85, 0x1b, 0x16, 0xa2, 
-	0x5b, 0xa6, 0x99, 0xe7, 0x8f, 0x64, 0x2b, 0x1d, 0xd4, 0x8f, 
-	0xe4, 0xfc, 0x31, 0x1b, 0xe2, 0xa8, 0xe8, 0xa2, 0x66, 0xe4, 
-	0xe6, 0xe2, 0x92, 0xc8, 0xbc, 0xeb, 0x5, 0xc, 0xfd, 0xe6, 
-	0x14, 0x16, 0xa0, 0xc2, 0xb0, 0x14, 0x24, 0x48, 0xf, 0x85, 
-	0x9, 0x11, 0x5e, 0xac, 0x22, 0xcb, 0xc0, 0xf2, 0x7d, 0x72, 
-	0xaf, 0x59, 0xb, 0x8, 00, 0x87, 0x80, 0x55, 0x24, 0xd3, 
-	0x53, 0x9a, 0xcc, 0x8b, 0x7f, 0xe5, 0x3b, 0xac, 0xb5, 0xbe, 
-	0x74, 0xa, 0xc6, 0x8b, 0x9c, 0xbb, 0x5b, 0xc4, 0x4c, 0xaa, 
-	0x5e, 0x2e, 0x8b, 0x36, 0x22, 0x4f, 0x96, 0x76, 0x4a, 0xab, 
-	0xa8, 0x11, 0x49, 0x1a, 0x59, 0x12, 0xc1, 0x33, 0xb3, 0x1c, 
-	0x9e, 0xa9, 0x53, 0xb5, 0xaf, 0x25, 0xb6, 0x75, 0x60, 0x75, 
-	0x75, 0x4, 0xcc, 0xc0, 0x5d, 0x9b, 0x61, 0x4b, 0x4d, 0x81, 
-	0x4d, 0xf4, 0x47, 0x5c, 0x74, 0x2b, 0x75, 0xa8, 00, 0x20, 
-	0x50, 0xd2, 0x32, 0x9f, 0xf4, 0xc4, 0x1, 0x4d, 0x91, 0x6, 
-	0x28, 0x9c, 0xf4, 0xfc, 0xf9, 0x67, 0x94, 0x3a, 0xd5, 0x63, 
-	0x58, 0x51, 0x79, 0x23, 0xc5, 0xfe, 0xdf, 0x7a, 0xb0, 0xac, 
-	0x13, 0x7, 0x15, 0xb1, 0x3c, 0xb2, 0x7b, 0x60, 0x13, 0x11, 
-	0xcf, 0x23, 0x2b, 0x17, 0xfb, 0xff, 0xca, 0xda, 0x97, 0xa3, 
-	0xa9, 0xc8, 0xba, 0x36, 0xbe, 0xc3, 0x5c, 0x25, 0x51, 0xa, 
-	0x13, 0x45, 0x9d, 0x7b, 0xdd, 0x3a, 0x51, 0xed, 0xc8, 0xa, 
-	0x4a, 0x84, 0x8, 0xf, 0x1b, 0xc4, 0xd7, 0x28, 0xb1, 0xc3, 
-	0xb, 0xcc, 0xc1, 0x14, 0x58, 0x1e, 0x20, 0xe1, 0xf, 0x1c, 
-	0x4c, 0x91, 0x4d, 0xba, 0xa5, 0x88, 0x81, 0xe9, 0xb3, 0x2b, 
-	0x54, 0xb2, 0x5e, 0xe9, 0xb6, 0x53, 0xba, 0xba, 0x51, 0x2f, 
-	0x73, 0xec, 0x80, 0x70, 0x32, 0x2d, 0x2f, 0x1f, 0xad, 0x6d, 
-	0xed, 0xde, 0x2c, 0x79, 0x82, 0xdc, 0x44, 0xfe, 0x83, 0xce, 
-	0x42, 0xd, 0x59, 0x2d, 0x53, 0x60, 0x99, 0x1b, 0x75, 0x45, 
-	0x66, 0xa8, 0x57, 0xd4, 0xaa, 0x5c, 0xf7, 0x3a, 0xab, 0x4e, 
-	0xa1, 0xfb, 0x60, 0x25, 0x92, 0xe5, 0x64, 0x9a, 0x53, 0xb4, 
-	0xfe, 0xc5, 0x69, 0xa9, 0xe8, 0x97, 0x81, 0xca, 0x21, 0x5c, 
-	0xcc, 0xb9, 0x65, 0x35, 0xfa, 0x2f, 0x35, 0x22, 0x3d, 0xc2, 
-	0x3e, 0x52, 0xa8, 0x32, 0x5f, 0x7d, 0xf5, 0xd5, 0x50, 0xde, 
-	0x61, 0xfd, 0x4c, 0x83, 0xd, 0x9b, 0xd3, 0xa0, 0x80, 0x5e, 
-	0xe, 0x52, 0x22, 0xe2, 0xb5, 0xbc, 0xf2, 0x8a, 0x57, 0x79, 
-	0xee, 0xb, 0x77, 0x9e, 0x3e, 0xad, 0x5c, 0x7d, 0x3e, 0xcd, 
-	0xa1, 0x4b, 0x6, 0xa9, 0xcb, 0x3f, 0xfe, 0xb1, 0x37, 0x54, 
-	0x7a, 0xb5, 0xcd, 0x91, 0x80, 0xb4, 0x18, 0x96, 0x71, 0x83, 
-	0xaa, 0x11, 0xf0, 0x38, 0x22, 0x60, 0x3d, 0x22, 0xf1, 0xb4, 
-	0x88, 0xac, 0xab, 0x34, 0xf9, 0x86, 0xe2, 0xb8, 0x54, 0xa3, 
-	0x74, 0x54, 0xd5, 0x72, 0x5, 0x33, 0xf3, 0x72, 0x95, 0x90, 
-	0x9f, 0x2e, 0xcf, 0x9a, 0xda, 0x44, 0xb5, 0x4a, 0x4a, 0x28, 
-	0xc8, 0x47, 0x12, 0xa7, 0x1c, 0xbe, 0xd3, 0x16, 0x92, 0xe5, 
-	0x60, 0x5b, 0xb6, 0xbe, 00, 0xe7, 0xa9, 0x53, 0x1, 0x40, 
-	0xf7, 0x89, 0xc0, 0x71, 0xb0, 0xb1, 0x9, 0xdb, 0x44, 0xcb, 
-	0xc0, 0xc3, 0x5d, 0xf5, 0xa2, 0x5a, 0x19, 0x9f, 0x91, 0x8e, 
-	0x76, 0x67, 0x1f, 0xfe, 0xbc, 0x62, 0x36, 0x4a, 0x64, 0x7, 
-	0xef, 0xe, 0xc3, 0xc1, 0xcb, 0xe6, 0x9f, 0xfc, 0x4, 0xf6, 
-	0xf4, 0xc, 0x14, 0x89, 0x3e, 0xcb, 0xc6, 0xb9, 0xd6, 0x22, 
-	0xb2, 0x14, 0xac, 0xb3, 0xfa, 0xb4, 0xbc, 0x7b, 0x97, 0xe0, 
-	0x11, 0x41, 0x82, 0x44, 0x60, 0xff, 0xb0, 0x63, 0x27, 0xe, 
-	0xc9, 0xb2, 0xae, 0x55, 0x14, 0xea, 0x46, 0x6a, 0xe8, 0xec, 
-	0x52, 0x8f, 0xcf, 0x1e, 0x3c, 0x84, 0x4, 0x99, 0x7a, 0xde, 
-	0x96, 0x11, 0xfa, 0x8b, 0xa2, 0x79, 0xa4, 0xe4, 0xc5, 0xf4, 
-	0x3, 0xed, 0x6d, 0x70, 0xca, 0xde, 0x4f, 0xa, 0x4f, 0xd4, 
-	0xc5, 0xb0, 0x86, 0x35, 0x96, 0x69, 0x19, 0x58, 0x72, 0xb3, 
-	0xf9, 0xbf, 0x7f, 0xea, 0xcf, 0xfb, 0xa0, 0xc8, 0xca, 0x3f, 
-	0x12, 0x20, 0xd1, 0x2c, 0x8, 0xa8, 0x95, 0xfc, 0x53, 0xed, 
-	0x5, 0x5c, 0x14, 0xf1, 0xf2, 0x9e, 0x39, 0x15, 0x5e, 0x2e, 
-	0x4b, 0x43, 0xb5, 0xbc, 0xb8, 0x15, 0x99, 0x6b, 0xd7, 0x21, 
-	0x73, 0xfd, 0x7a, 0x7f, 0xbe, 0xb1, 0x38, 0x64, 0x5e, 0x88, 
-	0x9d, 0xc8, 0x9, 0x97, 0x28, 0xe0, 0x34, 0xd5, 0xb6, 0x77, 
-	0xe0, 0xa7, 0x87, 0x8f, 0x84, 0x4, 0x3a, 0x79, 0xf2, 0x64, 
-	0x50, 0xf5, 0xf2, 0xcc, 0x33, 0xcf, 0xe8, 0xe8, 0x7e, 0x9b, 
-	0x3b, 00, 0x3f, 0x39, 0x74, 0x18, 0x87, 0xa5, 0x27, 0x68, 
-	0x72, 0xc9, 0xae, 0x83, 0x5b, 0xab, 0x52, 0xb5, 0xe7, 0x30, 
-	0x6d, 0x4b, 0xc0, 0x76, 0xcb, 0xdc, 0xd8, 0xc6, 0x3d, 0x1f, 
-	0x1f, 0xfd, 0xfa, 0x54, 0x15, 0x76, 0xf, 0xd2, 0x19, 0xaf, 
-	0x13, 0xc1, 0xe1, 0xe1, 0x87, 0x1f, 0xc6, 0xef, 0x24, 0x1e, 
-	0xd5, 0xa5, 0xf2, 0xdb, 0x5b, 0x1d, 0x3d, 0xc0, 0xbe, 0x20, 
-	0xca, 0x80, 0x67, 0xf6, 0x5d, 0x9d, 0xcb, 0x7b, 0x24, 0xef, 
-	0x76, 0x9f, 0x66, 0x23, 0x20, 0xe2, 0x30, 0x1e, 0x2c, 0xe9, 
-	0xc6, 0xe, 0x11, 0xea, 0x35, 0xbd, 0x5f, 0xdf, 0x80, 0xff, 
-	0x3d, 0x59, 0xa5, 0x1f, 0xfd, 0xf6, 0x7d, 0xf7, 0xdd, 0x87, 
-	0x8d, 0x1b, 0x37, 0x82, 0x9a, 0xc4, 0xa1, 0xe8, 0x90, 0xbc, 
-	0x2, 0xdc, 0xa4, 0xfe, 0x8c, 0xc, 0x5e, 0x24, 0x87, 0x8c, 
-	0xdc, 0x56, 0x50, 0xcc, 0x9c, 0x75, 0xcb, 0xc1, 0x8f, 0x2b, 
-	0x2f, 0x3c, 0xef, 0xaf, 0xb, 0x37, 0x95, 0xf5, 0xe6, 0x96, 
-	0xdf, 0x53, 0x1c, 0x54, 0xbf, 0xf0, 0xac, 0xf2, 0x43, 0xf, 
-	0x3d, 0x64, 0xf4, 0xe, 0xeb, 0xe6, 0x11, 0x4, 0x4d, 0x1d, 
-	0x6f, 0xbd, 0x85, 0x5e, 0x8e, 0xf0, 0x31, 0x52, 0xcc, 0x60, 
-	0xed, 0xc9, 0x29, 0x48, 0x2c, 0x99, 0xa0, 0xaa, 0x41, 0x79, 
-	0xf8, 0xe7, 0x22, 0x31, 0x59, 0x41, 0x1f, 0x48, 0xf, 0xe1, 
-	0x14, 0x45, 0x72, 0xc8, 0xc2, 0x3d, 0xc9, 0xe4, 0xcf, 0xc5, 
-	0x43, 0xd5, 0x21, 0x66, 0xb0, 0xfd, 0x32, 0x87, 0xf6, 0xf9, 
-	0x36, 0x9b, 0xb8, 0xaf, 0x6a, 0xb7, 0x48, 0x10, 0xb8, 0x4d, 
-	0x74, 0x53, 0xc5, 0xbe, 0x13, 0x34, 0x3, 0x2, 0x7a, 0x4c, 
-	0x70, 0xd6, 0x26, 0x73, 0xa4, 0xfe, 0x31, 0x23, 0x6d, 0xbb, 
-	0xdd, 0x1a, 0xa9, 0xe7, 0x4d, 0x59, 0x3c, 0x70, 0x4a, 0x52, 
-	0x24, 0xd3, 0x90, 0x5a, 0x26, 0x86, 0x62, 0x97, 0x9, 0xbf, 
-	0x98, 0x39, 0xeb, 0x90, 0x3, 0x5b, 0x9, 0xbe, 0x2e, 0x96, 
-	0x28, 0xc0, 0xc9, 0x5d, 0x2b, 0x88, 0x87, 0x4e, 0x5a, 0x7c, 
-	0x82, 0x88, 0x5d, 0x16, 0xb, 0xc9, 0xd3, 0xa6, 0xc6, 0x9c, 
-	0x6d, 0xcc, 0x60, 0xe5, 0xec, 0x1d, 0xd8, 0x95, 0x49, 0xe4, 
-	0x29, 0xcf, 0x37, 0x59, 0x41, 0x1b, 0x4a, 0x4b, 0x51, 0xc4, 
-	0x1d, 00, 0x21, 0xce, 0xb3, 0xae, 0xcb, 0xcd, 0x31, 0x67, 
-	0x1b, 0x33, 0x58, 0x9b, 0x4c, 0x25, 0xf9, 0xf7, 0xdd, 0xef, 
-	0xaf, 0xc8, 0x34, 0x39, 0xd1, 0x16, 0xcd, 0x36, 0x88, 0x3f, 
-	0x41, 0x18, 0x7, 0x75, 0x52, 0x9a, 0x32, 0x6f, 0xbd, 0x55, 
-	0x2d, 0xd, 0xf5, 0xf3, 0x70, 0xed, 0x98, 0xc1, 0xb2, 0x60, 
-	0x97, 0x28, 0xc8, 0x35, 0xdd, 0x24, 0x8b, 0xf2, 0x8f, 0x46, 
-	0xf8, 0x85, 0x8, 0xb7, 0x38, 0xf8, 0x6e, 0x7f, 0xf6, 0xb3, 
-	0x9f, 0xd5, 0x49, 0x82, 0xec, 0x5, 0x22, 0x74, 0x7c, 0x4a, 
-	0x8e, 0x1f, 0x68, 0x1a, 0x30, 0xe4, 0xaf, 0xfd, 0x86, 0x63, 
-	0x5b, 0x2, 0x36, 0x4d, 0x4, 0xf8, 0xec, 0x3b, 0xef, 0xf4, 
-	0x97, 0xff, 0xf1, 0xf2, 0x99, 0xea, 0x98, 0x9e, 0xdf, 0xc3, 
-	0x84, 0x63, 0x8a, 0x2c, 0x4, 0xbe, 0x7c, 0xf3, 0x62, 0x7f, 
-	0x8a, 0xb4, 0x45, 0x8b, 0x91, 0x75, 0xdb, 0xed, 0xfe, 0xe7, 
-	0x58, 0x1c, 0x96, 0x48, 0x50, 0x5c, 0x86, 0x39, 0xf2, 0xaf, 
-	0x76, 0x3b, 0x4e, 0x19, 0xf7, 0xcd, 0x9d, 0xa3, 0x46, 0x53, 
-	0x33, 0xe7, 0xa1, 0xca, 0xf3, 0xf3, 0xd4, 0x3b, 0x3f, 0x8b, 
-	0xfa, 0x29, 0x1f, 0x39, 0x44, 0xac, 0xb4, 0x47, 0x21, 0x75, 
-	0xe9, 0xf8, 0x91, 0x6c, 0x4b, 0x38, 0xcb, 0x2, 0x52, 0xe4, 
-	0xac, 0x44, 0xc1, 0x5f, 0x7e, 0x1e, 0x9, 0x3e, 0xd0, 0xf3, 
-	0x64, 0x94, 0xfe, 0x37, 0xd9, 0xc2, 0xd8, 0x30, 0xb5, 0x74, 
-	0xc8, 0xdd, 0xbd, 0x24, 0x69, 0x2c, 0xaa, 0x59, 0x9f, 0x58, 
-	0xb5, 0xa, 0x1b, 0x25, 0xbe, 0x22, 0xe9, 0xea, 0xf9, 0xf7, 
-	0x7f, 0x16, 0x19, 0xab, 0x57, 0x7b, 0x9f, 0x2d, 0xf8, 0x6f, 
-	0x9, 0x67, 0x75, 0x3d, 0x92, 0x64, 0x57, 0x2e, 0xb1, 0xa4, 
-	0x18, 0x3, 0x72, 0x84, 0xd6, 0x23, 0xa3, 0x34, 0x47, 0x67, 
-	0x2, 0xe0, 0xc2, 0xfd, 0x88, 0xac, 0x64, 0x5e, 0x13, 0x95, 
-	0xc, 0xa7, 0x27, 0xae, 0x6e, 0xb8, 0x6e, 0xe5, 0xf4, 0x72, 
-	0xcf, 0x9c, 0x39, 0x22, 0x3c, 0xa4, 0x83, 0xa3, 0xaf, 0x26, 
-	0x9b, 0x68, 0x21, 0xed, 0xd2, 0x3b, 0x92, 0x64, 0x41, 0x3f, 
-	0x66, 0x17, 0xef, 0xac, 0x6c, 0xee, 0xa7, 0x3e, 0xd, 0x8f, 
-	0xcc, 0xb5, 0xf5, 0x8f, 0x3f, 0xa6, 0x94, 0xdd, 0xf4, 0x5b, 
-	0x50, 0x54, 0xa8, 0xcc, 0xc7, 0x67, 0x95, 0xab, 0x23, 0x3, 
-	0xb5, 0xb2, 0xb2, 0x99, 0x24, 0x22, 0x20, 0xcf, 0x4a, 0xe8, 
-	0x23, 0x4, 0x8c, 0xa7, 0x29, 0x5f, 0xe4, 0xe8, 0xa4, 0x6b, 
-	0x45, 0x6f, 0x4c, 0x6e, 0xb0, 0xb, 0x52, 0xb3, 0xdf, 0xf2, 
-	0xb3, 0x17, 0x41, 0x9d, 0x14, 0x49, 0x3, 0x23, 0x50, 0xe3, 
-	0xb3, 0x7a, 0x90, 0x7f, 0x39, 0x77, 0x7f, 0xc, 0x36, 0xf9, 
-	0x48, 0xc7, 0x48, 00, 0x65, 0x19, 0x96, 0x76, 0x63, 0x5d, 
-	0x69, 0xda, 0xc9, 0xbe, 0xbd, 0xd4, 0xdc, 0xcf, 0xdc, 0x23, 
-	0x3f, 0x3f, 0xed, 0x7, 0xb5, 0x8d, 0x3d, 0x72, 0x8e, 0x31, 
-	0x45, 0xb6, 0x35, 0x7a, 0xe4, 0x7, 0xbf, 0x49, 0x53, 0x4a, 
-	0x45, 0x50, 0x68, 0x12, 0x5d, 0x93, 0xa8, 0x52, 0x3f, 0x7a, 
-	0x37, 0x5c, 0xd2, 0xcd, 0x39, 0xaa, 0x8f, 0x24, 0x99, 0x6, 
-	0x6b, 0x56, 0x57, 0xeb, 0xaf, 0xbc, 0xdd, 0x81, 0x84, 0x5, 
-	0xb, 0xe1, 0x12, 0xae, 0xe7, 0xc8, 0x3c, 0xdc, 0x9e, 0x21, 
-	0xdc, 0x95, 0x9f, 0x85, 0x92, 0xdc, 0x5a, 0x31, 0xae, 0xf, 
-	0x66, 0xfa, 0x13, 0x59, 0xeb, 0x30, 0xd, 0xf6, 0x73, 0x9f, 
-	0xfb, 0xdc, 0xb0, 0x6a, 0x30, 0x20, 0x67, 0x1b, 0x3b, 0x84, 
-	0xa3, 0x29, 0xc5, 0x25, 0xe8, 0x14, 0x45, 0x5a, 0xa6, 0xec, 
-	0xc3, 0xf6, 0x89, 0x8, 0x98, 0x19, 0xfc, 0x83, 0xfd, 0xa8, 
-	0xf3, 0xff, 0xb1, 0xd6, 0x37, 0x47, 0x99, 0xc2, 0x34, 0xd8, 
-	0x28, 0xf3, 0xf5, 0x47, 0xeb, 0x95, 0x1d, 0xbb, 0xf3, 0xcf, 
-	0x3d, 0xab, 0x54, 0xab, 0x3d, 0x3c, 0xda, 0xc3, 0x25, 0x20, 
-	0x57, 0x31, 0x3e, 0x3b, 0x43, 0xba, 0x75, 0x82, 0xfc, 0x8e, 
-	0x60, 0xca, 0xe7, 0xff, 0xca, 0x9f, 0x66, 0xa4, 0x1c, 0x23, 
-	0x6, 0x96, 0x23, 0xf2, 0x89, 0x6f, 0xfe, 0x13, 0x5c, 0xf2, 
-	0x89, 0x7, 0xb7, 0xe1, 0x34, 0x9b, 0x5f, 0x71, 0x4e, 0xc0, 
-	0x42, 0x9d, 0x55, 0x27, 0x95, 0xdd, 0xfe, 0xa5, 0x2f, 0xa2, 
-	0x70, 0xc3, 0x46, 0x8c, 0xbf, 0xeb, 0x2e, 0xf5, 0x3c, 0x12, 
-	0xff, 0x46, 0x4, 0x6c, 0xbb, 0x7c, 0x81, 0xef, 0xe2, 0xcf, 
-	0x5f, 0x91, 0x6e, 0x7a, 0xf5, 0x20, 0x18, 0x77, 0x3, 0x8e, 
-	0xc8, 0xf3, 0x65, 0x39, 0x6f, 0x71, 0x4e, 0x74, 0xc2, 0xe3, 
-	0x64, 0x60, 0x5a, 0x25, 0x27, 0xd6, 0xb2, 0x64, 0x4e, 0xe5, 
-	0x28, 0xcd, 0x6, 0x69, 0x7a, 0xeb, 0x4d, 0x74, 0x9, 0xf8, 
-	0xa9, 0x5f, 0xfc, 0x12, 0xec, 0xb2, 0x1, 0x66, 0x35, 0x59, 
-	0xe, 0x96, 0xdd, 0xb6, 0xf1, 0xf5, 0x3f, 0xc0, 0xe9, 0x3b, 
-	0xa9, 0xc6, 0x5, 0xf8, 0xaf, 0xaa, 0x4e, 0xe1, 0x7b, 0x72, 
-	0xf6, 0x5f, 0x9f, 0x41, 0xd4, 0x20, 0xfe, 0x75, 0xcf, 0x5e, 
-	0xcc, 0x93, 0x39, 0x98, 0x9b, 0xd5, 0x8b, 0x64, 0x1, 0xe1, 
-	0x96, 0xf5, 0x6b, 0xa7, 0xe8, 0x9a, 0x9a, 0xde, 0x78, 0x3, 
-	0x45, 0x1f, 0xf9, 0x8, 0x6c, 0x86, 0xad, 0x11, 0x9d, 0x26, 
-	0x16, 0xdb, 0x32, 0x71, 0x51, 0x57, 0xa2, 0xee, 0x95, 0x97, 
-	0x85, 0x3b, 0x5e, 0xed, 0x22, 0x25, 0xa4, 0x6f, 0x8b, 0xfe, 
-	0xf8, 0xdf, 0xdf, 0x7f, 0x3f, 0x8, 0xa8, 0x8e, 0x5f, 0x25, 
-	0xdb, 0x95, 0x4f, 0x88, 0xea, 0x94, 0xda, 0x44, 0x4d, 0xd, 
-	0xbf, 0xfd, 0xd, 0x5a, 0x79, 0xdc, 0xc8, 0x62, 0xb2, 0x94, 
-	0xb3, 0x57, 0xe4, 0x63, 0x1d, 0xdd, 0xbe, 0x83, 0x59, 0x9, 
-	0xa2, 0x49, 0xbc, 0xf9, 0x6f, 0x1f, 0x2, 0x67, 0x4e, 0x9e, 
-	0x38, 0xbd, 0x53, 0x56, 0x45, 0xc6, 0xbd, 0x5d, 0x9e, 0x3e, 
-	0xe5, 0x87, 0x35, 0x78, 0xc0, 0x9a, 0x87, 0xbf, 0x56, 0xc8, 
-	0x81, 0xec, 0xac, 0xe4, 0x24, 0xdc, 0xe9, 0xdb, 0xf3, 0xb9, 
-	0x24, 0x7, 0xa9, 0xd3, 0xcb, 0x66, 0x22, 0xc9, 0xa0, 0xa6, 
-	0x8d, 0x15, 0xbb, 0xa5, 0x9c, 0xed, 0x3a, 0x23, 0x87, 0xbd, 
-	0x7c, 0x9f, 0x24, 0xcb, 0x96, 0xa3, 0x6, 0x3b, 0xe5, 0x9c, 
-	0x22, 0xf, 0x61, 0xf2, 0x8b, 0x25, 0x4f, 0x3f, 0xfd, 0x74, 
-	0x40, 0x5d, 0xf9, 0xbb, 0x80, 0x47, 0x1f, 0x7d, 0x14, 0xcb, 
-	0x96, 0x2d, 0x53, 0xfe, 0x3, 0xd2, 0xdd, 0x7f, 0x54, 0x79, 
-	0x50, 0x9d, 0xb3, 0xa0, 0x87, 0x53, 0xb4, 0x1f, 0x2e, 0x91, 
-	0xa1, 0xad, 0x24, 0xcb, 0xc0, 0x72, 0x30, 0x6a, 0xd9, 0xf5, 
-	0xae, 0xbf, 0x6e, 0xa9, 0x72, 0x6e, 0x82, 0x7, 0x2f, 0x49, 
-	0x3c, 0x7c, 0xc9, 0xdf, 0x2, 0x18, 0xe9, 0x7d, 0xe9, 0xda, 
-	0x1f, 0xfb, 0xd8, 0xc7, 0xf0, 0xe, 0x7f, 0xb7, 0xe3, 0x23, 
-	0x9e, 0x9e, 0xd9, 0x61, 0x38, 0x46, 0xd4, 0xe0, 0xdb, 0xc2, 
-	0xd4, 0xe1, 0xb1, 0xda, 0x96, 0x81, 0xb5, 0xcb, 0x81, 0x11, 
-	0x35, 0x77, 0x4a, 0x8d, 0xf8, 0x93, 0xb4, 0x44, 0x19, 0x4d, 
-	0xf9, 0x1d, 0x1a, 0x12, 0xbf, 0xb8, 0x67, 0x3c, 0x5f, 0xac, 
-	0x3c, 0xc3, 0xfc, 0xe3, 0xf6, 0x87, 0x26, 0x87, 0xec, 0xce, 
-	0x5b, 0x49, 0x96, 0x81, 0xed, 0x90, 0xf3, 0x87, 0x5a, 0xe0, 
-	0x6f, 0x12, 0x90, 0x3c, 0x24, 0xad, 0xbf, 0x83, 0xca, 0xbd, 
-	0x9d, 0xc1, 0x87, 0xa6, 0xc3, 0x81, 0xe0, 0xb9, 0x47, 0x3d, 
-	0x6a, 0xb7, 0x1f, 0x3a, 0x14, 0xb0, 0xcf, 0x1b, 0x2e, 0x4d, 
-	0xb4, 0xfe, 0x96, 0x81, 0xa5, 0x24, 0xa4, 0xa7, 0x8a, 0x9, 
-	0xb2, 0xaa, 0xe1, 0xf7, 0xd7, 0xd6, 0xac, 0x59, 0xa3, 0xce, 
-	0x14, 0xdf, 0x72, 0xcb, 0x2d, 0xea, 0x99, 0x3f, 0x7d, 0x79, 
-	0xf2, 0xc9, 0x27, 0xd5, 0x6f, 0x63, 0xc3, 0x55, 0x70, 0x92, 
-	0x68, 0x26, 0xf4, 0xea, 0x28, 0x9b, 0xe7, 0xa7, 0x28, 0x69, 
-	0x59, 0x44, 0x96, 0x81, 0x75, 0x89, 0xd6, 0x5e, 0x73, 0x96, 
-	0x82, 0xc2, 0x73, 0xf2, 0x9b, 0x1d, 0xee, 0xd4, 0x1d, 0x90, 
-	0x5f, 0x6f, 0xf0, 0x88, 0xed, 0x77, 0xbe, 0xf3, 0x1d, 0x65, 
-	0xf3, 0x37, 0x3d, 0x73, 0x64, 0xc1, 0x1e, 0x8e, 0xca, 0xc, 
-	0xa3, 0x6f, 0x6f, 0x14, 0x87, 0x3d, 0xc3, 0xe5, 0x13, 0xca, 
-	0xdf, 0xb2, 0xa9, 0x27, 0x55, 0x8e, 0xdb, 0xe6, 0xc8, 0xc1, 
-	0x8f, 0x56, 0x11, 0x1e, 0xb2, 0x93, 0x93, 0x51, 0x22, 0x3f, 
-	0xfb, 0xe6, 0x46, 0x16, 0x8f, 0xe1, 0x5e, 0x10, 0x99, 0x58, 
-	0x7f, 0x7c, 0x47, 0xef, 0x1e, 0xe8, 0xca, 0xf0, 0x67, 0x6a, 
-	0x9a, 0xc8, 0xd1, 0xdb, 0xa7, 0x4f, 0xd3, 0x8f, 0x18, 0x6f, 
-	0xf2, 0x64, 0x8e, 0x3f, 0x61, 0x18, 0x87, 0x65, 0x9c, 0x65, 
-	0xfe, 0x9, 0xbe, 0x45, 0x39, 0xdd, 0xf, 0xc8, 0x4f, 0xb8, 
-	0xb3, 0x85, 0xc3, 0x1c, 0x91, 0x35, 0x50, 0xfa, 0x47, 0xa2, 
-	0x8d, 0x72, 0x7c, 0x6f, 0x8e, 0x6f, 0xd9, 0xc7, 0x78, 0x9, 
-	0x99, 0x59, 0x91, 0xa2, 0x9b, 0xe, 0xb3, 0x14, 0xec, 0x4, 
-	0x51, 0xc9, 0xa4, 0xfb, 0x7e, 0xd8, 0x9b, 0x23, 0xdc, 0xfd, 
-	0xb7, 0x75, 0x6b, 0x45, 0x50, 0x48, 0x8e, 0xaa, 0x52, 0xb, 
-	0x65, 0xb, 0xe5, 0x1b, 0xcb, 0xbd, 0x73, 0x2e, 0x13, 0x4c, 
-	0x90, 0x63, 0x7d, 0x69, 0x6, 0xbd, 0x54, 0x54, 0x99, 0xc, 
-	0x11, 0xc9, 0x52, 0xb0, 0xdc, 0x7c, 0xca, 0x5b, 0xb1, 0x12, 
-	0x89, 0xbe, 0xf7, 0x6e, 0xb6, 0x9c, 0x32, 0xdd, 0xba, 0xe9, 
-	0x4e, 0x50, 0x71, 0x1e, 0x8e, 0xd8, 0x18, 0x3c, 0x47, 0xf1, 
-	0x83, 0x3f, 0xdb, 0xe8, 0x8f, 0x92, 0x3e, 0x6d, 0x3a, 0xb2, 
-	0x62, 0x58, 0xe7, 0xfa, 0x33, 0x1a, 0xe4, 0xb0, 0xec, 0x9d, 
-	0xd5, 0xf9, 0xe6, 0xad, 0x5c, 0x9, 0xe, 0x56, 0xf5, 0xbf, 
-	0xfa, 0xa5, 0xf2, 0xe2, 0xef, 0xd9, 0xff, 0x73, 0xe3, 0x6, 
-	0xbc, 0x71, 0xf6, 0x2c, 0xf6, 0x37, 0x5c, 0x42, 0xab, 0xfc, 
-	0xd2, 0xf9, 0xac, 0xc8, 0xc3, 0xdc, 0xc7, 0x59, 0x31, 0x71, 
-	0x2, 0xa8, 0x72, 0x65, 0xa3, 0x68, 0xa2, 0xfe, 0x6a, 0xca, 
-	0xe7, 0x3f, 0xef, 0x6f, 0x30, 0xed, 0x6f, 0x85, 0x6d, 0x39, 
-	0x58, 0x56, 0x8a, 0x2b, 0x96, 0x4c, 0x19, 0x71, 0xab, 0x9e, 
-	0x7a, 0xd2, 0xaf, 0x61, 0xa4, 0xaa, 0xd4, 0xa8, 0x2e, 0xd, 
-	0x55, 0xf9, 0x2c, 0xf9, 0xd1, 0xe2, 0xc4, 0x7b, 0xee, 0x45, 
-	0xa2, 0x4c, 0x51, 0x23, 0x41, 0x23, 0x2, 0x96, 0x15, 0x4d, 
-	0x95, 0xb5, 0x6a, 0xd9, 0xdf, 0xff, 0x83, 0x2c, 0xce, 0xab, 
-	0x50, 0xcf, 0x13, 0xa9, 0xd2, 0xc5, 0xa9, 0x6d, 0xc, 0x22, 
-	0xf1, 0x4f, 0x90, 0x45, 0xc1, 0xe4, 0x7, 0x1e, 0x44, 0xaa, 
-	0x2c, 0x8, 0x8c, 0x83, 0x5c, 0x50, 0xdc, 0x18, 0x3d, 0x46, 
-	0xc, 0x2c, 0xeb, 0xc5, 0x1, 0x86, 0x26, 0x47, 0xb4, 0x86, 
-	0xfd, 0xa2, 0xb1, 0xb8, 0x2c, 0x67, 0x23, 0x92, 0x65, 0x77, 
-	0xae, 0x4d, 0x24, 0xa3, 0x9c, 0x45, 0x8b, 0xd4, 0xe2, 0xbe, 
-	0x78, 0xcb, 0x47, 0x55, 0x43, 0x24, 0xf8, 0x76, 0xd9, 0x63, 
-	0xc4, 0x13, 0x31, 0xb9, 0x69, 0xb0, 0x66, 0x95, 0x5c, 0x1, 
-	0xa5, 0x53, 0x1a, 0xe2, 0x3e, 0x2b, 0xcf, 0x60, 0x5c, 0xac, 
-	0xf7, 0x6, 0xf1, 0x20, 0xe7, 0x87, 0x44, 0xa6, 0xc1, 0xf2, 
-	0xdb, 0x31, 0x63, 0x85, 0xf8, 0x6b, 0x6a, 0x33, 0x64, 0xed, 
-	0xd4, 0x63, 0xa6, 0xe4, 0x51, 0x88, 0x1b, 0x7, 0x3b, 0xa, 
-	0x8d, 0xfe, 0xa1, 0x14, 0x19, 0xe7, 0xec, 0x87, 0xd2, 0xcc, 
-	0xa3, 0x50, 0x48, 0x9c, 0xb3, 0xa3, 0xd0, 0xe8, 0x1f, 0x4a, 
-	0x91, 0x71, 0xce, 0x7e, 0x28, 0xcd, 0x3c, 0xa, 0x85, 0xc4, 
-	0x39, 0x3b, 0xa, 0x8d, 0xfe, 0xa1, 0x14, 0x69, 0x5a, 0x36, 
-	0x36, 0x2b, 0x8f, 0x7e, 0x28, 0x28, 0xa2, 0x2c, 0xc4, 0x34, 
-	0xd8, 0xe1, 0x1e, 0x33, 0x88, 0xb2, 0x3e, 0xa6, 0xa2, 0x99, 
-	0x5d, 0x81, 0xc5, 0xdf, 0x59, 0x53, 0xcd, 0x7b, 0xd, 0x45, 
-	0x8e, 0x73, 0xf6, 0x1a, 0x62, 0x96, 0xa9, 0xaa, 0xc6, 0x39, 
-	0x6b, 0xaa, 0xb9, 0xae, 0xa1, 0xc8, 0x71, 0xce, 0x5e, 0x43, 
-	0xcc, 0x32, 0x55, 0xd5, 0x38, 0x67, 0x4d, 0x35, 0xd7, 0x35, 
-	0x14, 0x39, 0xce, 0xd9, 0x6b, 0x88, 0x59, 0xa6, 0xaa, 0x1a, 
-	0xe7, 0xac, 0xa9, 0xe6, 0xba, 0x86, 0x22, 0xc7, 0x39, 0x7b, 
-	0xd, 0x31, 0xcb, 0x54, 0x55, 0xe3, 0x9c, 0x35, 0xd5, 0x5c, 
-	0xd7, 0x50, 0xe4, 0x38, 0x67, 0xaf, 0x21, 0x66, 0x99, 0xaa, 
-	0xea, 0x75, 0xc5, 0x59, 0xd3, 0xda, 0x45, 0xb3, 0x1a, 0x3d, 
-	0x53, 0x4d, 0x3f, 0xc2, 0x91, 0x4d, 0x83, 0x35, 0xfb, 0x59, 
-	0xb3, 0x91, 0xac, 0xbf, 0xd9, 0x9f, 0xca, 0x5d, 0x57, 0xdd, 
-	0x38, 0xe, 0x76, 0x24, 0xbb, 0xde, 0x68, 0xe6, 0x1d, 0xe7, 
-	0xec, 0x68, 0xb6, 0xfe, 0x48, 0x96, 0x1d, 0xe7, 0xec, 0x48, 
-	0xb6, 0xee, 0x68, 0xe6, 0x1d, 0xe7, 0xec, 0x68, 0xb6, 0xfe, 
-	0x48, 0x96, 0x1d, 0xe7, 0xec, 0x48, 0xb6, 0xee, 0x68, 0xe6, 
-	0x1d, 0xe7, 0xec, 0x68, 0xb6, 0xfe, 0x48, 0x96, 0x1d, 0xe7, 
-	0xec, 0x48, 0xb6, 0xee, 0x68, 0xe6, 0x1d, 0xe7, 0xec, 0x68, 
-	0xb6, 0xfe, 0x48, 0x96, 0x1d, 0xe7, 0xec, 0x48, 0xb6, 0xee, 
-	0x68, 0xe6, 0x1d, 0xe7, 0xec, 0x68, 0xb6, 0xfe, 0x48, 0x96, 
-	0x7d, 0x5d, 0x71, 0xd6, 0xb4, 0x2a, 0xd5, 0xac, 0xfa, 0x72, 
-	0x24, 0x39, 0x65, 0x36, 0x6f, 0x53, 0x60, 0xfb, 0xe5, 0x33, 
-	0x47, 0x91, 0xae, 0x3e, 0x37, 0x5b, 0x78, 0xac, 0xf1, 0xcd, 
-	0x5e, 0x7d, 0x7e, 0x5d, 0x75, 0xe3, 0x38, 0xd8, 0x58, 0xbb, 
-	0xd7, 0x58, 0x4d, 0x1f, 0xe7, 0xec, 0x58, 0xe5, 0x4c, 0xac, 
-	0xf5, 0x8a, 0x73, 0x36, 0xd6, 0x16, 0x1c, 0xab, 0xe9, 0xe3, 
-	0x9c, 0x1d, 0xab, 0x9c, 0x89, 0xb5, 0x5e, 0x71, 0xce, 0xc6, 
-	0xda, 0x82, 0x63, 0x35, 0x7d, 0x9c, 0xb3, 0x63, 0x95, 0x33, 
-	0xb1, 0xd6, 0x2b, 0xce, 0xd9, 0x58, 0x5b, 0x70, 0xac, 0xa6, 
-	0x8f, 0x73, 0x76, 0xac, 0x72, 0x26, 0xd6, 0x7a, 0xc5, 0x39, 
-	0x1b, 0x6b, 0xb, 0x8e, 0xd5, 0xf4, 0x71, 0xce, 0x8e, 0x55, 
-	0xce, 0xc4, 0x5a, 0xaf, 0x38, 0x67, 0x63, 0x6d, 0xc1, 0xb1, 
-	0x9a, 0x3e, 0xce, 0xd9, 0xb1, 0xca, 0x99, 0x58, 0xeb, 0x75, 
-	0x5d, 0x71, 0xd6, 0xd4, 0xf6, 0xc7, 0x50, 0x2d, 0xeb, 0x94, 
-	0x2f, 0xcd, 0x57, 0xc9, 0x17, 0x34, 0xfb, 0x8c, 0xd7, 0x5f, 
-	0xc, 0x95, 0x28, 0x44, 0x78, 0x92, 0x7c, 0x2a, 0x78, 0xa6, 
-	0xdc, 0xfc, 0x92, 0x1c, 0xe5, 0x17, 0x74, 0x43, 0x64, 0x11, 
-	0xd2, 0xcb, 0x34, 0xd8, 0x48, 0xfb, 0x2b, 0x67, 0xe4, 0xd3, 
-	0xfa, 0x27, 0xe5, 0xc6, 0x16, 0xb7, 0x3d, 0xc4, 0x67, 0x42, 
-	0xd, 0xc5, 0xcb, 0xa7, 0x26, 0x23, 0x7e, 0x7e, 0xdb, 0xe6, 
-	0xb1, 0xa1, 0xbc, 0xac, 0x1c, 0x53, 0xe5, 0x7b, 0xc7, 0x56, 
-	0x92, 0x29, 0xb0, 0x4d, 0x72, 0x81, 0x10, 0x5b, 0x3c, 0x1c, 
-	0x35, 0xc8, 0xb7, 0xff, 0x13, 0x53, 0x13, 0x31, 0x30, 0xa1, 
-	0x1f, 0xd9, 0x45, 0x39, 0xf2, 0x39, 0x71, 0xdf, 0xdd, 0x96, 
-	0x72, 0xb1, 0xbd, 0x83, 0x37, 0x6e, 0xc9, 0x3d, 0x97, 0xfc, 
-	0x53, 0x97, 0x7b, 0xca, 0x37, 0x52, 0xe5, 0x16, 0x4c, 0x15, 
-	0x87, 0xfe, 0x7c, 0x9f, 0x6c, 0x36, 0x7, 0x5a, 0x2f, 0xb5, 
-	0xa2, 0xa3, 0xb6, 0x43, 0xdd, 0x53, 0x9b, 0x6b, 0xf8, 0x64, 
-	0x77, 0xa8, 0x32, 0xd9, 0x8b, 0xcc, 0x90, 0x29, 0xb0, 0xd1, 
-	0x66, 0x9c, 0x5d, 0x94, 0x85, 0x29, 0xf3, 0x26, 0xfb, 0xc0, 
-	0xa, 0x24, 0x1, 0xe6, 0x20, 0x34, 0x82, 0x15, 0xe0, 0x4, 
-	0x4b, 0x3f, 0xbb, 0xb8, 0xd9, 0x20, 0x5e, 0xb7, 0x17, 0x6c, 
-	0x4d, 0x65, 0x8d, 0x2, 0x1b, 0x6d, 0x59, 0x66, 0xe2, 0x5d, 
-	0x57, 0x3, 0x54, 0x1c, 0xac, 0x99, 0xae, 0x71, 0x2d, 0xc5, 
-	0x8d, 0x73, 0xf6, 0x5a, 0xe2, 0x96, 0x99, 0xba, 0xc6, 0x39, 
-	0x6b, 0xa6, 0xb5, 0xae, 0xa5, 0xb8, 0xa6, 0xe6, 0x59, 0x9e, 
-	0x96, 0xe1, 0x44, 0x1e, 0xee, 0xc6, 0x87, 0xcb, 0x86, 0xb, 
-	0xc4, 0x62, 0x6d, 0x4, 0xe6, 0x75, 0xfc, 0xf8, 0xd5, 0xab, 
-	0xa8, 0x8c, 0xf9, 0x71, 0x6e, 0x2e, 0x30, 0xdc, 0x24, 0x61, 
-	0xc, 0x8b, 0xe4, 0x36, 0x5, 0xb6, 0xb1, 0xb1, 0x11, 0x6d, 
-	0x6d, 0x6d, 0xf0, 0xc8, 0x5f, 0x58, 0x12, 0x41, 0xc9, 0x91, 
-	0x10, 0x3a, 0xdb, 0xdf, 0x3c, 0xb3, 0xd, 0xdd, 0x6d, 0xde, 
-	0x3b, 0x7c, 0xa4, 0xbe, 0x42, 0x22, 0x50, 0x28, 0xcb, 0x86, 
-	0xf4, 0xac, 0x34, 0x7c, 0xe2, 0x6b, 0x9f, 0x44, 0x42, 0xa2, 
-	0x37, 0x2d, 0xaf, 0xbc, 0x89, 0x74, 0xed, 0xd, 0xef, 0xff, 
-	0x29, 0x2d, 0x2d, 0x65, 0xea, 0xa8, 0x29, 0x74, 0xad, 0xc2, 
-	0x24, 0x2f, 0x94, 0xb, 0xe, 0x7a, 0x5d, 0xbd, 0xa8, 0xe9, 
-	0x3e, 0x23, 0x88, 0x80, 0xe2, 0xb2, 0xf1, 0x70, 0x38, 0x58, 
-	0x61, 0x79, 0xf5, 0x7d, 0x22, 0x5f, 0x9a, 0x8, 0xef, 0xe3, 
-	0xa6, 0x15, 0x85, 0xcc, 0xa1, 0x66, 0x7f, 0xd, 0xda, 0x9a, 
-	0xda, 0x42, 0x86, 0x65, 0x15, 0x78, 0xef, 0xf9, 0x98, 0x30, 
-	0x73, 0x82, 0x92, 0xb4, 0x6, 0xfa, 0x79, 0xab, 0x38, 0xc5, 
-	0x4d, 0xa, 0x95, 0xcc, 0xde, 0x86, 0xe6, 0xfa, 0x16, 0x5c, 
-	0x69, 0x6c, 0x85, 0xa3, 0xd3, 0x8e, 0xf2, 0xf2, 0x72, 0x70, 
-	0xe1, 0x61, 0x86, 0x4c, 0x81, 0xe5, 0x6a, 0x64, 0xf5, 0xf2, 
-	0xd5, 0xe8, 0x7f, 0xa7, 0x1f, 0x17, 0xfa, 0xeb, 0xe0, 0xec, 
-	0x72, 0xa2, 0x6c, 0xe9, 0x74, 0xa9, 0x88, 0x48, 0xbe, 0x4a, 
-	0xfc, 0xe3, 0x57, 0xf2, 0x6d, 0x70, 0xc8, 0x73, 0x28, 0xda, 
-	0xf0, 0x17, 0xb7, 0xa2, 0xbf, 0xb7, 0xdf, 0x2b, 0x22, 0x4a, 
-	0xe5, 0xf, 0xed, 0x38, 0x8c, 0xea, 0xfd, 0xd5, 0x2a, 0x6a, 
-	0xc1, 0x44, 0xef, 0xbd, 0x96, 0x89, 0x49, 0x89, 0x28, 0x9d, 
-	0x5b, 0xaa, 0x44, 0x49, 0x5, 0x56, 0x6e, 0x8c, 0xe0, 0x28, 
-	0xda, 0x52, 0xdf, 0x8c, 0x9a, 0x43, 0x67, 0xe0, 0xe8, 0xb6, 
-	0x63, 0x4e, 0xe9, 0x1c, 0x75, 0x9, 0xd9, 0x88, 0xcb, 0xc6, 
-	0xbc, 0xf5, 0x6c, 0xf5, 0xb2, 0xd5, 0xd8, 0xfe, 0xee, 0x76, 
-	0x34, 0x5c, 0x68, 0xc0, 0xf9, 0x83, 0xe7, 0x51, 0xba, 0x70, 
-	0x6a, 00, 0xb6, 0xe6, 0xba, 0x16, 0x74, 0x36, 0x77, 0x9, 
-	0x28, 0xa9, 0x2e, 0x39, 0x23, 0x8e, 0x82, 0x92, 0x2, 0x54, 
-	0xac, 0x9c, 0x2d, 0x6e, 0xaf, 0x6c, 0x7c, 0x6a, 0x5f, 0x35, 
-	0x28, 0x7, 0x93, 0xf2, 0x8a, 0xf3, 0xf0, 0x99, 0x7f, 0xfa, 
-	0x74, 0x40, 0x1e, 0xc6, 0x87, 0xf6, 0xe6, 0x76, 0xec, 0x7b, 
-	0x53, 0xae, 0x8e, 0x93, 0x37, 0x60, 0x7a, 0xd1, 0x74, 0xc5, 
-	0x55, 0x63, 0x78, 0xb4, 0x6e, 0x53, 0x9c, 0xd5, 0x99, 0xf2, 
-	0x46, 0xa5, 0x55, 0x37, 0xaf, 0xc2, 0xdb, 0xbb, 0xdf, 0xc6, 
-	0xa5, 0xd3, 0x8d, 0x72, 0x9f, 0x56, 0x32, 0x26, 0x56, 0x4c, 
-	0xd4, 0xc1, 0xd8, 0xbf, 0x6d, 0x3f, 0x2a, 0x5f, 0x97, 0x2b, 
-	0xa3, 0xc, 0xb4, 0xfe, 0x81, 0x75, 0x58, 0xf1, 0xf1, 0xe5, 
-	0xca, 0xa7, 0xbe, 0xba, 0x1, 0xaf, 0x3c, 0xf9, 0xa, 0x3c, 
-	0x6e, 0xf, 0xd2, 0xe4, 0x5d, 0x7d, 0xf0, 0x5b, 0xf, 0x22, 
-	0x23, 0x27, 0xc3, 0x10, 0xfb, 0xaa, 0xb3, 0xbb, 0xbd, 0x1b, 
-	0xef, 0xff, 0xe1, 0x7d, 0xb8, 0x3b, 0xdd, 0x98, 0x92, 0x3d, 
-	0x5, 0xf3, 0xe5, 0xca, 0x8c, 0xe1, 0xd2, 0xb0, 0xe7, 0x59, 
-	0xbe, 0xbf, 0x2b, 0x6e, 0x5a, 0x81, 0x3c, 0x4f, 0x1e, 0x2e, 
-	0x1c, 0xb9, 0x80, 0xc6, 0x33, 0x8d, 0x51, 0xd5, 0xa1, 0xfd, 
-	0x72, 0x3b, 0xb6, 0x3e, 0xf6, 0x22, 0xfa, 0x7a, 0xfb, 0x90, 
-	0x90, 0x94, 0x80, 0xfb, 0x9e, 0xb8, 0xf, 0xf9, 0x13, 0xae, 
-	0x5e, 0x74, 0x62, 0xcc, 0xc4, 0xd9, 0xe3, 0x54, 0x40, 0xfb, 
-	0xdb, 0xfa, 0x31, 0x3e, 0x65, 0x3c, 0x6e, 0x94, 0x9b, 0x26, 
-	0xd8, 0x4b, 0x86, 0x4b, 0xc3, 0xe2, 0xac, 0x2e, 0x8c, 0x37, 
-	0x2d, 0x2d, 0x76, 0xde, 0x8c, 0xbd, 0x87, 0xf7, 0xe0, 0xcc, 
-	0xbe, 0x33, 0x48, 0x4e, 0x49, 0x44, 0xfe, 0xc4, 0x3c, 0xac, 
-	0xf8, 0xf4, 0xa, 0x2c, 0xde, 0x7c, 0xb3, 0xea, 0xc6, 0x6a, 
-	0x19, 0x27, 0x5d, 0x39, 0x23, 0x33, 0x1d, 0xce, 0x6e, 0x27, 
-	0xb6, 0x3e, 0xfa, 0x22, 0x3a, 0x9a, 0x3b, 0x54, 0xa5, 0x3f, 
-	0xf5, 0xc8, 0x27, 0x31, 0x79, 0xf6, 0x24, 0x9d, 0x5d, 0x80, 
-	0xed, 0xea, 0x73, 0x61, 0xff, 0x1b, 0xfb, 0xd0, 0xdb, 0xd2, 
-	0x83, 0x42, 0x47, 0x1, 0x96, 0xdc, 0xbc, 0x44, 0x6, 0xc3, 
-	0xd0, 0x63, 0x41, 0x40, 0xc2, 0x8, 0xf, 0x31, 0x81, 0x65, 
-	0xbe, 0xd3, 0xe4, 0x32, 0x22, 0xde, 0x1a, 0x71, 0xe0, 0xf4, 
-	0x1, 0x54, 0xed, 0x39, 0x85, 0xb9, 0x6b, 0x2a, 0x90, 0x53, 
-	0x98, 0x83, 0xf4, 0xec, 0x74, 0x5, 0x48, 0x8d, 0xa6, 0x7c, 
-	0x6f, 0x65, 0x70, 0x7d, 0xe9, 0x89, 0x97, 0xd1, 0x78, 0xd6, 
-	0xdb, 0x3, 0xd6, 0xdd, 0xbf, 0x16, 0xa5, 0xf3, 0x4b, 0xd1, 
-	0xd3, 0xd9, 0xe3, 0x1f, 0xdc, 0xd2, 0xe4, 0x6a, 0x56, 0x92, 
-	0x7b, 0xc0, 0x8d, 0xca, 0xb7, 0x2b, 0xd1, 0x71, 0xa9, 0x3, 
-	0xb9, 0xee, 0x5c, 0x2c, 0x5b, 0xb9, 0xc, 0x89, 0x16, 0xdc, 
-	0x6b, 0x19, 0x33, 0x58, 0x56, 0x8e, 0xb7, 0x17, 0x72, 0x1a, 
-	0x38, 0x52, 0x7b, 0x4, 0xc7, 0xff, 0x74, 0x12, 0xb, 0xd6, 
-	0xcd, 0x43, 0xfa, 0xa0, 0x77, 0xb0, 0xa1, 0xa6, 0x41, 0x46, 
-	0x5e, 0xef, 0x80, 0xc4, 0x34, 0x6f, 0xfd, 0xf7, 0x76, 0x65, 
-	0xe8, 0xd6, 0xf4, 0xd8, 0x6b, 0x8f, 0x21, 0x2d, 0x23, 0xd, 
-	0x47, 0xfe, 0x74, 0x4, 0x2d, 0xb5, 0x2d, 0xc8, 0xe8, 0xcb, 
-	0xc0, 0xf2, 0x95, 0xcb, 0x61, 0xd5, 0x67, 0x86, 0xa3, 0x79, 
-	0x67, 0x23, 0x48, 0x10, 0xba, 0x9a, 0x72, 0xe3, 0xf7, 0x82, 
-	0x5, 0x28, 0x2b, 0x2a, 0x43, 0x52, 0x4f, 0x12, 0x8e, 0xbe, 
-	0x73, 0x5c, 0x75, 0xd9, 0xab, 0xa1, 0xd1, 0xbb, 0xaa, 0xde, 
-	0xaf, 0x42, 0xc3, 0xe9, 0x6, 0xa4, 0xf6, 0xa4, 0x62, 0xf9, 
-	0x92, 0xe5, 0xc8, 0xb0, 0xf0, 0xb6, 0x97, 0x70, 0x9c, 0x25, 
-	0x40, 0x6d, 0xa2, 0xaa, 0x29, 0xbb, 0xeb, 0x22, 0x5e, 0x4b, 
-	0xb3, 0xab, 0xf, 0x67, 0xdb, 0xcf, 0xe0, 0xe8, 0xce, 0x63, 
-	0x98, 0xbf, 0x7e, 0x1e, 0x92, 0x53, 0xbd, 0x77, 0x6c, 0x95, 
-	0x94, 0x95, 0xe0, 0x9b, 0xbf, 0xfd, 0x47, 0xe9, 0xda, 0xe1, 
-	0xd5, 0x32, 0xe7, 0x8e, 0xd6, 0xe2, 0xdc, 0xd1, 0x73, 0x48, 
-	0xeb, 0x4e, 0xc3, 0xd2, 0xc5, 0x4b, 0x31, 0x94, 0xe, 0xca, 
-	0x50, 0xb1, 0x50, 0xc, 0x9, 0xf2, 0x8b, 0x86, 0xb3, 0x86, 
-	0x3c, 0x23, 0x3b, 0x13, 0x44, 0x4c, 0x5c, 0xba, 0x74, 0x29, 
-	0x4a, 0x52, 0x27, 0xc8, 0xa5, 0x9b, 0x3, 0x38, 0xf6, 0xc7, 
-	0xe3, 0x18, 0x70, 0x51, 0x12, 0x1a, 0x9a, 0x2e, 0x9e, 0xbe, 
-	0x88, 0x53, 0xef, 0x9f, 0x42, 0x4a, 0x67, 0xa, 0x16, 0x2d, 
-	0x58, 0x4, 0xde, 0x92, 0x68, 0x35, 0x5, 0x80, 0x95, 0xab, 
-	0x53, 0x83, 0x5a, 0xc3, 0x50, 0x60, 0xa4, 0x30, 0x7f, 0x34, 
-	0x4a, 0x59, 0x2b, 0x96, 0xaf, 0xc0, 0xb8, 0x84, 0x71, 0xe8, 
-	0x6d, 0xea, 0xc5, 0x89, 0x5d, 0x27, 0xd5, 0x7c, 0xea, 0x8f, 
-	0x10, 0xc2, 0x71, 0xf9, 0x82, 0x8, 0xfd, 0xbb, 0x4e, 0x20, 
-	0xa5, 0x3b, 0x5, 0xb, 0x2a, 0x16, 0xa8, 0xbb, 0xf4, 0x42, 
-	0x44, 0x33, 0xe3, 0xa5, 0xeb, 0xaa, 0x6d, 0x95, 0x36, 00, 
-	0xec, 0xa0, 0xdc, 0x18, 0x51, 0x1b, 0xb2, 0x47, 0x25, 0xc, 
-	0xb7, 0xe2, 0x31, 0xa6, 0x4d, 0x4d, 0x95, 0xf7, 0x6d, 0xd9, 
-	0x72, 0xe4, 0xa3, 00, 0xed, 0x17, 0xda, 0x15, 0xc7, 0x8c, 
-	0xe1, 0x46, 0x37, 0x65, 0xe5, 0xc3, 0x3b, 0xf, 0x23, 0xa9, 
-	0x2b, 0x19, 0xb3, 0xa7, 0xcd, 0x56, 0x77, 0xd2, 0x1a, 0xc3, 
-	0x87, 0x70, 0xeb, 0xfa, 0xd, 0x11, 0xcd, 0x1b, 0x1c, 0xe, 
-	0xac, 0x31, 0x13, 0x6a, 0xbc, 0x15, 0xd0, 0xfa, 0xfa, 0xfa, 
-	0x1d, 0xa2, 0x3b, 0xee, 0x8f, 0x26, 0x67, 0x5e, 0xed, 0xb8, 
-	0x6c, 0xc9, 0x32, 0xe4, 0xc, 0xe4, 0xa2, 0xe9, 0xf4, 0x65, 
-	0x9c, 0x39, 0x78, 0x26, 0x28, 0x59, 0x57, 0x5b, 0x17, 0x2a, 
-	0xb7, 0x1f, 0x44, 0x62, 0x47, 0x22, 0xa6, 0x15, 0x4f, 0x53, 
-	0xa3, 0x7a, 0x50, 0xa4, 0x30, 0x1e, 0x6c, 0x74, 0x11, 0x30, 
-	0xc8, 0x4, 0xd6, 0x4f, 0xd7, 0xd1, 0x58, 0xef, 0xa0, 0x94, 
-	0xa1, 0xc0, 0x2a, 0x60, 0x12, 0x53, 0x27, 0xa4, 0xcd, 0x4c, 
-	0xfb, 0x4f, 0x9c, 0x38, 0xb1, 0xb7, 0xbd, 0xbd, 0x5d, 0xee, 
-	0xc5, 0x65, 0xde, 0x43, 0x53, 0xbe, 0x5c, 0x1, 0xb7, 0x64, 
-	0xd1, 0x12, 0x64, 0xf7, 0x65, 0xa3, 0xf6, 0x48, 0x1d, 0xea, 
-	0x4e, 0xd6, 0xf9, 0x13, 0xf5, 0x76, 0xf5, 0xa2, 0xf2, 0xad, 
-	0x4a, 0x38, 0xda, 0xed, 0x98, 0x98, 0x37, 0x51, 0x5d, 0xf0, 
-	0xe9, 0xf, 0x8c, 0xc2, 0xc1, 0xb9, 0xdd, 0xe5, 0x72, 0x75, 
-	0x4a, 0x54, 0x23, 0xe0, 0x88, 0xa0, 0x43, 0x81, 0x65, 0x51, 
-	0x4, 0xa8, 0x5b, 0xcc, 0xe5, 0x73, 0xbb, 0xf6, 0xec, 0xd9, 
-	0x73, 0x58, 0xb4, 0xfe, 0x1f, 0xc8, 0x36, 0xc7, 00, 0xf7, 
-	0x73, 0x22, 0xbf, 0xe2, 0xcc, 0x6, 0x18, 0x2f, 0x17, 00, 
-	0xde, 0xb8, 0xe0, 0x46, 0x64, 0x3a, 0x33, 0x51, 0xfd, 0x41, 
-	0xd, 0x1a, 0xcf, 0x35, 0xa2, 0xdf, 0xd9, 0x8f, 0x83, 0xdb, 
-	0xf, 0xc1, 0x73, 0x45, 0xc2, 0x33, 0x8a, 0xb1, 0x78, 0xf1, 
-	0x62, 0xb5, 0x94, 0xf3, 0xa6, 0x88, 0xfc, 0x9f, 0xd, 0xdd, 
-	0x29, 0xf7, 0xee, 0xd5, 0xd5, 0xd5, 0x61, 0xdb, 0xb6, 0x6d, 
-	0xdf, 0x92, 0xd8, 0x4, 0xab, 0x1, 0x33, 0xb1, 0x66, 0x12, 
-	0xdd, 0x1, 0x64, 0x1b, 0x5c, 0x61, 0xe9, 0x1a, 0x94, 0xc9, 
-	0x92, 0xc4, 0x70, 0xce, 0x48, 0x13, 0x43, 0xb1, 0x26, 0x53, 
-	0xc, 0x2f, 0xab, 0xcb, 0xa3, 0xbd, 0x65, 0xcb, 0x96, 0x4d, 
-	0x72, 0x53, 0xf0, 0x46, 0x99, 0x6e, 0x12, 0x25, 0x7d, 0xb8, 
-	0x6, 0x93, 0xa8, 0x57, 0xa9, 0xb6, 0xb6, 0x16, 0x35, 0x17, 
-	0x6a, 0x30, 0x90, 0x3b, 0x80, 0xb4, 0xec, 0x14, 0xf4, 0x5e, 
-	0x72, 0x22, 0x73, 0x20, 0x4b, 0x9, 0xf6, 0x26, 0xa4, 0x23, 
-	0x29, 0xce, 0xe3, 0x16, 0x8e, 0x76, 0x6c, 0xdf, 0xbe, 0xfd, 
-	0x87, 0x72, 0x7, 0x75, 0xa5, 0x94, 0x20, 0x37, 0x94, 0xa1, 
-	0x55, 0xc, 0x17, 0xca, 0xb2, 0x2e, 0x42, 0x97, 0x18, 0x2e, 
-	0x74, 0xfb, 0xc4, 0xb8, 0x98, 0x40, 0x6c, 0x45, 0xe1, 0xc0, 
-	0x72, 0xfe, 0xe5, 0x6d, 0x5d, 0xbc, 0xda, 0x97, 0x76, 0xb6, 
-	0x18, 0xae, 0xae, 0x9, 0x98, 0x86, 0xcf, 0xe9, 0x62, 0xd8, 
-	0x18, 0x34, 0x6c, 0x9c, 0x44, 0x31, 0x6c, 0x28, 0x4a, 0xea, 
-	0xe1, 0xa4, 0xf5, 0x89, 0xc9, 0xd9, 0x49, 0x13, 0xd3, 0x8a, 
-	0xd2, 0x53, 0xaf, 0x9c, 0xba, 0xd2, 0x24, 0xf1, 0x4e, 0x8a, 
-	0x89, 0x34, 0x6, 0xe8, 0x1e, 0xc6, 0x38, 0x34, 0x3d, 0x62, 
-	0x8, 0x88, 0xdd, 0xb7, 0x5d, 0xc, 0x41, 0x4a, 0xff, 0x50, 
-	0x40, 0xe9, 0x47, 0xc3, 0x70, 0xc6, 0x25, 0xd8, 0x1, 0x23, 
-	0xd8, 0x50, 0x42, 0x85, 0xee, 0x6, 0xec, 0xc6, 0xba, 0xb, 
-	0x33, 0x21, 0xaf, 0x4d, 0x63, 0x61, 0x4, 0x45, 0x6e, 0x1a, 
-	0xe3, 0xd1, 0x8f, 0x79, 0x11, 0xac, 0xe6, 0x74, 0x28, 0xc0, 
-	0xc7, 0x9d, 0x6d, 0x7d, 0xbd, 0x62, 0xd8, 0x70, 0x55, 0x62, 
-	0x98, 0x5f, 0x38, 0xd2, 0xf9, 0xd3, 0x66, 0xe5, 0xc9, 0x2d, 
-	0x1a, 0xa6, 0x21, 0xf7, 0x68, 0x58, 0x27, 0xfa, 0xa9, 0x31, 
-	0xc5, 0x67, 0x8b, 0xa5, 0x9e, 0xf9, 0x9a, 0x31, 0xad, 0x9f, 
-	0x42, 0x81, 0x65, 0x20, 0x23, 0x69, 0xb0, 0xba, 0x20, 0x2, 
-	0x62, 0x41, 0x9a, 0x7b, 0xe2, 0x54, 0x95, 0x60, 0x81, 0x83, 
-	0x39, 0xcb, 0xb0, 0x70, 0x44, 0x4e, 0x44, 0x4b, 0xba, 0x1e, 
-	0xac, 0x83, 0xe6, 0x16, 0x39, 0xc7, 0x7a, 0xd0, 0xd0, 0x4d, 
-	0xb0, 0xac, 0x43, 0xa8, 0x77, 0x57, 0xbc, 0xaf, 0x52, 0x28, 
-	0xb0, 0x2c, 0x80, 0x86, 0x5c, 0x65, 0x38, 0xb, 0xa1, 0xcd, 
-	0xcc, 0x35, 0xd7, 0x74, 0x43, 0x10, 0x24, 0xbb, 0x3a, 0xc3, 
-	0x69, 0x18, 0x4e, 0x13, 0xe8, 0x2c, 0xf4, 0xd8, 00, 00, 
-	0x1, 0x79, 0x49, 0x44, 0x41, 0x54, 0x8a, 0xab, 0xe2, 0x6d, 
-	0x9a, 0x58, 0xf, 0x82, 0x60, 0x5d, 0x68, 0x58, 0x17, 0x2, 
-	0xa3, 0x21, 0x67, 0x9, 0x96, 0x6e, 0x2, 0x56, 0xef, 0xa8, 
-	0xd8, 0x7a, 0xb0, 0x62, 0xda, 00, 0x62, 0x5, 0x3, 0x88, 
-	0xac, 0x97, 0x41, 0x8a, 0x60, 0x58, 0x61, 0x66, 0x4e, 0x9b, 
-	0x99, 0x69, 00, 0xcc, 0x44, 0xb7, 0x32, 0xc1, 0xb2, 0x50, 
-	0xdd, 0x8d, 0x75, 0x63, 0x88, 0x97, 0x3f, 0x3e, 0xdd, 0xc3, 
-	0x21, 0x5d, 0x59, 0xda, 0x4, 0xaa, 0xbb, 0xaa, 0x6, 0xc6, 
-	0xc6, 0xa7, 0x9b, 0x36, 0x81, 0xd2, 0xb0, 0xde, 0x8c, 0xa7, 
-	0xd3, 0x8a, 0xf3, 0x2a, 0x5, 0x81, 0xbd, 0x1a, 0xa4, 0x12, 
-	0xe8, 0x56, 0xa5, 0x37, 0xc1, 0x32, 0x13, 0xcd, 0x55, 0x66, 
-	0x4e, 0xb0, 0xec, 0xd6, 0xfa, 0x3d, 0x66, 0x1c, 0xab, 0x38, 
-	0xab, 0x2b, 0xac, 0x2b, 0xaf, 0x1, 0x6b, 0xe, 0x12, 0xa8, 
-	0xd1, 0xe8, 0xba, 0xb2, 0x7e, 0x34, 0x3a, 0xbd, 0x38, 0xbd, 
-	0x14, 0xe, 0xac, 0x6, 0xc5, 0xca, 0x93, 0x8b, 0x9a, 0x74, 
-	0x86, 0x2c, 0x98, 00, 0x9, 0x94, 0x79, 0xe8, 0x81, 0x89, 
-	0xf1, 0x69, 0xac, 0x24, 0x96, 0x49, 0x62, 0x9d, 0x58, 0x2e, 
-	0xd, 0xeb, 0xa4, 0x6d, 0x2, 0x66, 0x1c, 0xfa, 0xf9, 0x41, 
-	0xe, 0x1e, 0x9c, 0x24, 0x4c, 0x55, 0x94, 0x76, 00, 0xf9, 
-	0xba, 0x32, 0x2b, 0xcd, 0xc4, 0x24, 0x63, 0x46, 0xcc, 0x98, 
-	0x86, 0x2d, 0x4c, 0x90, 0x34, 0x1a, 0xa4, 0x76, 0x8b, 0x97, 
-	0x25, 0x44, 0x80, 0x34, 0x2c, 0xcf, 0xe8, 0xe6, 0xb3, 0x6, 
-	0xcb, 0x3a, 0xd2, 0x4d, 0x5b, 0x1b, 0xc6, 0xd, 0xa2, 0x70, 
-	0x9c, 0xe5, 0xb0, 0xed, 0x96, 0x77, 0x97, 0x5d, 0x52, 0x3, 
-	0x66, 0x62, 0xba, 0xb5, 0x1f, 0x1, 0xd2, 0xad, 0x8d, 0x38, 
-	0xfd, 0x5c, 0x35, 0x72, 0xd7, 0xe8, 0x66, 0x9c, 0xa1, 0xc8, 
-	0x58, 0x51, 0xd, 0x90, 0x69, 0xe8, 0x66, 0xf9, 0x46, 0xe0, 
-	0x4, 0xa9, 0x9f, 0xfd, 0x40, 0x43, 0x71, 0x55, 0xe2, 0x21, 
-	0x48, 0xa8, 0xa0, 0xa7, 0x91, 0x4, 0xb0, 0xe6, 0x9a, 0x6, 
-	0xa7, 0x9f, 0x9, 0xd2, 0xe8, 0x66, 0x32, 0xfa, 0x59, 0x4d, 
-	0x1a, 0xb0, 0xd1, 0x26, 0xb0, 0x90, 0xcf, 0xe1, 0x80, 0xb2, 
-	0x52, 0x43, 0x82, 0x55, 0x91, 0xbc, 0x80, 0x95, 0x93, 0xff, 
-	0x84, 0x34, 0x50, 0xba, 0x35, 0x60, 0xba, 0x47, 0x92, 0x8, 
-	0x8e, 0xa4, 0x6d, 0xd, 0x58, 0xf9, 0x45, 0x2, 0xa9, 0x52, 
-	0xc9, 0xbf, 0xa8, 0xc0, 0xea, 0xc8, 0xda, 0xf6, 0x71, 0x9b, 
-	0x8f, 0x4, 0x3a, 0x1a, 0xa4, 00, 0x47, 0x3, 0xd0, 0x58, 
-	0xb9, 0x61, 0x81, 0x35, 0x66, 0x70, 0x2d, 0xb9, 0x47, 0xe2, 
-	0x1d, 0x1b, 0xb3, 0xf8, 0xaf, 0x2b, 0xb0, 0xff, 0xf, 0x4f, 
-	0x13, 0xcb, 0x14, 0x29, 0x9f, 0x25, 0xc5, 00, 00, 00, 
-	00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0};
-
-const struct httpd_fsdata_file file_index_html[] = {{NULL, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
-
-const struct httpd_fsdata_file file_404_html[] = {{file_index_html, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
-
-const struct httpd_fsdata_file file_img_control_xy_png[] = {{file_404_html, data_img_control_xy_png, data_img_control_xy_png + 20, sizeof(data_img_control_xy_png) - 20}};
-
-const struct httpd_fsdata_file file_img_control_z_png[] = {{file_img_control_xy_png, data_img_control_z_png, data_img_control_z_png + 19, sizeof(data_img_control_z_png) - 19}};
-
-#define HTTPD_FS_ROOT file_img_control_z_png
-
-#define HTTPD_FS_NUMFILES 4
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd.c
--- a/libs/Network/uip/webserver/httpd.c	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,680 +0,0 @@
-#pragma GCC diagnostic ignored "-Wredundant-decls"
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#pragma GCC diagnostic ignored "-Wcast-align"
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
-
-/**
- * \addtogroup apps
- * @{
- */
-
-/**
- * \defgroup httpd Web server
- * @{
- * The uIP web server is a very simplistic implementation of an HTTP
- * server. It can serve web pages and files from a read-only ROM
- * filesystem, and provides a very small scripting language.
-
- */
-
-/**
- * \file
- *         Web server
- * \author
- *         Adam Dunkels <adam@sics.se>
- */
-
-
-/*
- * Copyright (c) 2004, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $
- */
-
-#include <stdio.h>
-
-#include "uip.h"
-#include "httpd.h"
-#include "httpd-fs.h"
-#include "http-strings.h"
-
-#include <string.h>
-#include "stdio.h"
-#include "stdlib.h"
-
-#include "CommandQueue.h"
-#include "CallbackStream.h"
-
-#include "c-fifo.h"
-
-#define STATE_WAITING 0
-#define STATE_HEADERS 1
-#define STATE_BODY    2
-#define STATE_OUTPUT  3
-#define STATE_UPLOAD  4
-
-#define GET  1
-#define POST 2
-
-#define ISO_nl      0x0a
-#define ISO_space   0x20
-#define ISO_bang    0x21
-#define ISO_percent 0x25
-#define ISO_period  0x2e
-#define ISO_slash   0x2f
-#define ISO_colon   0x3a
-
-#define DEBUG_PRINTF printf
-//#define DEBUG_PRINTF(...)
-
-
-// this callback gets the results of a command, line by line. need to check if
-// we need to stall the upstream sender return 0 if stalled 1 if ok to keep
-// providing more -1 if the connection has closed or is not in output state.
-// need to see which connection to send to based on state and add result to
-// that fifo for each connection. NOTE this will not get called if the
-// connection has been closed and the stream will get deleted when the last
-// command has been executed
-static int command_result(const char *str, void *state)
-{
-    struct httpd_state *s = (struct httpd_state *)state;
-    if (s == NULL) {
-        // connection was closed so discard, this should never happen
-        DEBUG_PRINTF("ERROR: command result for closed state %d\n", (int)state);
-        return -1;
-    }
-
-    if (str == NULL) {
-        DEBUG_PRINTF("End of command (%p)\n", state);
-        fifo_push(s->fifo, NULL);
-
-    } else {
-        if (fifo_size(s->fifo) < 10) {
-            DEBUG_PRINTF("Got command result (%p): %s", state, str);
-            fifo_push(s->fifo, strdup(str));
-            return 1;
-        } else {
-            DEBUG_PRINTF("command result fifo is full (%p)\n", state);
-            return 0;
-        }
-    }
-    return 1;
-}
-
-static void create_callback_stream(struct httpd_state *s)
-{
-    // need to create a callback stream here, but do one per connection pass
-    // the state to the callback, also create the fifo for the command results
-    s->fifo = new_fifo();
-    s->pstream = new_callback_stream(command_result, s);
-}
-
-// Used to save files to SDCARD during upload
-static FILE *fd;
-static char *output_filename = NULL;
-static int file_cnt = 0;
-static int open_file(const char *fn)
-{
-    if (output_filename != NULL) free(output_filename);
-    output_filename = malloc(strlen(fn) + 5);
-    strcpy(output_filename, "/sd/");
-    strcat(output_filename, fn);
-    fd = fopen(output_filename, "w");
-    if (fd == NULL) {
-        free(output_filename);
-        output_filename = NULL;
-        return 0;
-    }
-    return 1;
-}
-
-static int close_file()
-{
-    free(output_filename);
-    output_filename = NULL;
-    fclose(fd);
-    return 1;
-}
-
-static int save_file(uint8_t *buf, unsigned int len)
-{
-    if (fwrite(buf, 1, len, fd) == len) {
-        file_cnt += len;
-        // HACK alert work around bug causing file corruption when writing large amounts of data
-        if (file_cnt >= 400) {
-            file_cnt = 0;
-            fclose(fd);
-            fd = fopen(output_filename, "a");
-        }
-        return 1;
-
-    } else {
-        close_file();
-        return 0;
-    }
-}
-
-static int fs_open(struct httpd_state *s)
-{
-    if (strncmp(s->filename, "/sd/", 4) == 0) {
-        DEBUG_PRINTF("Opening file %s\n", s->filename);
-        s->fd = fopen(s->filename, "r");
-        if (s->fd == NULL) {
-            DEBUG_PRINTF("Failed to open: %s\n", s->filename);
-            return 0;
-        }
-        return 1;
-
-    } else {
-        s->fd = NULL;
-        return httpd_fs_open(s->filename, &s->file);
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-static PT_THREAD(send_command_response(struct httpd_state *s))
-{
-    PSOCK_BEGIN(&s->sout);
-
-    do {
-        PSOCK_WAIT_UNTIL( &s->sout, fifo_size(s->fifo) > 0 );
-        s->strbuf = fifo_pop(s->fifo);
-        if (s->strbuf != NULL) {
-            // send it
-            DEBUG_PRINTF("Sending response: %s", s->strbuf);
-            // TODO send as much as we can in one packet
-            PSOCK_SEND_STR(&s->sout, s->strbuf);
-            // free the strdup
-            free(s->strbuf);
-        }else if(--s->command_count <= 0) {
-            // when all commands have completed exit
-            break;
-        }
-    } while (1);
-
-    PSOCK_END(&s->sout);
-}
-
-/*---------------------------------------------------------------------------*/
-static unsigned short generate_part_of_file(void *state)
-{
-    struct httpd_state *s = (struct httpd_state *)state;
-
-    if (s->file.len > uip_mss()) {
-        s->len = uip_mss();
-    } else {
-        s->len = s->file.len;
-    }
-    memcpy(uip_appdata, s->file.data, s->len);
-
-    return s->len;
-}
-/*---------------------------------------------------------------------------*/
-static unsigned short generate_part_of_sd_file(void *state)
-{
-    struct httpd_state *s = (struct httpd_state *)state;
-
-    int len = fread(uip_appdata, 1, uip_mss(), s->fd);
-    if (len <= 0) {
-        // we need to send something
-        strcpy(uip_appdata, "\r\n");
-        len = 2;
-        s->len = 0;
-    } else {
-        s->len = len;
-    }
-    return len;
-}
-/*---------------------------------------------------------------------------*/
-static
-PT_THREAD(send_file(struct httpd_state *s))
-{
-    PSOCK_BEGIN(&s->sout);
-
-    do {
-        PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
-        s->file.len -= s->len;
-        s->file.data += s->len;
-    } while (s->file.len > 0);
-
-    PSOCK_END(&s->sout);
-}
-
-/*---------------------------------------------------------------------------*/
-static PT_THREAD(send_sd_file(struct httpd_state *s))
-{
-    PSOCK_BEGIN(&s->sout);
-
-    do {
-        PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_sd_file, s);
-    } while (s->len > 0);
-
-    fclose(s->fd);
-    s->fd = NULL;
-
-    PSOCK_END(&s->sout);
-}
-
-/*---------------------------------------------------------------------------*/
-static PT_THREAD(send_headers_3(struct httpd_state *s, const char *statushdr, char send_content_type))
-{
-    char *ptr;
-
-    PSOCK_BEGIN(&s->sout);
-
-    PSOCK_SEND_STR(&s->sout, statushdr);
-
-    if (send_content_type) {
-        ptr = strrchr(s->filename, ISO_period);
-        if (ptr == NULL) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_plain); // http_content_type_binary);
-        } else if (strncmp(http_html, ptr, 5) == 0 || strncmp(http_shtml, ptr, 6) == 0) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_html);
-        } else if (strncmp(http_css, ptr, 4) == 0) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_css);
-        } else if (strncmp(http_png, ptr, 4) == 0) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_png);
-        } else if (strncmp(http_gif, ptr, 4) == 0) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_gif);
-        } else if (strncmp(http_jpg, ptr, 4) == 0) {
-            PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
-        } else {
-            PSOCK_SEND_STR(&s->sout, http_content_type_plain);
-        }
-    }
-    PSOCK_END(&s->sout);
-}
-static PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))
-{
-    return send_headers_3(s, statushdr, 1);
-}
-/*---------------------------------------------------------------------------*/
-static
-PT_THREAD(handle_output(struct httpd_state *s))
-{
-    PT_BEGIN(&s->outputpt);
-
-    if (s->method == POST) {
-        if (strcmp(s->filename, "/command") == 0) {
-            DEBUG_PRINTF("Executed command post\n");
-            PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200));
-            // send response as we get it
-            PT_WAIT_THREAD(&s->outputpt, send_command_response(s));
-
-        } else if (strcmp(s->filename, "/command_silent") == 0) {
-            DEBUG_PRINTF("Executed silent command post\n");
-            PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200));
-
-        } else if (strcmp(s->filename, "/upload") == 0) {
-            DEBUG_PRINTF("upload output: %d\n", s->uploadok);
-            if (s->uploadok == 0) {
-                PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_503));
-                PSOCK_SEND_STR(&s->sout, "FAILED\r\n");
-            } else {
-                PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200));
-                PSOCK_SEND_STR(&s->sout, "OK\r\n");
-            }
-
-        } else {
-            DEBUG_PRINTF("Unknown POST: %s\n", s->filename);
-            httpd_fs_open(http_404_html, &s->file);
-            strcpy(s->filename, http_404_html);
-            PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_404));
-            PT_WAIT_THREAD(&s->outputpt, send_file(s));
-        }
-
-    } else {
-        // Presume method GET
-        if (!fs_open(s)) { // Note this has the side effect of opening the file
-            DEBUG_PRINTF("404 file not found\n");
-            httpd_fs_open(http_404_html, &s->file);
-            strcpy(s->filename, http_404_html);
-            PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_404));
-            PT_WAIT_THREAD(&s->outputpt, send_file(s));
-
-        } else if (s->cache_page) {
-            if (s->fd != NULL) {
-                // if it was an sd file then we need to close it
-                fclose(s->fd);
-                s->fd = NULL;
-            }
-            // tell it it has not changed
-            DEBUG_PRINTF("304 Not Modified\n");
-            PT_WAIT_THREAD(&s->outputpt, send_headers_3(s, http_header_304, 0));
-
-        } else {
-            DEBUG_PRINTF("sending file %s\n", s->filename);
-            PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200));
-            if (s->fd != NULL) {
-                // send from sd card
-                PT_WAIT_THREAD(&s->outputpt, send_sd_file(s));
-
-            } else {
-                // send from FLASH
-                PT_WAIT_THREAD(&s->outputpt, send_file(s));
-            }
-        }
-    }
-
-    PSOCK_CLOSE(&s->sout);
-    PT_END(&s->outputpt);
-}
-
-/*---------------------------------------------------------------------------*/
-// this forces us to yield every other call as we read all data everytime
-static char has_newdata(struct httpd_state *s)
-{
-    if (s->upload_state == 1) {
-        /* All data in uip_appdata buffer already consumed. */
-        s->upload_state = 0;
-        return 0;
-    } else if (uip_newdata()) {
-        /* There is new data that has not been consumed. */
-        return 1;
-    } else {
-        /* There is no new data. */
-        return 0;
-    }
-}
-
-/*
- * handle trhe uploaded data, as there may be part of that buffer still in the last packet buffer
- * write that first from the buf/len parameters
- */
-static PT_THREAD(handle_uploaded_data(struct httpd_state *s, uint8_t *buf, int len))
-{
-    PT_BEGIN(&s->inputpt);
-
-    DEBUG_PRINTF("Uploading file: %s, %d\n", s->upload_name, s->content_length);
-
-    // The body is the raw data to be stored to the file
-    if (!open_file(s->upload_name)) {
-        DEBUG_PRINTF("failed to open file\n");
-        s->uploadok = 0;
-        PT_EXIT(&s->inputpt);
-    }
-
-    DEBUG_PRINTF("opened file: %s\n", s->upload_name);
-
-    if (len > 0) {
-        // write the first part of the buffer
-        if (!save_file(buf, len)) {
-            DEBUG_PRINTF("initial write failed\n");
-            s->uploadok = 0;
-            PT_EXIT(&s->inputpt);
-        }
-        s->content_length -= len;
-    }
-
-    s->upload_state = 1; // first time through we need to yield to get new data
-
-    // save the entire input buffer
-    while (s->content_length > 0) {
-        PT_WAIT_UNTIL(&s->inputpt, has_newdata(s));
-        s->upload_state = 1;
-
-        u8_t *readptr = (u8_t *)uip_appdata;
-        int readlen = uip_datalen();
-        //DEBUG_PRINTF("read %d bytes of data\n", readlen);
-
-        if (readlen > 0) {
-            if (!save_file(readptr, readlen)) {
-                DEBUG_PRINTF("write failed\n");
-                s->uploadok = 0;
-                PT_EXIT(&s->inputpt);
-            }
-            s->content_length -= readlen;
-        }
-    }
-
-    close_file();
-    s->uploadok = 1;
-    DEBUG_PRINTF("finished upload\n");
-
-    PT_END(&s->inputpt);
-}
-/*---------------------------------------------------------------------------*/
-static
-PT_THREAD(handle_input(struct httpd_state *s))
-{
-    PSOCK_BEGIN(&s->sin);
-
-    PSOCK_READTO(&s->sin, ISO_space);
-
-    if (strncmp(s->inputbuf, http_get, 4) == 0) {
-        s->method = GET;
-    } else if (strncmp(s->inputbuf, http_post, 4) == 0) {
-        s->method = POST;
-    } else {
-        DEBUG_PRINTF("Unexpected method: %s\n", s->inputbuf);
-        PSOCK_CLOSE_EXIT(&s->sin);
-    }
-
-    DEBUG_PRINTF("Method: %s\n", s->method == POST ? "POST" : "GET");
-
-    PSOCK_READTO(&s->sin, ISO_space);
-
-    if (s->inputbuf[0] != ISO_slash) {
-        PSOCK_CLOSE_EXIT(&s->sin);
-    }
-
-    if (s->inputbuf[1] == ISO_space) {
-        strncpy(s->filename, http_index_html, sizeof(s->filename));
-    } else {
-        s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
-        strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));
-    }
-
-    DEBUG_PRINTF("filename: %s\n", s->filename);
-
-    /*  httpd_log_file(uip_conn->ripaddr, s->filename);*/
-
-    s->state = STATE_HEADERS;
-    s->content_length = 0;
-    s->cache_page = 0;
-    while (1) {
-        if (s->state == STATE_HEADERS) {
-            // read the headers of the request
-            PSOCK_READTO(&s->sin, ISO_nl);
-            s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
-            if (s->inputbuf[0] == '\r') {
-                DEBUG_PRINTF("end of headers\n");
-                if (s->method == GET) {
-                    s->state = STATE_OUTPUT;
-                    break;
-                } else if (s->method == POST) {
-                    if (strcmp(s->filename, "/upload") == 0) {
-                        s->state = STATE_UPLOAD;
-                    } else {
-                        s->state = STATE_BODY;
-                    }
-                }
-            } else {
-                DEBUG_PRINTF("reading header: %s\n", s->inputbuf);
-                // handle headers here
-                if (strncmp(s->inputbuf, http_content_length, sizeof(http_content_length) - 1) == 0) {
-                    s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
-                    s->content_length = atoi(&s->inputbuf[sizeof(http_content_length) - 1]);
-                    DEBUG_PRINTF("Content length= %s, %d\n", &s->inputbuf[sizeof(http_content_length) - 1], s->content_length);
-
-                } else if (strncmp(s->inputbuf, "X-Filename: ", 11) == 0) {
-                    s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
-                    strncpy(s->upload_name, &s->inputbuf[12], sizeof(s->upload_name) - 1);
-                    DEBUG_PRINTF("Upload name= %s\n", s->upload_name);
-
-                } else if (strncmp(s->inputbuf, http_cache_control, sizeof(http_cache_control) - 1) == 0) {
-                    s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
-                    s->cache_page = strncmp(http_no_cache, &s->inputbuf[sizeof(http_cache_control) - 1], sizeof(http_no_cache) - 1) != 0;
-                    DEBUG_PRINTF("cache page= %d\n", s->cache_page);
-                }
-            }
-
-        } else if (s->state == STATE_BODY) {
-            if (s->method == POST && strcmp(s->filename, "/command") == 0) {
-                // create a callback stream and fifo for the results as it is a command
-                create_callback_stream(s);
-
-            } else if (s->method == POST && strcmp(s->filename, "/command_silent") == 0) {
-                // stick the command  on the command queue specifying null output stream
-                s->pstream = NULL;
-
-            } else { // unknown POST
-                DEBUG_PRINTF("Unknown Post URL: %s\n", s->filename);
-                s->state = STATE_OUTPUT;
-                break;
-            }
-            s->command_count= 0;
-            // read the Body of the request, each line is a command
-            if (s->content_length > 0) {
-                DEBUG_PRINTF("start reading body %d...\n", s->content_length);
-                while (s->content_length > 2) {
-                    PSOCK_READTO(&s->sin, ISO_nl);
-                    s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
-                    s->content_length -= PSOCK_DATALEN(&s->sin);
-                    // stick the command  on the command queue, with this connections stream output
-                    DEBUG_PRINTF("Adding command: %s, left: %d\n", s->inputbuf, s->content_length);
-                    network_add_command(s->inputbuf, s->pstream);
-                    s->command_count++; // count number of command lines we submit
-                }
-                DEBUG_PRINTF("Read body done\n");
-                s->state = STATE_OUTPUT;
-
-            } else {
-                s->state = STATE_OUTPUT;
-            }
-            break;
-
-        } else if (s->state == STATE_UPLOAD) {
-            PSOCK_WAIT_THREAD(&s->sin, handle_uploaded_data(s, PSOCK_GET_START_OF_REST_OF_BUFFER(&s->sin), PSOCK_GET_LENGTH_OF_REST_OF_BUFFER(&s->sin)));
-            PSOCK_MARK_BUFFER_READ(&s->sin);
-            s->state = STATE_OUTPUT;
-            break;
-
-        } else {
-            DEBUG_PRINTF("WTF State: %d", s->state);
-            break;
-        }
-    }
-
-    PSOCK_END(&s->sin);
-}
-/*---------------------------------------------------------------------------*/
-static void
-handle_connection(struct httpd_state *s)
-{
-    if (s->state != STATE_OUTPUT) {
-        handle_input(s);
-    }
-    if (s->state == STATE_OUTPUT) {
-        handle_output(s);
-    }
-}
-/*---------------------------------------------------------------------------*/
-void
-httpd_appcall(void)
-{
-    struct httpd_state *s = (struct httpd_state *)(uip_conn->appstate);
-
-    if (uip_connected()) {
-        s = malloc(sizeof(struct httpd_state));
-        if (s == NULL) {
-            DEBUG_PRINTF("Connection: Out of memory\n");
-            uip_abort();
-            return;
-        }
-        uip_conn->appstate = s;
-        DEBUG_PRINTF("Connection: %d.%d.%d.%d:%d\n",
-                     uip_ipaddr1(uip_conn->ripaddr), uip_ipaddr2(uip_conn->ripaddr),
-                     uip_ipaddr3(uip_conn->ripaddr), uip_ipaddr4(uip_conn->ripaddr),
-                     HTONS(uip_conn->rport));
-
-        PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
-        PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
-        PT_INIT(&s->outputpt);
-        PT_INIT(&s->inputpt);
-        s->state = STATE_WAITING;
-        /*    timer_set(&s->timer, CLOCK_SECOND * 100);*/
-        s->timer = 0;
-        s->fd = NULL;
-        s->strbuf = NULL;
-        s->fifo = NULL;
-        s->pstream = NULL;
-    }
-
-    if (s == NULL) {
-        DEBUG_PRINTF("ERROR no state context: %d\n", uip_flags);
-        uip_abort();
-        return;
-    }
-
-    // check for timeout on connection here so we can cleanup if we abort
-    if (uip_poll()) {
-        ++s->timer;
-        if (s->timer >= 20 * 2) { // we have a 0.5 second poll and we want 20 second timeout
-            DEBUG_PRINTF("Timer expired, aborting\n");
-            uip_abort();
-        }
-    } else {
-        s->timer = 0;
-    }
-
-    if (uip_closed() || uip_aborted() || uip_timedout()) {
-        DEBUG_PRINTF("Closing connection: %d\n", HTONS(uip_conn->rport));
-        if (s->fd != NULL) fclose(fd); // clean up
-        if (s->strbuf != NULL) free(s->strbuf);
-        if (s->pstream != NULL) {
-            // free these if they were allocated
-            delete_fifo(s->fifo);
-            delete_callback_stream(s->pstream); // this will mark it as closed and will get deleted when no longer needed
-        }
-        free(s) ;
-        uip_conn->appstate = NULL;
-
-    } else {
-        handle_connection(s);
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-/**
- * \brief      Initialize the web server
- *
- *             This function initializes the web server and should be
- *             called at system boot-up.
- */
-void httpd_init(void)
-{
-    uip_listen(HTONS(80));
-}
-/*---------------------------------------------------------------------------*/
-/** @} */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/httpd.h
--- a/libs/Network/uip/webserver/httpd.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2001-2005, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack.
- *
- * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $
- *
- */
-
-#ifndef __HTTPD_H__
-#define __HTTPD_H__
-
-#include "psock.h"
-#include "httpd-fs.h"
-#include "stdio.h"
-
-struct httpd_state {
-  unsigned char timer;
-  struct psock sin, sout;
-  struct pt outputpt, inputpt;
-  char inputbuf[100];
-  char filename[60];
-  char upload_name[32];
-  char method;
-  char state;
-  struct httpd_fs_file file;
-  FILE *fd;
-  uint16_t len;
-  char *strbuf;
-  int content_length;
-  uint16_t count;
-  uint8_t uploadok;
-  uint8_t upload_state;
-  uint8_t cache_page;
-  void *pstream;
-  void *fifo;
-  uint16_t command_count;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void httpd_init(void);
-void httpd_appcall(void);
-
-void httpd_log(char *msg);
-void httpd_log_file(u16_t *requester, char *file);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __HTTPD_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/makefsdata.pl
--- a/libs/Network/uip/webserver/makefsdata.pl	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-#!/usr/bin/perl
-
-open(OUTPUT, "> httpd-fsdata2.h");
-
-chdir("httpd-fs");
-
-opendir(DIR, ".");
-@files =  grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
-closedir(DIR);
-
-foreach $file (@files) {  
-   
-    if(-d $file && $file !~ /^\./) {
-	print "Processing directory $file\n";
-	opendir(DIR, $file);
-	@newfiles =  grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
-	closedir(DIR);
-	printf "Adding files @newfiles\n";
-	@files = (@files, map { $_ = "$file/$_" } @newfiles);
-	next;
-    }
-}
-
-foreach $file (@files) {
-    if(-f $file) {
-	
-	print "Adding file $file\n";
-	
-	open(FILE, $file) || die "Could not open file $file\n";
-
-	$file =~ s-^-/-;
-	$fvar = $file;
-	$fvar =~ s-/-_-g;
-	$fvar =~ s-\.-_-g;
-	# for AVR, add PROGMEM here
-	print(OUTPUT "static const unsigned char data".$fvar."[] = {\n");
-	print(OUTPUT "\t/* $file */\n\t");
-	for($j = 0; $j < length($file); $j++) {
-	    printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
-	}
-	printf(OUTPUT "0,\n");
-	
-	
-	$i = 0;        
-	while(read(FILE, $data, 1)) {
-	    if($i == 0) {
-		print(OUTPUT "\t");
-	    }
-	    printf(OUTPUT "%#02x, ", unpack("C", $data));
-	    $i++;
-	    if($i == 10) {
-		print(OUTPUT "\n");
-		$i = 0;
-	    }
-	}
-	print(OUTPUT "0};\n\n");
-	close(FILE);
-	push(@fvars, $fvar);
-	push(@pfiles, $file);
-    }
-}
-
-for($i = 0; $i < @fvars; $i++) {
-    $file = $pfiles[$i];
-    $fvar = $fvars[$i];
-
-    if($i == 0) {
-        $prevfile = "NULL";
-    } else {
-        $prevfile = "file" . $fvars[$i - 1];
-    }
-    print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
-    print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
-    print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
-}
-
-print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
-print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n");
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/makestrings
--- a/libs/Network/uip/webserver/makestrings	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#!/usr/bin/perl
-
-
-sub stringify {
-  my $name = shift(@_);
-  open(OUTPUTC, "> $name.c");
-  open(OUTPUTH, "> $name.h");
-  
-  open(FILE, "$name");
-  
-  while(<FILE>) {
-    if(/(.+) "(.+)"/) {
-      $var = $1;
-      $data = $2;
-      
-      $datan = $data;
-      $datan =~ s/\\r/\r/g;
-      $datan =~ s/\\n/\n/g;
-      $datan =~ s/\\01/\01/g;      
-      $datan =~ s/\\0/\0/g;
-      
-      printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1);
-      printf(OUTPUTC "/* \"$data\" */\n");
-      printf(OUTPUTC "{");
-      for($j = 0; $j < length($datan); $j++) {
-	printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
-      }
-      printf(OUTPUTC "};\n");
-      
-      printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1);
-      
-    }
-  }
-  close(OUTPUTC);
-  close(OUTPUTH);
-}
-stringify("http-strings");
-
-exit 0;
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/Network/uip/webserver/webserver.h
--- a/libs/Network/uip/webserver/webserver.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2002, Adam Dunkels.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the following
- *    disclaimer in the documentation and/or other materials provided
- *    with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This file is part of the uIP TCP/IP stack
- *
- * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $
- *
- */
-#ifndef __WEBSERVER_H__
-#define __WEBSERVER_H__
-
-#include "httpd.h"
-
-//typedef struct httpd_state uip_tcp_appstate_t;
-/* UIP_APPCALL: the name of the application function. This function
-   must return void and take no arguments (i.e., C type "void
-   appfunc(void)"). */
-#ifndef UIP_APPCALL
-#define UIP_APPCALL     httpd_appcall
-#endif
-
-
-#endif /* __WEBSERVER_H__ */
diff -r 1df0b61d3b5a -r f151d08d335c libs/Pin.cpp
--- a/libs/Pin.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/Pin.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -1,6 +1,7 @@
 #include "Pin.h"
 
 #include "utils.h"
+#include "Targets/Target.h"
 
 Pin::Pin(){
     this->inverting= false;
@@ -8,85 +9,53 @@
 
 // Make a new pin object from a string
 Pin* Pin::from_string(std::string value){
-    LPC_GPIO_TypeDef* gpios[5] ={LPC_GPIO0,LPC_GPIO1,LPC_GPIO2,LPC_GPIO3,LPC_GPIO4};
-
-    // cs is the current position in the string
-    const char* cs = value.c_str();
-    // cn is the position of the next char after the number we just read
-    char* cn = NULL;
-
-    // grab first integer as port. pointer to first non-digit goes in cn
-    this->port_number = strtol(cs, &cn, 10);
-    // if cn > cs then strtol read at least one digit
-    if ((cn > cs) && (port_number <= 4)){
-        // translate port index into something useful
-        this->port = gpios[(unsigned int) this->port_number];
-        // if the char after the first integer is a . then we should expect a pin index next
-        if (*cn == '.'){
-            // move pointer to first digit (hopefully) of pin index
-            cs = ++cn;
-
-            // grab pin index.
-            this->pin = strtol(cs, &cn, 10);
-
-            // if strtol read some numbers, cn will point to the first non-digit
-            if ((cn > cs) && (pin < 32)){
-                this->port->FIOMASK &= ~(1 << this->pin);
+    // Find the end of the pin name.
+    std::string::size_type e = value.find_first_of("!o^V-@\n\r\t ");
+    name = pin_name_from_string(value.substr(0, e));
+    if (name == NC)
+    	return this;
+    	
+    gpio_init(&pin, name, PIN_INPUT);
+    
+    // The current position in the string
+    const char* cn = value.c_str() + e;
 
-                // now check for modifiers:-
-                // ! = invert pin
-                // o = set pin to open drain
-                // ^ = set pin to pull up
-                // v = set pin to pull down
-                // - = set pin to no pull up or down
-                // @ = set pin to repeater mode
-                for (;*cn;cn++) {
-                    switch(*cn) {
-                        case '!':
-                            this->inverting = true;
-                            break;
-                        case 'o':
-                            as_open_drain();
-                            break;
-                        case '^':
-                            pull_up();
-                            break;
-                        case 'v':
-                            pull_down();
-                            break;
-                        case '-':
-                            pull_none();
-                            break;
-                        case '@':
-                            as_repeater();
-                            break;
-                        default:
-                            // skip any whitespace following the pin index
-                            if (!is_whitespace(*cn))
-                                return this;
-                    }
-                }
-                return this;
-            }
+    for (;*cn;cn++) {
+        switch(*cn) {
+            case '!':
+                this->inverting = true;
+                break;
+            case 'o':
+                as_open_drain();
+                break;
+            case '^':
+                pull_up();
+                break;
+            case 'v':
+                pull_down();
+                break;
+            case '-':
+                pull_none();
+                break;
+            case '@':
+                as_repeater();
+                break;
+            default:
+                // skip any whitespace following the pin index
+                if (!is_whitespace(*cn))
+                    return this;
         }
     }
 
     // from_string failed. TODO: some sort of error
-    port_number = 0;
-    port = gpios[0];
-    pin = 255;
     inverting = false;
     return this;
 }
 
 // Configure this pin as OD
 Pin* Pin::as_open_drain(){
-    if (this->pin >= 32) return this;
-    if( this->port_number == 0 ){ LPC_PINCON->PINMODE_OD0 |= (1<<this->pin); }
-    if( this->port_number == 1 ){ LPC_PINCON->PINMODE_OD1 |= (1<<this->pin); }
-    if( this->port_number == 2 ){ LPC_PINCON->PINMODE_OD2 |= (1<<this->pin); }
-    if( this->port_number == 3 ){ LPC_PINCON->PINMODE_OD3 |= (1<<this->pin); }
-    if( this->port_number == 4 ){ LPC_PINCON->PINMODE_OD4 |= (1<<this->pin); }
+    if (!connected()) return this;
+	gpio_mode(&pin, OpenDrain);
     pull_none(); // no pull up by default
     return this;
 }
@@ -94,56 +63,28 @@
 
 // Configure this pin as a repeater
 Pin* Pin::as_repeater(){
-    if (this->pin >= 32) return this;
-    // Set the two bits for this pin as 01
-    if( this->port_number == 0 && this->pin < 16  ){ LPC_PINCON->PINMODE0 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE0 &= ~(2<<( this->pin    *2)); }
-    if( this->port_number == 0 && this->pin >= 16 ){ LPC_PINCON->PINMODE1 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE1 &= ~(2<<((this->pin-16)*2)); }
-    if( this->port_number == 1 && this->pin < 16  ){ LPC_PINCON->PINMODE2 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE2 &= ~(2<<( this->pin    *2)); }
-    if( this->port_number == 1 && this->pin >= 16 ){ LPC_PINCON->PINMODE3 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE3 &= ~(2<<((this->pin-16)*2)); }
-    if( this->port_number == 2 && this->pin < 16  ){ LPC_PINCON->PINMODE4 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE4 &= ~(2<<( this->pin    *2)); }
-    if( this->port_number == 3 && this->pin >= 16 ){ LPC_PINCON->PINMODE7 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE7 &= ~(2<<((this->pin-16)*2)); }
-    if( this->port_number == 4 && this->pin >= 16 ){ LPC_PINCON->PINMODE9 |= (1<<( this->pin*2)); LPC_PINCON->PINMODE9 &= ~(2<<((this->pin-16)*2)); }
+    if (!connected()) return this;
+    // ?
     return this;
 }
 
 // Configure this pin as no pullup or pulldown
 Pin* Pin::pull_none(){
-	if (this->pin >= 32) return this;
-	// Set the two bits for this pin as 10
-	if( this->port_number == 0 && this->pin < 16  ){ LPC_PINCON->PINMODE0 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE0 &= ~(1<<( this->pin    *2)); }
-	if( this->port_number == 0 && this->pin >= 16 ){ LPC_PINCON->PINMODE1 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE1 &= ~(1<<((this->pin-16)*2)); }
-	if( this->port_number == 1 && this->pin < 16  ){ LPC_PINCON->PINMODE2 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE2 &= ~(1<<( this->pin    *2)); }
-	if( this->port_number == 1 && this->pin >= 16 ){ LPC_PINCON->PINMODE3 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE3 &= ~(1<<((this->pin-16)*2)); }
-	if( this->port_number == 2 && this->pin < 16  ){ LPC_PINCON->PINMODE4 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE4 &= ~(1<<( this->pin    *2)); }
-	if( this->port_number == 3 && this->pin >= 16 ){ LPC_PINCON->PINMODE7 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE7 &= ~(1<<((this->pin-16)*2)); }
-	if( this->port_number == 4 && this->pin >= 16 ){ LPC_PINCON->PINMODE9 |= (2<<( this->pin*2)); LPC_PINCON->PINMODE9 &= ~(1<<((this->pin-16)*2)); }
+    if (!connected()) return this;
+	gpio_mode(&pin, PullNone);
 	return this;
 }
 
 // Configure this pin as a pullup
 Pin* Pin::pull_up(){
-    if (this->pin >= 32) return this;
-    // Set the two bits for this pin as 00
-    if( this->port_number == 0 && this->pin < 16  ){ LPC_PINCON->PINMODE0 &= ~(3<<( this->pin    *2)); }
-    if( this->port_number == 0 && this->pin >= 16 ){ LPC_PINCON->PINMODE1 &= ~(3<<((this->pin-16)*2)); }
-    if( this->port_number == 1 && this->pin < 16  ){ LPC_PINCON->PINMODE2 &= ~(3<<( this->pin    *2)); }
-    if( this->port_number == 1 && this->pin >= 16 ){ LPC_PINCON->PINMODE3 &= ~(3<<((this->pin-16)*2)); }
-    if( this->port_number == 2 && this->pin < 16  ){ LPC_PINCON->PINMODE4 &= ~(3<<( this->pin    *2)); }
-    if( this->port_number == 3 && this->pin >= 16 ){ LPC_PINCON->PINMODE7 &= ~(3<<((this->pin-16)*2)); }
-    if( this->port_number == 4 && this->pin >= 16 ){ LPC_PINCON->PINMODE9 &= ~(3<<((this->pin-16)*2)); }
+    if (!connected()) return this;
+	gpio_mode(&pin, PullUp);
     return this;
 }
 
 // Configure this pin as a pulldown
 Pin* Pin::pull_down(){
-    if (this->pin >= 32) return this;
-    // Set the two bits for this pin as 11
-    if( this->port_number == 0 && this->pin < 16  ){ LPC_PINCON->PINMODE0 |= (3<<( this->pin    *2)); }
-    if( this->port_number == 0 && this->pin >= 16 ){ LPC_PINCON->PINMODE1 |= (3<<((this->pin-16)*2)); }
-    if( this->port_number == 1 && this->pin < 16  ){ LPC_PINCON->PINMODE2 |= (3<<( this->pin    *2)); }
-    if( this->port_number == 1 && this->pin >= 16 ){ LPC_PINCON->PINMODE3 |= (3<<((this->pin-16)*2)); }
-    if( this->port_number == 2 && this->pin < 16  ){ LPC_PINCON->PINMODE4 |= (3<<( this->pin    *2)); }
-    if( this->port_number == 3 && this->pin >= 16 ){ LPC_PINCON->PINMODE7 |= (3<<((this->pin-16)*2)); }
-    if( this->port_number == 4 && this->pin >= 16 ){ LPC_PINCON->PINMODE9 |= (3<<((this->pin-16)*2)); }
+    if (!connected()) return this;
+	gpio_mode(&pin, PullDown);
     return this;
 }
diff -r 1df0b61d3b5a -r f151d08d335c libs/Pin.h
--- a/libs/Pin.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/Pin.h	Sun Mar 02 06:33:08 2014 +0000
@@ -1,12 +1,12 @@
 #ifndef PIN_H
 #define PIN_H
 
+#include "mbed.h"
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string>
 
-#include "libs/LPC17xx/sLPC17xx.h" // smoothed mbed.h lib
-
 class Pin {
     public:
         Pin();
@@ -14,18 +14,16 @@
         Pin* from_string(std::string value);
 
         inline bool connected(){
-            return this->pin < 32;
+            return name != NC;
         }
 
         inline Pin* as_output(){
-            if (this->pin < 32)
-                this->port->FIODIR |= 1<<this->pin;
+            gpio_dir(&pin, PIN_OUTPUT);
             return this;
         }
 
         inline Pin* as_input(){
-            if (this->pin < 32)
-                this->port->FIODIR &= ~(1<<this->pin);
+            gpio_dir(&pin, PIN_INPUT);
             return this;
         }
 
@@ -40,24 +38,17 @@
         Pin* pull_none(void);
 
         inline bool get(){
-
-            if (this->pin >= 32) return false;
-            return this->inverting ^ (( this->port->FIOPIN >> this->pin ) & 1);
+            return this->inverting ^ gpio_read(&pin);
         }
 
         inline void set(bool value)
         {
-            if (this->pin >= 32) return;
-            if ( this->inverting ^ value )
-                this->port->FIOSET = 1 << this->pin;
-            else
-                this->port->FIOCLR = 1 << this->pin;
+            gpio_write(&pin, value ^ this->inverting);
         }
 
-        LPC_GPIO_TypeDef* port;
+        PinName name;
         bool inverting;
-        char port_number;
-        unsigned char pin;
+        gpio_t pin;
 };
 
 
diff -r 1df0b61d3b5a -r f151d08d335c libs/RingBuffer.h
--- a/libs/RingBuffer.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/RingBuffer.h	Sun Mar 02 06:33:08 2014 +0000
@@ -31,8 +31,6 @@
         volatile int          head;
 };
 
-#include "sLPC17xx.h"
-
 template<class kind, int length> RingBuffer<kind, length>::RingBuffer(){
     this->tail = this->head = 0;
 }
diff -r 1df0b61d3b5a -r f151d08d335c libs/SlowTicker.cpp
--- a/libs/SlowTicker.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/SlowTicker.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -14,8 +14,6 @@
 #include "libs/Hook.h"
 #include "modules/robot/Conveyor.h"
 
-#include <mri.h>
-
 // This module uses a Timer to periodically call hooks
 // Modules register with a function ( callback ) and a frequency, and we then call that function at the given frequency.
 
@@ -25,16 +23,6 @@
     max_frequency = 0;
     global_slow_ticker = this;
 
-    // Configure the actual timer
-    LPC_SC->PCONP |= (1 << 22);     // Power Ticker ON
-    LPC_TIM2->MR0 = 10000;          // Initial dummy value for Match Register
-    LPC_TIM2->MCR = 3;              // Match on MR0, reset on MR0
-    LPC_TIM2->TCR = 1;              // Enable interrupt
-    NVIC_EnableIRQ(TIMER2_IRQn);    // Enable interrupt handler
-
-    // ISP button
-    ispbtn.from_string("2.10")->as_input()->pull_up();
-
     // TODO: What is this ??
     flag_1s_flag = 0;
     flag_1s_count = SystemCoreClock>>2;
@@ -52,9 +40,6 @@
 // Set the base frequency we use for all sub-frequencies
 void SlowTicker::set_frequency( int frequency ){
     this->interval = (SystemCoreClock >> 2) / frequency;   // SystemCoreClock/4 = Timer increments in a second
-    LPC_TIM2->MR0 = this->interval;
-    LPC_TIM2->TCR = 3;  // Reset
-    LPC_TIM2->TCR = 1;  // Reset
     flag_1s_count= SystemCoreClock>>2;
 }
 
@@ -92,12 +77,6 @@
         else
             g4_ticks = 0;
     }
-
-    // Enter MRI mode if the ISP button is pressed
-    // TODO: This should have it's own module
-    if (ispbtn.get() == 0)
-        __debugbreak();
-
 }
 
 bool SlowTicker::flag_1s(){
@@ -182,9 +161,5 @@
 }
 
 extern "C" void TIMER2_IRQHandler (void){
-    if((LPC_TIM2->IR >> 0) & 1){  // If interrupt register set for MR0
-        LPC_TIM2->IR |= 1 << 0;   // Reset it
-    }
     global_slow_ticker->tick();
 }
-
diff -r 1df0b61d3b5a -r f151d08d335c libs/SlowTicker.h
--- a/libs/SlowTicker.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/SlowTicker.h	Sun Mar 02 06:33:08 2014 +0000
@@ -19,7 +19,6 @@
 
 #include "libs/Pin.h"
 
-#include "system_LPC17xx.h" // for SystemCoreClock
 #include <math.h>
 
 class SlowTicker : public Module{
@@ -60,6 +59,7 @@
 protected:
     int flag_1s_count;
     volatile int flag_1s_flag;
+    Ticker ticker;
 };
 
 
diff -r 1df0b61d3b5a -r f151d08d335c libs/StepTicker.h
--- a/libs/StepTicker.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/StepTicker.h	Sun Mar 02 06:33:08 2014 +0000
@@ -12,6 +12,7 @@
 
 using namespace std;
 #include <vector>
+#include <stdint.h>
 
 #include "libs/Module.h"
 
diff -r 1df0b61d3b5a -r f151d08d335c libs/StreamOutput.h
--- a/libs/StreamOutput.h	Fri Feb 28 18:52:52 2014 -0800
+++ b/libs/StreamOutput.h	Sun Mar 02 06:33:08 2014 +0000
@@ -8,8 +8,8 @@
 #ifndef STREAMOUTPUT_H
 #define STREAMOUTPUT_H
 
-#include <cstdarg>
-#include <cstring>
+#include <stdarg.h>
+#include <string.h>
 #include <stdio.h>
 
 // This is a base class for all StreamOutput objects.
diff -r 1df0b61d3b5a -r f151d08d335c libs/Targets/TARGET_NUCLEO_F103RB/Target.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libs/Targets/TARGET_NUCLEO_F103RB/Target.cpp	Sun Mar 02 06:33:08 2014 +0000
@@ -0,0 +1,29 @@
+#include "../Target.h"
+
+#include "PinNames.h"
+
+#include <stdlib.h>
+
+static PinName pin_map[4][16] = {
+        {PA_0, PA_1, PA_2, PA_3, PA_4, PA_5, PA_6, PA_7, PA_8, PA_9, PA_10, PA_11, PA_12, PA_13, PA_14, PA_15},
+        {PB_0, PB_1, PB_2, PB_3, PB_4, PB_5, PB_6, PB_7, PB_8, PB_9, PB_10, PB_11, PB_12, PB_13, PB_14, PB_15},
+        {PC_0, PC_1, PC_2, PC_3, PC_4, PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12, PC_13, PC_14, PC_15},
+        {PD_0, PD_1, PD_2, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}
+    };
+
+// STM Nucleo pins are in the form of <PORT>.<PIN> where PORT = [A-D]
+// and PIN = [1-15]. Port D only has 3 pins.
+PinName pin_name_from_string(std::string str) {
+    if (str.size() < 3)
+        return NC;
+    unsigned port = str[0];
+    port -= 'A';
+    if (port > 3)
+        return NC;
+    if (str[1] != '.')
+        return NC;
+    unsigned long pin = strtoul(str.data() + 2, NULL, 10);
+    if (pin > 15)
+        return NC;
+    return pin_map[port][pin];
+}
diff -r 1df0b61d3b5a -r f151d08d335c libs/Targets/Target.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libs/Targets/Target.h	Sun Mar 02 06:33:08 2014 +0000
@@ -0,0 +1,6 @@
+#include "PinNames.h"
+
+#include <string>
+
+// Get the PinName for a specific target from a string.
+PinName pin_name_from_string(std::string);
diff -r 1df0b61d3b5a -r f151d08d335c libs/spi.cpp
--- a/libs/spi.cpp	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-#include "spi.h"
-
-#include "lpc17xx_clkpwr.h"
-#include "lpc17xx_pinsel.h"
-#include "lpc17xx_ssp.h"
-#include "lpc17xx_gpio.h"
-
-#include <stdio.h>
-
-SPI* SPI::isr_dispatch[N_SPI_INTERRUPT_ROUTINES];
-
-class DMA;
-
-SPI::SPI(PinName mosi, PinName miso, PinName sclk)
-{
-    this->mosi.port = (mosi >> 5) & 7;
-    this->mosi.pin = mosi & 0x1F;
-
-    this->miso.port = (miso >> 5) & 7;
-    this->miso.pin = miso & 0x1F;
-
-    this->sclk.port = (sclk >> 5) & 7;
-    this->sclk.pin = sclk & 0x1F;
-
-    FIO_SetDir(this->mosi.port, 1UL << this->mosi.pin, 1);
-    FIO_SetDir(this->miso.port, 1UL << this->miso.pin, 0);
-    FIO_SetDir(this->sclk.port, 1UL << this->sclk.pin, 1);
-
-    if (mosi == P0_9 && miso == P0_8 && sclk == P0_7)
-    {
-//         iprintf("SPI: using 0.7,0.8,0.9 with SSP1\n");
-        // SSP1 on 0.7,0.8,0.9
-        sspr = LPC_SSP1;
-        isr_dispatch[1] = this;
-
-        LPC_PINCON->PINSEL0 &= ~((3 << (7*2)) | (3 << (8*2)) | (3 << (9*2)));
-        LPC_PINCON->PINSEL0 |=  ((2 << (7*2)) | (2 << (8*2)) | (2 << (9*2)));
-
-        LPC_SC->PCLKSEL0 &= 0xFFCFFFFF;
-        LPC_SC->PCLKSEL0 |= 0x00100000;
-
-        LPC_SC->PCONP |= CLKPWR_PCONP_PCSSP1;
-    }
-    else if (mosi == P0_18 && miso == P0_17 && sclk == P0_15)
-    {
-//         iprintf("SPI: using 0.15,0.17,0.18 with SSP0\n");
-        // SSP0 on 0.15,0.16,0.17,0.18
-        sspr = LPC_SSP0;
-        isr_dispatch[0] = this;
-
-        LPC_PINCON->PINSEL0 &= ~(3 << (15*2));
-        LPC_PINCON->PINSEL0 |=  (2 << (15*2));
-        LPC_PINCON->PINSEL1 &= ~( (3 << ((17*2)&30)) | (3 << ((18*2)&30)) );
-        LPC_PINCON->PINSEL1 |=  ( (2 << ((17*2)&30)) | (2 << ((18*2)&30)) );
-
-        LPC_SC->PCLKSEL1 &= 0xFFFFF3FF;
-        LPC_SC->PCLKSEL1 |= 0x00000400;
-
-        LPC_SC->PCONP |= CLKPWR_PCONP_PCSSP0;
-    }
-    else if (mosi == P1_24 && miso == P1_23 && sclk == P1_20)
-    {
-//         iprintf("SPI: using 1.20,1.23,1.24 with SSP0\n");
-        // SSP0 on 1.20,1.23,1.24
-        sspr = LPC_SSP0;
-        isr_dispatch[0] = this;
-
-// //         LPC_PINCON->PINSEL3 &= 0xFFFC3CFF;
-//         LPC_PINCON->PINSEL3 |= 0x0003C300;
-
-//         LPC_PINCON->PINSEL3 &= ~( (3 << ((20*2)&30)) | (3 << ((23*2)&30)) | (3 << ((24*2)&30)) );
-        LPC_PINCON->PINSEL3 |=  ( (3 << ((20*2)&30)) | (3 << ((23*2)&30)) | (3 << ((24*2)&30)) );
-
-        LPC_SC->PCLKSEL1 &= 0xFFFFF3FF;
-        LPC_SC->PCLKSEL1 |= 0x00000400;
-
-        LPC_SC->PCONP |= CLKPWR_PCONP_PCSSP0;
-    }
-    else
-    {
-//         iprintf("SPI: using soft-SPI\n");
-        sspr = (LPC_SSP_TypeDef *) 0;
-    }
-
-    if (sspr) {
-        sspr->CR0 = SSP_DATABIT_8 |
-                    SSP_FRAME_SPI;
-        sspr->CR1 = SSP_MASTER_MODE;
-        frequency(10000);
-        sspr->CR1 |= SSP_CR1_SSP_EN;
-    }
-}
-
-SPI::~SPI()
-{
-    if (sspr == LPC_SSP0)
-        LPC_SC->PCONP &= CLKPWR_PCONP_PCSSP0;
-    else if (sspr == LPC_SSP1)
-        LPC_SC->PCONP &= CLKPWR_PCONP_PCSSP1;
-}
-
-void SPI::frequency(uint32_t f)
-{
-    // CCLK = 25MHz
-    // CPSR = 2 to 254, even only
-    // CR0[8:15] (SCR, 0..255) is a further prescale
-
-//     iprintf("SPI: frequency %lu:", f);
-    delay = 25000000 / f;
-    // f = 25MHz / (CPSR . [SCR + 1])
-    // CPSR . (SCR + 1) = 25MHz / f
-    // min freq is 25MHz / (254 * 256)
-    if (sspr) {
-        if (f < 385) {
-            sspr->CPSR = 254;
-            sspr->CR0 &= 0x00FF;
-            sspr->CR0 |= 255 << 8;
-        }
-        // max freq is 25MHz / (2 * 1)
-        else if (f > 12500000) {
-            sspr->CPSR = 2;
-            sspr->CR0 &= 0x00FF;
-        }
-        else {
-            sspr->CPSR = delay & 0xFE;
-            // CPSR . (SCR + 1) = f;
-            // (SCR + 1) = f / CPSR;
-            // SCR = (f / CPSR) - 1
-            sspr->CR0 &= 0x00FF;
-            sspr->CR0 |= (((delay / sspr->CPSR) - 1) & 0xFF) << 8;
-        }
-//         iprintf(" CPSR=%lu, CR0=%lu", sspr->CPSR, sspr->CR0);
-    }
-//    iprintf("\n");
-}
-
-void _delay(uint32_t ticks) {
-    for (;ticks;ticks--)
-        asm volatile("nop\n\t");
-}
-
-uint8_t SPI::write(uint8_t data)
-{
-//     _cs = 1;
-    uint8_t r = 0;
-//     iprintf("SPI: >0x%02X", data);
-    if (sspr) {
-        while ((sspr->SR & SSP_SR_TNF) == 0);
-        sspr->DR = data;
-        while ((sspr->SR & SSP_SR_RNE) == 0);
-        r = sspr->DR & 255;
-    }
-    else {
-        for (int i = 0; i < 8; i++) {
-            FIO_ClearValue(sclk.port, 1UL << sclk.pin);         // clock LOW
-
-            if (data & 0x80)                                    // WRITE
-                FIO_SetValue(mosi.port, 1UL << mosi.pin);
-            else
-                FIO_ClearValue(mosi.port, 1UL << mosi.pin);
-            data <<= 1;
-
-            _delay(delay >> 1);                                 // DELAY
-
-            FIO_SetValue(sclk.port, 1UL << sclk.pin);           // clock HIGH
-
-            _delay(delay >> 1);                                 // DELAY
-
-            r <<= 1;
-            if (FIO_ReadValue(miso.port) & (1UL << miso.pin))   // READ
-                r |= 1;
-        }
-        FIO_ClearValue(sclk.port, 1UL << sclk.pin);
-    }
-//     iprintf(" <0x%02X\n", r);
-    return r;
-}
-
-// TODO: timer feeds DMA feeds 0xFFs to card then we listen for responses using our interrupt
-// allow me to do something like:
-// disk.start_multi_write(int blocks, int blocksize, void *buffer);
-// enable_usb_isr();
-// [...]
-// usb_isr() {
-//    if (disk.buffer_in_use(void *buffer))
-//        return;
-//    usb_ep_read(buffer);
-//    if (buffer_full)
-//        disk.validate_buffer(buffer);
-//    if (disk.finished_transfer())
-//        disk.end_multi_write();
-// };
-
-bool SPI::can_DMA()
-{
-    return (sspr != NULL);
-}
-
-// int SPI::setup_DMA_rx(DMA_REG *dma)
-// {
-//     if (!sspr)
-//         return -1;
-//
-//     dma->DMACCControl = 0;
-//     dma->DMACCConfiguration = 0;
-//     if (sspr == LPC_SSP0)
-//         dma->DMACCConfiguration |= (GPDMA_CONN_SSP0_Rx << 6);
-//     if (sspr == LPC_SSP1)
-//         dma->DMACCConfiguration |= (GPDMA_CONN_SSP1_Rx << 6);
-//
-//     dma->DMACCConfiguration |= GPDMA_TRANSFERTYPE_M2P << 11;
-//     return 0;
-// }
-//
-// int SPI::start_DMA_rx(DMA_REG *dma)
-// {
-//     dma->DMACCConfiguration |=
-// }
-
-// int SPI::writeblock(uint8_t *block, int blocklen)
-// {
-//     static DMA *d = new DMA();
-//     d.sourceaddr(block);
-//     d.transferlength(blocklen);
-//     d.destinationperipheral(sspr);
-//     d.start();
-//     while (d.active());
-//     return blocklen;
-//     return 0;
-// }
-
-void SPI::irq()
-{
-}
-
-void SSP0_IRQHandler(void) {
-    if (SPI::isr_dispatch[0])
-        SPI::isr_dispatch[0]->irq();
-}
-
-void SSP1_IRQHandler(void) {
-    if (SPI::isr_dispatch[1])
-        (SPI::isr_dispatch[1])->irq();
-}
diff -r 1df0b61d3b5a -r f151d08d335c libs/spi.h
--- a/libs/spi.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#ifndef _SPI_H
-#define _SPI_H
-
-#include <stdint.h>
-
-#include "spi_hal.h"
-
-class SPI {
-public:
-    SPI(PinName mosi, PinName miso, PinName sclk);
-    ~SPI();
-
-    void frequency(uint32_t);
-    uint8_t write(uint8_t);
-
-//     int writeblock(uint8_t *, int);
-
-    bool can_DMA();
-    int setup_DMA_rx(DMA_REG *);
-    int setup_DMA_tx(DMA_REG *);
-
-    void irq(void);
-
-    static SPI* isr_dispatch[N_SPI_INTERRUPT_ROUTINES];
-
-protected:
-    uint32_t delay;
-    Pin_t miso;
-    Pin_t mosi;
-    Pin_t sclk;
-    SPI_REG *sspr;
-};
-
-#endif /* _SPI_H */
diff -r 1df0b61d3b5a -r f151d08d335c libs/spi_hal.h
--- a/libs/spi_hal.h	Fri Feb 28 18:52:52 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#ifndef _SPI_HAL_H
-#define _SPI_HAL_H
-
-#include "lpc17xx_ssp.h"
-
-#ifdef __LPC17XX__
-#include <PinNames.h>
-    typedef struct {
-        uint8_t port;
-        uint8_t pin;
-    } Pin_t;
-
-    typedef LPC_SSP_TypeDef SPI_REG;
-    typedef LPC_GPDMACH_TypeDef DMA_REG;
-
-    #define N_SPI_INTERRUPT_ROUTINES 2
-#endif
-
-#endif /* _SPI_HAL_H */