diff --git a/conf_list.txt b/conf_list.txt new file mode 100755 index 0000000..79972db --- /dev/null +++ b/conf_list.txt @@ -0,0 +1,3 @@ +sketchbook/blink.ino +sketchbook/helloWorld_MEGA.ino +sketchbook/helloWorld_UNO.ino diff --git a/copy.error b/copy.error new file mode 100644 index 0000000..e69de29 diff --git a/error.txt b/error.txt new file mode 100644 index 0000000..e69de29 diff --git a/gpl.txt b/gpl.txt new file mode 100755 index 0000000..5b0e962 --- /dev/null +++ b/gpl.txt @@ -0,0 +1,13 @@ + + SIMUINO Arduino Simulator + Copyright (C) 2013 Benny Saxen + This program comes with ABSOLUTELY NO WARRANTY. + This is free software. You are welcome to redistribute + it, as long it is named Simuino. + + Type "help" for list of commands. + + Place your sketch (.ino) in folder sketchbook. + Add configuration information. (See helloWorld_UNO.ino) + + Visit: www.simuino.com for more information. diff --git a/help.txt b/help.txt new file mode 100755 index 0000000..3561793 --- /dev/null +++ b/help.txt @@ -0,0 +1,41 @@ +[Run Mode] +Goto: + arrow up step forward + arrow down step backward + arrow right loop forward + arrow left loop backward + + f step forward + b step backward + r loop forward + p loop backward + + o loop reset + a goto first step + z goto last step + t step to next analogRead/digitalRead + +Animation(realtime time delay): + R loop forward + P loop backward + G step through scenario + +Scenario breakpoints: + c view configuration parameters + y view Scenario Breakpoints + x expanded view of Scenario Breakpoints + v set value analogRead/digitalRead + Current step must be one step before Read + Use 't' to step between Read events. + +Window: + w toggles window layout mode. + +Information: + d show scenario delay overview + l show loop information + s show debug sketch + e show runtime error log +------------------------------------ + q quit Run Mode, enter Admin Mode. + h show this information diff --git a/help_command.txt b/help_command.txt new file mode 100755 index 0000000..2cfdeda --- /dev/null +++ b/help_command.txt @@ -0,0 +1,21 @@ +exit Exit Simuino + +load Load selected sketch + +list List available sketches (max 100). + Selected is marked with '>' + + Select sketch according to number in list + +run Enter Run Mode + +info Show info about + - scen Show scenario data + - conf Display configuration + - loop Show loop information + - error Show Servuino errors + - g++ Show compilation errors + +sketch Show selected sketch + +help Show this information diff --git a/hints.txt b/hints.txt new file mode 100755 index 0000000..e69de29 diff --git a/servuino/EEPROM.h b/servuino/EEPROM.h new file mode 100755 index 0000000..d7fad54 --- /dev/null +++ b/servuino/EEPROM.h @@ -0,0 +1,43 @@ +// EEPROM +class eeprom { + + public: + int read(int address); + void write(int address, int value); + + // Wrappers for debug functionality + int readX(int z,int address); + void writeX(int z,int address, int value); +}; +eeprom EEPROM; + +int eepromStorage[1000]; // 0 - 511 allowed +int value = 998; + +int eeprom::read(int address) +{ + + if(address > 0 && address < 512)value = eepromStorage[address]; + servuinoFunc(S_EEPROM_READ,address,value,NULL,0); + return(value); +} +void eeprom::write(int address, int value) +{ + if(address > 0 && address < 512 && value >= 0 && value < 256)eepromStorage[address] = value; + servuinoFunc(S_EEPROM_WRITE,address,value,NULL,0); + return; +} + +int eeprom::readX(int z,int address) +{ + ino(z); + return(read(address)); +} +void eeprom::writeX(int z,int address, int value) +{ + ino(z); + write(address,value); + return; +} + + diff --git a/servuino/arduino.h b/servuino/arduino.h new file mode 100755 index 0000000..92a078d --- /dev/null +++ b/servuino/arduino.h @@ -0,0 +1,490 @@ +#include +using std::cerr; +using std::cout; +using std::endl; +using std::ostream; +using std::istream; + +#include +using std::setw; + +#include +using std::strcmp; +using std::strcpy; +using std::strcat; + +#include +using std::string; + +#include +using std::exit; + +#include +using std::stringstream; + + +#define LOW 0 +#define HIGH 1 + +#define INPUT 0 +#define OUTPUT 1 + +#define CHANGE 11 +#define RISING 12 +#define FALLING 13 + +// Math function min and max +#ifndef max +#define max( a, b ) ( ((a) > (b)) ? (a) : (b) ) +#endif + +#ifndef min +#define min( a, b ) ( ((a) < (b)) ? (a) : (b) ) +#endif + +#define _BV(bit) (1 << (bit)) + + +typedef int byte; +typedef int word; +typedef bool boolean; + +typedef unsigned int uint8_t; +typedef unsigned int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned int uint64_t; + +// Functions +int bitRead(int x, int n); +void bitSet(unsigned int *x, int n); + +// Wrappers +void pinModeX(int x,int pin,int mode); +void digitalWriteX(int x,int pin,int value); +int digitalReadX(int x,int pin); +void analogWriteX(int x,int pin,int value); +int analogReadX(int x,int pin); +void delayX(int x,int ms); +void delayMicrosecondsX(int x,int us); +void attachInterruptX(int x,int ir,void(*func)(),int mode); +void detachInterruptX(int x,int ir); + +int A0; +int A1; +int A2; +int A3; +int A4; +int A5; +int A6; +int A7; +int A8; +int A9; +int A10; +int A11; +int A12; +int A13; +int A14; + +unsigned int PORTA=0,PORTB=0,PORTC=0,PORTD=0,PORTE=0,PORTF=0,PORTG=0; +unsigned int PORTH=0,PORTJ=0,PORTK=0,PORTL=0,PORTM=0,PORTN=0; + +unsigned int DDRA=0,DDRB=0,DDRC=0,DDRD=0,DDRE=0,DDRF=0,DDRG=0; +unsigned int DDRH=0,DDRJ=0,DDRK=0,DDRL=0,DDRM=0,DDRN=0; + +unsigned int PINA=0,PINB=0,PINC=0,PIND=0,PINE=0,PINF=0,PING=0; +unsigned int PINH=0,PINJ=0,PINK=0,PINL=0,PINM=0,PINN=0; + + +unsigned int B00000000=0b00000000; // 0 +unsigned int B00000001=0b00000001; // 1 +unsigned int B00000010=0b00000010; // 2 +unsigned int B00000011=0b00000011; // 3 +unsigned int B00000100=0b00000100; // 4 +unsigned int B00000101=0b00000101; // 5 +unsigned int B00000110=0b00000110; // 6 +unsigned int B00000111=0b00000111; // 7 +unsigned int B00001000=0b00001000; // 8 +unsigned int B00001001=0b00001001; // 9 +unsigned int B00001010=0b00001010; // 10 +unsigned int B00001011=0b00001011; // 11 +unsigned int B00001100=0b00001100; // 12 +unsigned int B00001101=0b00001101; // 13 +unsigned int B00001110=0b00001110; // 14 +unsigned int B00001111=0b00001111; // 15 +unsigned int B00010000=0b00010000; // 16 +unsigned int B00010001=0b00010001; // 17 +unsigned int B00010010=0b00010010; // 18 +unsigned int B00010011=0b00010011; // 19 +unsigned int B00010100=0b00010100; // 20 +unsigned int B00010101=0b00010101; // 21 +unsigned int B00010110=0b00010110; // 22 +unsigned int B00010111=0b00010111; // 23 +unsigned int B00011000=0b00011000; // 24 +unsigned int B00011001=0b00011001; // 25 +unsigned int B00011010=0b00011010; // 26 +unsigned int B00011011=0b00011011; // 27 +unsigned int B00011100=0b00011100; // 28 +unsigned int B00011101=0b00011101; // 29 +unsigned int B00011110=0b00011110; // 30 +unsigned int B00011111=0b00011111; // 31 +unsigned int B00100000=0b00100000; // 32 +unsigned int B00100001=0b00100001; // 33 +unsigned int B00100010=0b00100010; // 34 +unsigned int B00100011=0b00100011; // 35 +unsigned int B00100100=0b00100100; // 36 +unsigned int B00100101=0b00100101; // 37 +unsigned int B00100110=0b00100110; // 38 +unsigned int B00100111=0b00100111; // 39 +unsigned int B00101000=0b00101000; // 40 +unsigned int B00101001=0b00101001; // 41 +unsigned int B00101010=0b00101010; // 42 +unsigned int B00101011=0b00101011; // 43 +unsigned int B00101100=0b00101100; // 44 +unsigned int B00101101=0b00101101; // 45 +unsigned int B00101110=0b00101110; // 46 +unsigned int B00101111=0b00101111; // 47 +unsigned int B00110000=0b00110000; // 48 +unsigned int B00110001=0b00110001; // 49 +unsigned int B00110010=0b00110010; // 50 +unsigned int B00110011=0b00110011; // 51 +unsigned int B00110100=0b00110100; // 52 +unsigned int B00110101=0b00110101; // 53 +unsigned int B00110110=0b00110110; // 54 +unsigned int B00110111=0b00110111; // 55 +unsigned int B00111000=0b00111000; // 56 +unsigned int B00111001=0b00111001; // 57 +unsigned int B00111010=0b00111010; // 58 +unsigned int B00111011=0b00111011; // 59 +unsigned int B00111100=0b00111100; // 60 +unsigned int B00111101=0b00111101; // 61 +unsigned int B00111110=0b00111110; // 62 +unsigned int B00111111=0b00111111; // 63 +unsigned int B01000000=0b01000000; // 64 +unsigned int B01000001=0b01000001; // 65 +unsigned int B01000010=0b01000010; // 66 +unsigned int B01000011=0b01000011; // 67 +unsigned int B01000100=0b01000100; // 68 +unsigned int B01000101=0b01000101; // 69 +unsigned int B01000110=0b01000110; // 70 +unsigned int B01000111=0b01000111; // 71 +unsigned int B01001000=0b01001000; // 72 +unsigned int B01001001=0b01001001; // 73 +unsigned int B01001010=0b01001010; // 74 +unsigned int B01001011=0b01001011; // 75 +unsigned int B01001100=0b01001100; // 76 +unsigned int B01001101=0b01001101; // 77 +unsigned int B01001110=0b01001110; // 78 +unsigned int B01001111=0b01001111; // 79 +unsigned int B01010000=0b01010000; // 80 +unsigned int B01010001=0b01010001; // 81 +unsigned int B01010010=0b01010010; // 82 +unsigned int B01010011=0b01010011; // 83 +unsigned int B01010100=0b01010100; // 84 +unsigned int B01010101=0b01010101; // 85 +unsigned int B01010110=0b01010110; // 86 +unsigned int B01010111=0b01010111; // 87 +unsigned int B01011000=0b01011000; // 88 +unsigned int B01011001=0b01011001; // 89 +unsigned int B01011010=0b01011010; // 90 +unsigned int B01011011=0b01011011; // 91 +unsigned int B01011100=0b01011100; // 92 +unsigned int B01011101=0b01011101; // 93 +unsigned int B01011110=0b01011110; // 94 +unsigned int B01011111=0b01011111; // 95 +unsigned int B01100000=0b01100000; // 96 +unsigned int B01100001=0b01100001; // 97 +unsigned int B01100010=0b01100010; // 98 +unsigned int B01100011=0b01100011; // 99 +unsigned int B01100100=0b01100100; // 100 +unsigned int B01100101=0b01100101; // 101 +unsigned int B01100110=0b01100110; // 102 +unsigned int B01100111=0b01100111; // 103 +unsigned int B01101000=0b01101000; // 104 +unsigned int B01101001=0b01101001; // 105 +unsigned int B01101010=0b01101010; // 106 +unsigned int B01101011=0b01101011; // 107 +unsigned int B01101100=0b01101100; // 108 +unsigned int B01101101=0b01101101; // 109 +unsigned int B01101110=0b01101110; // 110 +unsigned int B01101111=0b01101111; // 111 +unsigned int B01110000=0b01110000; // 112 +unsigned int B01110001=0b01110001; // 113 +unsigned int B01110010=0b01110010; // 114 +unsigned int B01110011=0b01110011; // 115 +unsigned int B01110100=0b01110100; // 116 +unsigned int B01110101=0b01110101; // 117 +unsigned int B01110110=0b01110110; // 118 +unsigned int B01110111=0b01110111; // 119 +unsigned int B01111000=0b01111000; // 120 +unsigned int B01111001=0b01111001; // 121 +unsigned int B01111010=0b01111010; // 122 +unsigned int B01111011=0b01111011; // 123 +unsigned int B01111100=0b01111100; // 124 +unsigned int B01111101=0b01111101; // 125 +unsigned int B01111110=0b01111110; // 126 +unsigned int B01111111=0b01111111; // 127 +unsigned int B10000000=0b10000000; // 128 +unsigned int B10000001=0b10000001; // 129 +unsigned int B10000010=0b10000010; // 130 +unsigned int B10000011=0b10000011; // 131 +unsigned int B10000100=0b10000100; // 132 +unsigned int B10000101=0b10000101; // 133 +unsigned int B10000110=0b10000110; // 134 +unsigned int B10000111=0b10000111; // 135 +unsigned int B10001000=0b10001000; // 136 +unsigned int B10001001=0b10001001; // 137 +unsigned int B10001010=0b10001010; // 138 +unsigned int B10001011=0b10001011; // 139 +unsigned int B10001100=0b10001100; // 140 +unsigned int B10001101=0b10001101; // 141 +unsigned int B10001110=0b10001110; // 142 +unsigned int B10001111=0b10001111; // 143 +unsigned int B10010000=0b10010000; // 144 +unsigned int B10010001=0b10010001; // 145 +unsigned int B10010010=0b10010010; // 146 +unsigned int B10010011=0b10010011; // 147 +unsigned int B10010100=0b10010100; // 148 +unsigned int B10010101=0b10010101; // 149 +unsigned int B10010110=0b10010110; // 150 +unsigned int B10010111=0b10010111; // 151 +unsigned int B10011000=0b10011000; // 152 +unsigned int B10011001=0b10011001; // 153 +unsigned int B10011010=0b10011010; // 154 +unsigned int B10011011=0b10011011; // 155 +unsigned int B10011100=0b10011100; // 156 +unsigned int B10011101=0b10011101; // 157 +unsigned int B10011110=0b10011110; // 158 +unsigned int B10011111=0b10011111; // 159 +unsigned int B10100000=0b10100000; // 160 +unsigned int B10100001=0b10100001; // 161 +unsigned int B10100010=0b10100010; // 162 +unsigned int B10100011=0b10100011; // 163 +unsigned int B10100100=0b10100100; // 164 +unsigned int B10100101=0b10100101; // 165 +unsigned int B10100110=0b10100110; // 166 +unsigned int B10100111=0b10100111; // 167 +unsigned int B10101000=0b10101000; // 168 +unsigned int B10101001=0b10101001; // 169 +unsigned int B10101010=0b10101010; // 170 +unsigned int B10101011=0b10101011; // 171 +unsigned int B10101100=0b10101100; // 172 +unsigned int B10101101=0b10101101; // 173 +unsigned int B10101110=0b10101110; // 174 +unsigned int B10101111=0b10101111; // 175 +unsigned int B10110000=0b10110000; // 176 +unsigned int B10110001=0b10110001; // 177 +unsigned int B10110010=0b10110010; // 178 +unsigned int B10110011=0b10110011; // 179 +unsigned int B10110100=0b10110100; // 180 +unsigned int B10110101=0b10110101; // 181 +unsigned int B10110110=0b10110110; // 182 +unsigned int B10110111=0b10110111; // 183 +unsigned int B10111000=0b10111000; // 184 +unsigned int B10111001=0b10111001; // 185 +unsigned int B10111010=0b10111010; // 186 +unsigned int B10111011=0b10111011; // 187 +unsigned int B10111100=0b10111100; // 188 +unsigned int B10111101=0b10111101; // 189 +unsigned int B10111110=0b10111110; // 190 +unsigned int B10111111=0b10111111; // 191 +unsigned int B11000000=0b11000000; // 192 +unsigned int B11000001=0b11000001; // 193 +unsigned int B11000010=0b11000010; // 194 +unsigned int B11000011=0b11000011; // 195 +unsigned int B11000100=0b11000100; // 196 +unsigned int B11000101=0b11000101; // 197 +unsigned int B11000110=0b11000110; // 198 +unsigned int B11000111=0b11000111; // 199 +unsigned int B11001000=0b11001000; // 200 +unsigned int B11001001=0b11001001; // 201 +unsigned int B11001010=0b11001010; // 202 +unsigned int B11001011=0b11001011; // 203 +unsigned int B11001100=0b11001100; // 204 +unsigned int B11001101=0b11001101; // 205 +unsigned int B11001110=0b11001110; // 206 +unsigned int B11001111=0b11001111; // 207 +unsigned int B11010000=0b11010000; // 208 +unsigned int B11010001=0b11010001; // 209 +unsigned int B11010010=0b11010010; // 210 +unsigned int B11010011=0b11010011; // 211 +unsigned int B11010100=0b11010100; // 212 +unsigned int B11010101=0b11010101; // 213 +unsigned int B11010110=0b11010110; // 214 +unsigned int B11010111=0b11010111; // 215 +unsigned int B11011000=0b11011000; // 216 +unsigned int B11011001=0b11011001; // 217 +unsigned int B11011010=0b11011010; // 218 +unsigned int B11011011=0b11011011; // 219 +unsigned int B11011100=0b11011100; // 220 +unsigned int B11011101=0b11011101; // 221 +unsigned int B11011110=0b11011110; // 222 +unsigned int B11011111=0b11011111; // 223 +unsigned int B11100000=0b11100000; // 224 +unsigned int B11100001=0b11100001; // 225 +unsigned int B11100010=0b11100010; // 226 +unsigned int B11100011=0b11100011; // 227 +unsigned int B11100100=0b11100100; // 228 +unsigned int B11100101=0b11100101; // 229 +unsigned int B11100110=0b11100110; // 230 +unsigned int B11100111=0b11100111; // 231 +unsigned int B11101000=0b11101000; // 232 +unsigned int B11101001=0b11101001; // 233 +unsigned int B11101010=0b11101010; // 234 +unsigned int B11101011=0b11101011; // 235 +unsigned int B11101100=0b11101100; // 236 +unsigned int B11101101=0b11101101; // 237 +unsigned int B11101110=0b11101110; // 238 +unsigned int B11101111=0b11101111; // 239 +unsigned int B11110000=0b11110000; // 240 +unsigned int B11110001=0b11110001; // 241 +unsigned int B11110010=0b11110010; // 242 +unsigned int B11110011=0b11110011; // 243 +unsigned int B11110100=0b11110100; // 244 +unsigned int B11110101=0b11110101; // 245 +unsigned int B11110110=0b11110110; // 246 +unsigned int B11110111=0b11110111; // 247 +unsigned int B11111000=0b11111000; // 248 +unsigned int B11111001=0b11111001; // 249 +unsigned int B11111010=0b11111010; // 250 +unsigned int B11111011=0b11111011; // 251 +unsigned int B11111100=0b11111100; // 252 +unsigned int B11111101=0b11111101; // 253 +unsigned int B11111110=0b11111110; // 254 +unsigned int B11111111=0b11111111; // 255 + + + +class String +{ + friend ostream &operator<<( ostream &, const String & ); + friend istream &operator>>( istream &, String & ); + +public: + String( const char * = "" ); // conversion/default constructor + String( const String & ); // copy constructor + ~String(); // destructor + + const String &operator=( const String & ); // assignment operator + const String &operator+=( const String & ); // concatenation operator + + bool operator!() const; // is String empty? + bool operator==( const String & ) const; // test s1 == s2 + bool operator<( const String & ) const; // test s1 < s2 + + bool operator!=( const String &right ) const + { + return !( *this == right ); + } + + bool operator>( const String &right ) const + { + return right < *this; + } + + bool operator<=( const String &right ) const + { + return !( right < *this ); + } + + bool operator>=( const String &right ) const + { + return !( *this < right ); + } + + char &operator[]( int ); // subscript operator (modifiable lvalue) + char operator[]( int ) const; // subscript operator (rvalue) + String operator()( int, int = 0 ) const; // return a substring + int getLength() const; // return string length + + // ============ Benny adding ============= + String( const int x ); + String( const int x, const int base ); + + const String &operator=( string right ); + const String &operator=( const char *right ); + + String operator+( const int number ); + String operator+( const char one ); + String operator+( unsigned long number ); + String operator+( String right ); + + char charAt(const int n); + int compareTo(const String s); + String concat(const String s); + bool endsWith(const String s); + bool equals(const String s); + bool equalsIgnoreCase(const String s); + void getBytes(int buf[], int *len); + int indexOf(char val); + int indexOf(String val); + int indexOf(char val, int from); + int indexOf(String val, int from); + int lastIndexOf(char val); + int lastIndexOf(String val); + int lastIndexOf(char val, int from); + int lastIndexOf(String val, int from); + int length(); + String replace(String sub1, String sub2); + void setCharAt(int index,char c); + bool startsWith(String s); + String substring(int from); + String substring(int from, int to); + void toCharArray(char buf[], int *len); + void toLowerCase(); + void toUpperCase(); + void trim(); + char *getPointer(); + +private: + int lngth; // string length (not counting null terminator) + char *sPtr; // pointer to start of pointer-based string + + void setString( const char * ); // utility function + + + +}; // end class String + + + +class serial { + + public: + void begin(int baudRate); + void end(); + int available(); + char read(); + int peek(); + void flush(); + void print(int x); + void print(int x,int base); + void print(const char *p); + void print(unsigned char c); + void println(int x); + void println(const char *p); + void println(string p); + void println(String p); + void println(); + void println(unsigned char c); + void write(char *p); + + // Wrappers + void beginX(int z,int baudRate); + void endX(int z); + int availableX(int z); + char readX(int z); + int peekX(int z); + void flushX(int z); + void printX(int z,int x); + void printX(int z,int x,int base); + void printX(int z,const char *p); + void printX(int z,unsigned char c); + void printlnX(int z,int x); + void printlnX(int z,const char *p); + void printlnX(int z,string p); + void printlnX(int z,String p); + void printlnX(int z); + void printlnX(int z,unsigned char c); + void writeX(int z,char *p); +}; +serial Serial,Serial1,Serial2,Serial3; diff --git a/servuino/arduino_lib.c b/servuino/arduino_lib.c new file mode 100755 index 0000000..00fc9f4 --- /dev/null +++ b/servuino/arduino_lib.c @@ -0,0 +1,1037 @@ +/* Servuino is a Arduino Simulator Engine + Copyright (C) 2012 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + + +//===================================== +// Functions +//===================================== + + + +//------ Digital I/O ----------------------- + +void pinMode(int pin,int mode) +{ + if(mode == INPUT) + servuinoFunc(S_PIN_MODE_INPUT,pin,mode,NULL,0); + if(mode == OUTPUT) + servuinoFunc(S_PIN_MODE_OUTPUT,pin,mode,NULL,0); + return; +} +void digitalWrite(int pin,int value) +{ + if(value == 0) + servuinoFunc(S_DIGITAL_WRITE_LOW,pin,value,NULL,0); + if(value == 1) + servuinoFunc(S_DIGITAL_WRITE_HIGH,pin,value,NULL,0); + return; +} +int digitalRead(int pin) +{ + return(servuinoFunc(S_DIGITAL_READ,pin,0,NULL,0)); +} + +void analogWrite(int pin,int value) //PWM +{ + servuinoFunc(S_ANALOG_WRITE,pin,value,NULL,0); + return; +} + +int analogRead(int pin) +{ + pin = g_nDigPins + pin; + return(servuinoFunc(S_ANALOG_READ,pin,0,NULL,0)); +} + +//------ Advanced I/O ---------------------- +void tone(int pin, unsigned int freq) +{ + servuinoFunc(S_UNIMPLEMENTED,0,0,"tone()",0); +} + +void tone(int pin, unsigned int freq, unsigned long duration) +{ + servuinoFunc(S_UNIMPLEMENTED,0,0,"tone()",0); +} + +void noTone(int pin) +{ + servuinoFunc(S_UNIMPLEMENTED,0,0,"noTone()",0); +} + +void shiftOut(int dataPin, int clockPin, int bitOrder, int value) +{ + //bitOrder: which order to shift out the bits; either MSBFIRST or LSBFIRST. + servuinoFunc(S_UNIMPLEMENTED,0,0,"shiftOut()",0); +} + +int shiftIn(int dataPin, int clockPin, int bitOrder) +{ + //bitOrder: which order to shift out the bits; either MSBFIRST or LSBFIRST. + servuinoFunc(S_UNIMPLEMENTED,0,0,"shiftIn()",0); +} + +unsigned long pulseIn(int pin, int value) +{ + servuinoFunc(S_UNIMPLEMENTED,0,0,"pulseIn()",0); +} + +unsigned long pulseIn(int pin, int value, unsigned long timeout) +{ + servuinoFunc(S_UNIMPLEMENTED,0,0,"pulseIn()",0); +} + +//------ Time ------------------------------ + +unsigned long millis() +{ + return(g_curStep*100); +} + +unsigned long micros() +{ + return(g_curStep*100000); +} + +void delay(int ms) +{ + servuinoFunc(S_DELAY,ms,0,NULL,0); + return; +} + +void delayMicroseconds(int us) +{ + servuinoFunc(S_DELAY_MS,us,0,NULL,0); + return; +} + +//------ Math ------------------------------ +void test_math() +{ + double r,x,z; + int y; + y = min(1,2); + y = max(1,2); + y = abs(1); + r = pow(x,z); + r = sqrt(y); +} + + +double sq(double x) +{ + return(sqrt(x)); +} + +int map(int x, int fromLow, int fromHigh, int toLow, int toHigh) +{ + int y; + y = (float)(x-fromLow)/(fromHigh - fromLow)*(toHigh - toLow) + toLow; + //printf("%d %d\n",x,y); + return(y); +} + +int constrain(int x, int a, int b) +{ + int res; + if(x<=b && x>=a)res = x; + if(x>b)res = b; + if(x> 8; + return(y); +} + +int bitRead(int x, int n) +{ + int bit; + //printf("bitRead: x=%d n=%d PORTB=%d\n",x,n,PORTB); + bit = x >> n; + bit = bit&0x0001; + //printf("bitRead: x=%d n=%d PORTB=%d bit=%d\n",x,n,PORTB,bit); + return(bit); +} + +void bitSet(unsigned int *x, int n) +{ + int res,mask; + + mask = 1 << n; + *x = *x | mask; + + return ; +} + +void bitClear(unsigned int *x, int n) +{ + int res,mask; + + mask = 1 << n; + *x = *x & ~mask; + + return; +} + +void bitWrite(unsigned int *x, int n, int b) +{ + //printf("bitWrite: %d %d %d PORTB=%d\n",*x,n,b,PORTB); + if(b==0)bitClear(x,n); + if(b==1)bitSet(x,n); + return; +} + +int bit(int n) +{ + int res; + //for(i=0;i= lngth ) + { + cerr << "Error: Subscript " << subscript + << " out of range" << endl; + exit( 1 ); // terminate program + } // end if + + return sPtr[ subscript ]; // non-const return; modifiable lvalue +} + +// return reference to character in String as rvalue +char String::operator[]( int subscript ) const +{ + // test for subscript out of range + if ( subscript < 0 || subscript >= lngth ) + { + cerr << "Error: Subscript " << subscript + << " out of range" << endl; + exit( 1 ); // terminate program + } // end if + + return sPtr[ subscript ]; // returns copy of this element +} + +// return a substring beginning at index and of length subLength +String String::operator()( int index, int subLength ) const +{ + // if index is out of range or substring length < 0, + // return an empty String object + if ( index < 0 || index >= lngth || subLength < 0 ) + return ""; // converted to a String object automatically + + // determine length of substring + int len; + + if ( ( subLength == 0 ) || ( index + subLength > lngth ) ) + len = lngth - index; + else + len = subLength; + + // allocate temporary array for substring and + // terminating null character + char *tempPtr = new char[ len + 1 ]; + + // copy substring into char array and terminate string + strncpy( tempPtr, &sPtr[ index ], len ); + tempPtr[ len ] = '\0'; + + // create temporary String object containing the substring + String tempString( tempPtr ); + delete [] tempPtr; + return tempString; +} + +int String::getLength() const +{ + return lngth; +} + +void String::setString( const char *string2 ) +{ + sPtr = new char[ lngth + 1 ]; + + if ( string2 != 0 ) + strcpy( sPtr, string2 ); + else + sPtr[ 0 ] = '\0'; +} + +ostream &operator<<( ostream &output, const String &s ) +{ + output << s.sPtr; + return output; +} + +istream &operator>>( istream &input, String &s ) +{ + char temp[ 100 ]; + input >> setw( 100 ) >> temp; + s = temp; + return input; +} + +String String::operator+(String right ) +{ + String temp; + size_t newLength = lngth + right.lngth; + char *tempPtr = new char[ newLength + 1 ]; + strcpy( tempPtr, sPtr ); + strcpy( tempPtr + lngth, right.sPtr ); + temp.sPtr = tempPtr; + temp.lngth = newLength; + return temp; +} + +String String::operator+( const int number ) +{ + String temp; + stringstream ss; + String right; + ss << number; + right = ss.str(); + size_t newLength = lngth + right.lngth; + char *tempPtr = new char[ newLength + 1 ]; + strcpy( tempPtr, sPtr ); + strcpy( tempPtr + lngth, right.sPtr ); + temp.sPtr = tempPtr; + temp.lngth = newLength; + return temp; +} + +String String::operator+( unsigned long number ) +{ + String temp; + stringstream ss; + String right; + ss << number; + right = ss.str(); + size_t newLength = lngth + right.lngth; + char *tempPtr = new char[ newLength + 1 ]; + strcpy( tempPtr, sPtr ); + strcpy( tempPtr + lngth, right.sPtr ); + temp.sPtr = tempPtr; + temp.lngth = newLength; + return temp; +} + +String String::operator+( const char one ) +{ + String temp; + stringstream ss; + String right; + ss << one; + right = ss.str(); + size_t newLength = lngth + right.lngth; + char *tempPtr = new char[ newLength + 1 ]; + strcpy( tempPtr, sPtr ); + strcpy( tempPtr + lngth, right.sPtr ); + temp.sPtr = tempPtr; + temp.lngth = newLength; + return temp; +} + + +const String &String::operator=( string right ) +{ + char *p; + lngth = right.length(); + p=(char *)(right.c_str()); + setString(p); + return *this; +} + +const String &String::operator=(const char *right ) +{ + const char *p; + lngth = strlen(right); + p = right; + setString(p); + return *this; +} + + +String::String( const int x ) +{ + char p[10]; + sprintf(p,"%d",x); + lngth = strlen(p); + setString(p); +} + +String::String( const int x, const int base ) +{ + char p[10]; + if(base == BIN)sprintf(p,"BIN%d",x); + if(base == DEC)sprintf(p,"DEC%d",x); + if(base == HEX)sprintf(p,"HEX%d",x); + lngth = strlen(p); + setString(p); +} + +char String::charAt( const int n ) +{ + char res; + res = sPtr[n]; + return(res); +} + +int String::compareTo( const String s ) +{ + int res; + if(*this > s)res = -1; + if(*this < s)res = 1; + if(*this == s)res = 0; + return(res); +} + +String String::concat( const String s ) +{ + *this += s; + return *this; +} + +bool String::endsWith( const String s ) +{ + bool res; + int pos; + string p(sPtr); + pos = lngth - s.lngth; + res = p.compare(pos,s.lngth,s.sPtr); + return(res); +} + +bool String::equals( const String s ) +{ + return strcmp( sPtr, s.sPtr ) == 0; +} + +bool String::equalsIgnoreCase( const String s ) +{ + // Not implemented + return strcmp( sPtr, s.sPtr ) == 0; +} + +void String::getBytes( int buf[],int *len ) +{ + int i; + char *p; + + p = sPtr; + for(i=0;i. +*/ + +#define F_PINMODE 1 +#define F_DIGITALWRITE 2 +#define F_DIGITALREAD 3 +#define F_ANALOGWRITE 4 +#define F_ANALOGREAD 5 +#define F_ANALOGREFERENCE 6 +#define F_TONE_int_int 7 +#define F_TONE_int_int_long 8 +#define F_NOTONE 9 +#define F_SHIFTOUT 10 +#define F_SHIFTIN 11 +#define F_PULSEIN_int_int 12 +#define F_PULSEIN_int_int_long 13 +#define F_DELAY 14 +#define F_DELAYMICROSECONDS 15 +#define F_ATTACHINTERRUPT 16 +#define F_DETACHINTERRUPT 17 +#define F_INTERRUPTS 18 +#define F_NOINTERRUPTS 19 +#define F_SERIAL_BEGIN 20 +#define F_SERIAL_END 22 +#define F_SERIAL_AVAILABLE 23 +#define F_SERIAL_READ 24 +#define F_SERIAL_PEEK 25 +#define F_SERIAL_FLUSH 26 +#define F_SERIAL_PRINT_int 27 +#define F_SERIAL_PRINT_int_int 28 +#define F_SERIAL_PRINT_char 29 +#define F_SERIAL_PRINTLN_int 30 +#define F_SERIAL_PRINTLN_char 31 +#define F_SERIAL_PRINTLN_String 32 +#define F_SERIAL_WRITE 33 +#define F_SERIAL_PRINTLN_void 34 +#define F_LOOP 99 + diff --git a/servuino/common.h b/servuino/common.h new file mode 100755 index 0000000..fc7c81f --- /dev/null +++ b/servuino/common.h @@ -0,0 +1,159 @@ +/* Servuino is a Arduino Simulator Engine + Copyright (C) 2012 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +// Board ==================== + +#define UNO 1 +#define MEGA 2 + +#define ANA 1 +#define DIG 2 + +#define MAX_PIN_IR_UNO 2 +#define MAX_PIN_IR_MEGA 6 + +#define MAX_PIN_ANALOG_UNO 6 +#define MAX_PIN_DIGITAL_UNO 14 + +#define MAX_PIN_ANALOG_MEGA 16 +#define MAX_PIN_DIGITAL_MEGA 54 + +#define MAX_TOTAL_PINS 100 + +#define MAX_SOURCE_LINES 1000 + +#define D00 0 +#define D01 1 +#define D02 2 +#define D03 3 +#define D04 4 +#define D05 5 +#define D06 6 +#define D07 7 +#define D08 8 +#define D09 9 +#define D10 10 +#define D11 11 +#define D12 12 +#define D13 13 + +#define A00 14 +#define A01 15 +#define A02 16 +#define A03 17 +#define A04 18 +#define A05 19 + +#define IR0 2 +#define IR1 3 +#define IR2 21 +#define IR3 20 +#define IR4 19 +#define IR5 18 + + +// Logical =================== +#define S_ON 1 +#define S_OFF 0 + +#define S_YES 1 +#define S_NO 0 + +#define HEAL 101 +#define FAIL 102 + +#define S_OK 0 +#define S_NOK 1 + +// Values ==================== + +#define INTERRUPT 3 + +#define BYTE 1 +#define BIN 2 +#define OCT 3 +#define DEC 4 +#define HEX 5 + + +#define S_ADD 10 +#define S_DELETE 20 + +// Interrupt ================= + + +#define I_CHANGE 21 +#define I_RISING 22 +#define I_FALLING 23 +#define I_LOW 24 + +#define FREE 0 +#define RX 4 +#define TX 5 + +#define S_RUN 1 +#define S_ADMIN 2 +#define S_STOP 1 + + +#define S_FORWARD 1 +#define S_BACKWARD 2 + + +// Dimension +#define SCEN_MAX 2000 +#define MAX_LOOPS 2000 +#define LOG_MAX 200 +#define LOG_TEXT_SIZE 220 +#define MAX_READ 900 +#define MAX_STEP 2000 +#define MAX_LOOP 2000 +#define MAX_SERIAL_BUFFER 900 +#define SIZE_ROW 280 + +// Misc ======================= +#define BYTE 1 +#define BIN 2 +#define OCT 3 +#define DEC 4 +#define HEX 5 + +#define T_READ 1 +#define T_WRITE 2 + +#define S_WRONG 99 + + +int g_boardType = UNO; +void errorLog(const char msg[], int x); +int checkRange(int mode,const char check[],int value); + +int max_digVal,min_digVal,max_anaVal,min_anaVal; +int max_digPin,min_digPin,max_anaPin,min_anaPin; +int max_irPin,min_irPin; +int max_pwm,min_pwm; +int max_totPin; + +int max_steps; +int max_loops; + +int inrpt[MAX_PIN_IR_MEGA]; +int attached[MAX_PIN_IR_MEGA]; + +// End of file + diff --git a/servuino/common_lib.c b/servuino/common_lib.c new file mode 100755 index 0000000..8648b4e --- /dev/null +++ b/servuino/common_lib.c @@ -0,0 +1,222 @@ +/* Servuino is a Arduino Simulator Engine + Copyright (C) 2012 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + + +//==================================== +char *int2bin(int num, int pad) +// Example: printf("%s\n", int2bin(i, 8)); +//==================================== +{ + char *str = (char*)malloc(sizeof(char) * (pad+1)); + if (str) + { + str[pad]='\0'; + while (--pad>=0) + { + str[pad] = num & 1 ? '1' : '0'; + num >>= 1; + } + } + else + { + printf("int2bin:No string\n"); + } + return str; +} + +//==================================== +int setRange(int board) +//==================================== +{ + max_steps = SCEN_MAX; + max_loops = MAX_LOOPS; + + max_digVal = 1; + min_digVal = 0; + + max_anaVal = 1023; + min_anaVal = 0; + + max_pwm = 255; + min_pwm = 0; + + if(board == UNO) + { + max_totPin = MAX_PIN_DIGITAL_UNO + MAX_PIN_ANALOG_UNO; + + max_digPin = MAX_PIN_DIGITAL_UNO; + min_digPin = 0; + + max_anaPin = MAX_PIN_ANALOG_UNO; + min_anaPin = 0; + + max_irPin = MAX_PIN_IR_UNO; + min_irPin = 0; + } + if(board == MEGA) + { + max_totPin = MAX_PIN_DIGITAL_MEGA + MAX_PIN_ANALOG_MEGA; + + max_digPin = MAX_PIN_DIGITAL_MEGA; + min_digPin = 0; + + max_anaPin = MAX_PIN_ANALOG_MEGA; + min_anaPin = 0; + + max_irPin = MAX_PIN_IR_MEGA; + min_irPin = 0; + } + + inrpt[0] = IR0; + inrpt[1] = IR1; + inrpt[2] = IR2; + inrpt[3] = IR3; + inrpt[4] = IR4; + inrpt[5] = IR5; + + return(max_totPin); +} +//==================================== +int checkRange(int mode,const char check[],int value) +//==================================== +{ + int i,j,minx,maxx,res; + char temp[120],message[180]; + + if(mode==HEAL) + res = value; + else + res = S_OK; + + + // PWM pins + if(strstr(check,"pwmpin") != NULL) + { + strcpy(message,"Allowed PWM Pins: 3,5,6,9,10,11"); + if(g_boardType == UNO) + { + if(value != 3 && value != 5 && value != 6 && value != 9 && value != 10 && value != 11) + { + sprintf(temp,"%s - %d",message,value); + errorLog(temp,value); + return(S_NOK); + } + else + return(S_OK); + } + if(g_boardType == MEGA) + { + if(value < 0 || value > 13) + { + sprintf(temp,"%s - %d",message,value); + errorLog(temp,value); + return(S_NOK); + } + else + return(S_OK); + } + + } + + // set ranges + if(strstr(check,"digval") != NULL) + { + strcpy(message,"Digital Value"); + maxx = max_digVal; + minx = min_digVal; + } + else if(strstr(check,"anaval") != NULL) + { + strcpy(message,"Analog Value"); + maxx = max_anaVal; + minx = min_anaVal; + } + else if(strstr(check,"pwmval") != NULL) + { + strcpy(message,"PWM Value"); + maxx = max_pwm; + minx = min_pwm; + } + else if(strstr(check,"digpin") != NULL) + { + strcpy(message,"Digital Pin"); + maxx = max_digPin; + minx = min_digPin; + } + else if(strstr(check,"anapin") != NULL) + { + strcpy(message,"Analog Pin"); + maxx = max_anaPin; + minx = min_anaPin; + } + else if(strstr(check,"step") != NULL) + { + strcpy(message,"Step out of range"); + maxx = max_steps; + minx = 1; + } + else if(strstr(check,"loop") != NULL) + { + strcpy(message,"Loop out of range"); + maxx = max_loops; + minx = 0; + } + else if(strstr(check,"interrupt") != NULL) + { + strcpy(message,"Interrupt out of range"); + maxx = max_irPin; + minx = min_irPin; + } + else + { + strcpy(message,"Undefined Range Control"); + maxx = 0; + minx = 0; + } + + // evaluate + if(maxx == 0 && minx == 0) + { + sprintf(temp,"Unknown:%s",message); + errorLog(temp,value); + res = S_NOK; + } + else if(value > maxx) + { + sprintf(temp,"%s %d >",message,value); + errorLog(temp,maxx); + if(mode==HEAL) + res = maxx; + else + res = S_NOK; + } + else if(value < minx) + { + sprintf(temp,"%s %d <",message,value); + errorLog(temp,minx); + if(mode==HEAL) + res = minx; + else + res = S_NOK; + } + + return(res); +} + + +// End of file diff --git a/servuino/data.register b/servuino/data.register new file mode 100755 index 0000000..d63ba12 --- /dev/null +++ b/servuino/data.register @@ -0,0 +1 @@ +# Servuino Register Data Version: 0.1.2 diff --git a/servuino/data.scen b/servuino/data.scen new file mode 100755 index 0000000..90db722 --- /dev/null +++ b/servuino/data.scen @@ -0,0 +1,11 @@ +// SCENDIGPIN 9 1 0 +// SCENDIGPIN 9 40 1 +// SCENDIGPIN 9 130 0 +// SCENDIGPIN 10 1 0 +// SCENDIGPIN 10 50 1 +// SCENDIGPIN 10 100 0 +// SCENDIGPIN 10 200 1 +// SCENANAPIN 4 1 5 +// SCENANAPIN 4 80 12 +// SCENANAPIN 5 1 8 +// SCENANAPIN 5 120 18 diff --git a/servuino/data.scenario b/servuino/data.scenario new file mode 100755 index 0000000..3061478 --- /dev/null +++ b/servuino/data.scenario @@ -0,0 +1,602 @@ +# Digital: 9 10 +# Analog: 4 5 + 1 0 0 5 8 + 2 0 0 5 8 + 3 0 0 5 8 + 4 0 0 5 8 + 5 0 0 5 8 + 6 0 0 5 8 + 7 0 0 5 8 + 8 0 0 5 8 + 9 0 0 5 8 + 10 0 0 5 8 + 11 0 0 5 8 + 12 0 0 5 8 + 13 0 0 5 8 + 14 0 0 5 8 + 15 0 0 5 8 + 16 0 0 5 8 + 17 0 0 5 8 + 18 0 0 5 8 + 19 0 0 5 8 + 20 0 0 5 8 + 21 0 0 5 8 + 22 0 0 5 8 + 23 0 0 5 8 + 24 0 0 5 8 + 25 0 0 5 8 + 26 0 0 5 8 + 27 0 0 5 8 + 28 0 0 5 8 + 29 0 0 5 8 + 30 0 0 5 8 + 31 0 0 5 8 + 32 0 0 5 8 + 33 0 0 5 8 + 34 0 0 5 8 + 35 0 0 5 8 + 36 0 0 5 8 + 37 0 0 5 8 + 38 0 0 5 8 + 39 0 0 5 8 + 40 1 0 5 8 + 41 1 0 5 8 + 42 1 0 5 8 + 43 1 0 5 8 + 44 1 0 5 8 + 45 1 0 5 8 + 46 1 0 5 8 + 47 1 0 5 8 + 48 1 0 5 8 + 49 1 0 5 8 + 50 1 1 5 8 + 51 1 1 5 8 + 52 1 1 5 8 + 53 1 1 5 8 + 54 1 1 5 8 + 55 1 1 5 8 + 56 1 1 5 8 + 57 1 1 5 8 + 58 1 1 5 8 + 59 1 1 5 8 + 60 1 1 5 8 + 61 1 1 5 8 + 62 1 1 5 8 + 63 1 1 5 8 + 64 1 1 5 8 + 65 1 1 5 8 + 66 1 1 5 8 + 67 1 1 5 8 + 68 1 1 5 8 + 69 1 1 5 8 + 70 1 1 5 8 + 71 1 1 5 8 + 72 1 1 5 8 + 73 1 1 5 8 + 74 1 1 5 8 + 75 1 1 5 8 + 76 1 1 5 8 + 77 1 1 5 8 + 78 1 1 5 8 + 79 1 1 5 8 + 80 1 1 12 8 + 81 1 1 12 8 + 82 1 1 12 8 + 83 1 1 12 8 + 84 1 1 12 8 + 85 1 1 12 8 + 86 1 1 12 8 + 87 1 1 12 8 + 88 1 1 12 8 + 89 1 1 12 8 + 90 1 1 12 8 + 91 1 1 12 8 + 92 1 1 12 8 + 93 1 1 12 8 + 94 1 1 12 8 + 95 1 1 12 8 + 96 1 1 12 8 + 97 1 1 12 8 + 98 1 1 12 8 + 99 1 1 12 8 + 100 1 0 12 8 + 101 1 0 12 8 + 102 1 0 12 8 + 103 1 0 12 8 + 104 1 0 12 8 + 105 1 0 12 8 + 106 1 0 12 8 + 107 1 0 12 8 + 108 1 0 12 8 + 109 1 0 12 8 + 110 1 0 12 8 + 111 1 0 12 8 + 112 1 0 12 8 + 113 1 0 12 8 + 114 1 0 12 8 + 115 1 0 12 8 + 116 1 0 12 8 + 117 1 0 12 8 + 118 1 0 12 8 + 119 1 0 12 8 + 120 1 0 12 18 + 121 1 0 12 18 + 122 1 0 12 18 + 123 1 0 12 18 + 124 1 0 12 18 + 125 1 0 12 18 + 126 1 0 12 18 + 127 1 0 12 18 + 128 1 0 12 18 + 129 1 0 12 18 + 130 0 0 12 18 + 131 0 0 12 18 + 132 0 0 12 18 + 133 0 0 12 18 + 134 0 0 12 18 + 135 0 0 12 18 + 136 0 0 12 18 + 137 0 0 12 18 + 138 0 0 12 18 + 139 0 0 12 18 + 140 0 0 12 18 + 141 0 0 12 18 + 142 0 0 12 18 + 143 0 0 12 18 + 144 0 0 12 18 + 145 0 0 12 18 + 146 0 0 12 18 + 147 0 0 12 18 + 148 0 0 12 18 + 149 0 0 12 18 + 150 0 0 12 18 + 151 0 0 12 18 + 152 0 0 12 18 + 153 0 0 12 18 + 154 0 0 12 18 + 155 0 0 12 18 + 156 0 0 12 18 + 157 0 0 12 18 + 158 0 0 12 18 + 159 0 0 12 18 + 160 0 0 12 18 + 161 0 0 12 18 + 162 0 0 12 18 + 163 0 0 12 18 + 164 0 0 12 18 + 165 0 0 12 18 + 166 0 0 12 18 + 167 0 0 12 18 + 168 0 0 12 18 + 169 0 0 12 18 + 170 0 0 12 18 + 171 0 0 12 18 + 172 0 0 12 18 + 173 0 0 12 18 + 174 0 0 12 18 + 175 0 0 12 18 + 176 0 0 12 18 + 177 0 0 12 18 + 178 0 0 12 18 + 179 0 0 12 18 + 180 0 0 12 18 + 181 0 0 12 18 + 182 0 0 12 18 + 183 0 0 12 18 + 184 0 0 12 18 + 185 0 0 12 18 + 186 0 0 12 18 + 187 0 0 12 18 + 188 0 0 12 18 + 189 0 0 12 18 + 190 0 0 12 18 + 191 0 0 12 18 + 192 0 0 12 18 + 193 0 0 12 18 + 194 0 0 12 18 + 195 0 0 12 18 + 196 0 0 12 18 + 197 0 0 12 18 + 198 0 0 12 18 + 199 0 0 12 18 + 200 0 1 12 18 + 201 0 1 12 18 + 202 0 1 12 18 + 203 0 1 12 18 + 204 0 1 12 18 + 205 0 1 12 18 + 206 0 1 12 18 + 207 0 1 12 18 + 208 0 1 12 18 + 209 0 1 12 18 + 210 0 1 12 18 + 211 0 1 12 18 + 212 0 1 12 18 + 213 0 1 12 18 + 214 0 1 12 18 + 215 0 1 12 18 + 216 0 1 12 18 + 217 0 1 12 18 + 218 0 1 12 18 + 219 0 1 12 18 + 220 0 1 12 18 + 221 0 1 12 18 + 222 0 1 12 18 + 223 0 1 12 18 + 224 0 1 12 18 + 225 0 1 12 18 + 226 0 1 12 18 + 227 0 1 12 18 + 228 0 1 12 18 + 229 0 1 12 18 + 230 0 1 12 18 + 231 0 1 12 18 + 232 0 1 12 18 + 233 0 1 12 18 + 234 0 1 12 18 + 235 0 1 12 18 + 236 0 1 12 18 + 237 0 1 12 18 + 238 0 1 12 18 + 239 0 1 12 18 + 240 0 1 12 18 + 241 0 1 12 18 + 242 0 1 12 18 + 243 0 1 12 18 + 244 0 1 12 18 + 245 0 1 12 18 + 246 0 1 12 18 + 247 0 1 12 18 + 248 0 1 12 18 + 249 0 1 12 18 + 250 0 1 12 18 + 251 0 1 12 18 + 252 0 1 12 18 + 253 0 1 12 18 + 254 0 1 12 18 + 255 0 1 12 18 + 256 0 1 12 18 + 257 0 1 12 18 + 258 0 1 12 18 + 259 0 1 12 18 + 260 0 1 12 18 + 261 0 1 12 18 + 262 0 1 12 18 + 263 0 1 12 18 + 264 0 1 12 18 + 265 0 1 12 18 + 266 0 1 12 18 + 267 0 1 12 18 + 268 0 1 12 18 + 269 0 1 12 18 + 270 0 1 12 18 + 271 0 1 12 18 + 272 0 1 12 18 + 273 0 1 12 18 + 274 0 1 12 18 + 275 0 1 12 18 + 276 0 1 12 18 + 277 0 1 12 18 + 278 0 1 12 18 + 279 0 1 12 18 + 280 0 1 12 18 + 281 0 1 12 18 + 282 0 1 12 18 + 283 0 1 12 18 + 284 0 1 12 18 + 285 0 1 12 18 + 286 0 1 12 18 + 287 0 1 12 18 + 288 0 1 12 18 + 289 0 1 12 18 + 290 0 1 12 18 + 291 0 1 12 18 + 292 0 1 12 18 + 293 0 1 12 18 + 294 0 1 12 18 + 295 0 1 12 18 + 296 0 1 12 18 + 297 0 1 12 18 + 298 0 1 12 18 + 299 0 1 12 18 + 300 0 1 12 18 + 301 0 1 12 18 + 302 0 1 12 18 + 303 0 1 12 18 + 304 0 1 12 18 + 305 0 1 12 18 + 306 0 1 12 18 + 307 0 1 12 18 + 308 0 1 12 18 + 309 0 1 12 18 + 310 0 1 12 18 + 311 0 1 12 18 + 312 0 1 12 18 + 313 0 1 12 18 + 314 0 1 12 18 + 315 0 1 12 18 + 316 0 1 12 18 + 317 0 1 12 18 + 318 0 1 12 18 + 319 0 1 12 18 + 320 0 1 12 18 + 321 0 1 12 18 + 322 0 1 12 18 + 323 0 1 12 18 + 324 0 1 12 18 + 325 0 1 12 18 + 326 0 1 12 18 + 327 0 1 12 18 + 328 0 1 12 18 + 329 0 1 12 18 + 330 0 1 12 18 + 331 0 1 12 18 + 332 0 1 12 18 + 333 0 1 12 18 + 334 0 1 12 18 + 335 0 1 12 18 + 336 0 1 12 18 + 337 0 1 12 18 + 338 0 1 12 18 + 339 0 1 12 18 + 340 0 1 12 18 + 341 0 1 12 18 + 342 0 1 12 18 + 343 0 1 12 18 + 344 0 1 12 18 + 345 0 1 12 18 + 346 0 1 12 18 + 347 0 1 12 18 + 348 0 1 12 18 + 349 0 1 12 18 + 350 0 1 12 18 + 351 0 1 12 18 + 352 0 1 12 18 + 353 0 1 12 18 + 354 0 1 12 18 + 355 0 1 12 18 + 356 0 1 12 18 + 357 0 1 12 18 + 358 0 1 12 18 + 359 0 1 12 18 + 360 0 1 12 18 + 361 0 1 12 18 + 362 0 1 12 18 + 363 0 1 12 18 + 364 0 1 12 18 + 365 0 1 12 18 + 366 0 1 12 18 + 367 0 1 12 18 + 368 0 1 12 18 + 369 0 1 12 18 + 370 0 1 12 18 + 371 0 1 12 18 + 372 0 1 12 18 + 373 0 1 12 18 + 374 0 1 12 18 + 375 0 1 12 18 + 376 0 1 12 18 + 377 0 1 12 18 + 378 0 1 12 18 + 379 0 1 12 18 + 380 0 1 12 18 + 381 0 1 12 18 + 382 0 1 12 18 + 383 0 1 12 18 + 384 0 1 12 18 + 385 0 1 12 18 + 386 0 1 12 18 + 387 0 1 12 18 + 388 0 1 12 18 + 389 0 1 12 18 + 390 0 1 12 18 + 391 0 1 12 18 + 392 0 1 12 18 + 393 0 1 12 18 + 394 0 1 12 18 + 395 0 1 12 18 + 396 0 1 12 18 + 397 0 1 12 18 + 398 0 1 12 18 + 399 0 1 12 18 + 400 0 1 12 18 + 401 0 1 12 18 + 402 0 1 12 18 + 403 0 1 12 18 + 404 0 1 12 18 + 405 0 1 12 18 + 406 0 1 12 18 + 407 0 1 12 18 + 408 0 1 12 18 + 409 0 1 12 18 + 410 0 1 12 18 + 411 0 1 12 18 + 412 0 1 12 18 + 413 0 1 12 18 + 414 0 1 12 18 + 415 0 1 12 18 + 416 0 1 12 18 + 417 0 1 12 18 + 418 0 1 12 18 + 419 0 1 12 18 + 420 0 1 12 18 + 421 0 1 12 18 + 422 0 1 12 18 + 423 0 1 12 18 + 424 0 1 12 18 + 425 0 1 12 18 + 426 0 1 12 18 + 427 0 1 12 18 + 428 0 1 12 18 + 429 0 1 12 18 + 430 0 1 12 18 + 431 0 1 12 18 + 432 0 1 12 18 + 433 0 1 12 18 + 434 0 1 12 18 + 435 0 1 12 18 + 436 0 1 12 18 + 437 0 1 12 18 + 438 0 1 12 18 + 439 0 1 12 18 + 440 0 1 12 18 + 441 0 1 12 18 + 442 0 1 12 18 + 443 0 1 12 18 + 444 0 1 12 18 + 445 0 1 12 18 + 446 0 1 12 18 + 447 0 1 12 18 + 448 0 1 12 18 + 449 0 1 12 18 + 450 0 1 12 18 + 451 0 1 12 18 + 452 0 1 12 18 + 453 0 1 12 18 + 454 0 1 12 18 + 455 0 1 12 18 + 456 0 1 12 18 + 457 0 1 12 18 + 458 0 1 12 18 + 459 0 1 12 18 + 460 0 1 12 18 + 461 0 1 12 18 + 462 0 1 12 18 + 463 0 1 12 18 + 464 0 1 12 18 + 465 0 1 12 18 + 466 0 1 12 18 + 467 0 1 12 18 + 468 0 1 12 18 + 469 0 1 12 18 + 470 0 1 12 18 + 471 0 1 12 18 + 472 0 1 12 18 + 473 0 1 12 18 + 474 0 1 12 18 + 475 0 1 12 18 + 476 0 1 12 18 + 477 0 1 12 18 + 478 0 1 12 18 + 479 0 1 12 18 + 480 0 1 12 18 + 481 0 1 12 18 + 482 0 1 12 18 + 483 0 1 12 18 + 484 0 1 12 18 + 485 0 1 12 18 + 486 0 1 12 18 + 487 0 1 12 18 + 488 0 1 12 18 + 489 0 1 12 18 + 490 0 1 12 18 + 491 0 1 12 18 + 492 0 1 12 18 + 493 0 1 12 18 + 494 0 1 12 18 + 495 0 1 12 18 + 496 0 1 12 18 + 497 0 1 12 18 + 498 0 1 12 18 + 499 0 1 12 18 + 500 0 1 12 18 + 501 0 1 12 18 + 502 0 1 12 18 + 503 0 1 12 18 + 504 0 1 12 18 + 505 0 1 12 18 + 506 0 1 12 18 + 507 0 1 12 18 + 508 0 1 12 18 + 509 0 1 12 18 + 510 0 1 12 18 + 511 0 1 12 18 + 512 0 1 12 18 + 513 0 1 12 18 + 514 0 1 12 18 + 515 0 1 12 18 + 516 0 1 12 18 + 517 0 1 12 18 + 518 0 1 12 18 + 519 0 1 12 18 + 520 0 1 12 18 + 521 0 1 12 18 + 522 0 1 12 18 + 523 0 1 12 18 + 524 0 1 12 18 + 525 0 1 12 18 + 526 0 1 12 18 + 527 0 1 12 18 + 528 0 1 12 18 + 529 0 1 12 18 + 530 0 1 12 18 + 531 0 1 12 18 + 532 0 1 12 18 + 533 0 1 12 18 + 534 0 1 12 18 + 535 0 1 12 18 + 536 0 1 12 18 + 537 0 1 12 18 + 538 0 1 12 18 + 539 0 1 12 18 + 540 0 1 12 18 + 541 0 1 12 18 + 542 0 1 12 18 + 543 0 1 12 18 + 544 0 1 12 18 + 545 0 1 12 18 + 546 0 1 12 18 + 547 0 1 12 18 + 548 0 1 12 18 + 549 0 1 12 18 + 550 0 1 12 18 + 551 0 1 12 18 + 552 0 1 12 18 + 553 0 1 12 18 + 554 0 1 12 18 + 555 0 1 12 18 + 556 0 1 12 18 + 557 0 1 12 18 + 558 0 1 12 18 + 559 0 1 12 18 + 560 0 1 12 18 + 561 0 1 12 18 + 562 0 1 12 18 + 563 0 1 12 18 + 564 0 1 12 18 + 565 0 1 12 18 + 566 0 1 12 18 + 567 0 1 12 18 + 568 0 1 12 18 + 569 0 1 12 18 + 570 0 1 12 18 + 571 0 1 12 18 + 572 0 1 12 18 + 573 0 1 12 18 + 574 0 1 12 18 + 575 0 1 12 18 + 576 0 1 12 18 + 577 0 1 12 18 + 578 0 1 12 18 + 579 0 1 12 18 + 580 0 1 12 18 + 581 0 1 12 18 + 582 0 1 12 18 + 583 0 1 12 18 + 584 0 1 12 18 + 585 0 1 12 18 + 586 0 1 12 18 + 587 0 1 12 18 + 588 0 1 12 18 + 589 0 1 12 18 + 590 0 1 12 18 + 591 0 1 12 18 + 592 0 1 12 18 + 593 0 1 12 18 + 594 0 1 12 18 + 595 0 1 12 18 + 596 0 1 12 18 + 597 0 1 12 18 + 598 0 1 12 18 + 599 0 1 12 18 + 600 0 1 12 18 diff --git a/servuino/g++.result b/servuino/g++.result new file mode 100755 index 0000000..e69de29 diff --git a/servuino/ino.debug b/servuino/ino.debug new file mode 100755 index 0000000..4be77b6 --- /dev/null +++ b/servuino/ino.debug @@ -0,0 +1,601 @@ +# Servuino Debug Information Version: 0.1.2 +1 56 +2 58 +3 62 +4 63 +5 64 +6 65 +7 66 +8 62 +9 63 +10 64 +11 65 +12 66 +13 62 +14 63 +15 64 +16 65 +17 66 +18 62 +19 63 +20 64 +21 65 +22 66 +23 62 +24 63 +25 64 +26 65 +27 66 +28 62 +29 63 +30 64 +31 65 +32 66 +33 62 +34 63 +35 64 +36 65 +37 66 +38 62 +39 63 +40 64 +41 65 +42 66 +43 62 +44 63 +45 64 +46 65 +47 66 +48 62 +49 63 +50 64 +51 65 +52 66 +53 62 +54 63 +55 64 +56 65 +57 66 +58 62 +59 63 +60 64 +61 65 +62 66 +63 62 +64 63 +65 64 +66 65 +67 66 +68 62 +69 63 +70 64 +71 65 +72 66 +73 62 +74 63 +75 64 +76 65 +77 66 +78 62 +79 63 +80 64 +81 65 +82 66 +83 62 +84 63 +85 64 +86 65 +87 66 +88 62 +89 63 +90 64 +91 65 +92 66 +93 62 +94 63 +95 64 +96 65 +97 66 +98 62 +99 63 +100 64 +101 65 +102 66 +103 62 +104 63 +105 64 +106 65 +107 66 +108 62 +109 63 +110 64 +111 65 +112 66 +113 62 +114 63 +115 64 +116 65 +117 66 +118 62 +119 63 +120 64 +121 65 +122 66 +123 62 +124 63 +125 64 +126 65 +127 66 +128 62 +129 63 +130 64 +131 65 +132 66 +133 62 +134 63 +135 64 +136 65 +137 66 +138 62 +139 63 +140 64 +141 65 +142 66 +143 62 +144 63 +145 64 +146 65 +147 66 +148 62 +149 63 +150 64 +151 65 +152 66 +153 62 +154 63 +155 64 +156 65 +157 66 +158 62 +159 63 +160 64 +161 65 +162 66 +163 62 +164 63 +165 64 +166 65 +167 66 +168 62 +169 63 +170 64 +171 65 +172 66 +173 62 +174 63 +175 64 +176 65 +177 66 +178 62 +179 63 +180 64 +181 65 +182 66 +183 62 +184 63 +185 64 +186 65 +187 66 +188 62 +189 63 +190 64 +191 65 +192 66 +193 62 +194 63 +195 64 +196 65 +197 66 +198 62 +199 63 +200 64 +201 65 +202 66 +203 62 +204 63 +205 64 +206 65 +207 66 +208 62 +209 63 +210 64 +211 65 +212 66 +213 62 +214 63 +215 64 +216 65 +217 66 +218 62 +219 63 +220 64 +221 65 +222 66 +223 62 +224 63 +225 64 +226 65 +227 66 +228 62 +229 63 +230 64 +231 65 +232 66 +233 62 +234 63 +235 64 +236 65 +237 66 +238 62 +239 63 +240 64 +241 65 +242 66 +243 62 +244 63 +245 64 +246 65 +247 66 +248 62 +249 63 +250 64 +251 65 +252 66 +253 62 +254 63 +255 64 +256 65 +257 66 +258 62 +259 63 +260 64 +261 65 +262 66 +263 62 +264 63 +265 64 +266 65 +267 66 +268 62 +269 63 +270 64 +271 65 +272 66 +273 62 +274 63 +275 64 +276 65 +277 66 +278 62 +279 63 +280 64 +281 65 +282 66 +283 62 +284 63 +285 64 +286 65 +287 66 +288 62 +289 63 +290 64 +291 65 +292 66 +293 62 +294 63 +295 64 +296 65 +297 66 +298 62 +299 63 +300 64 +301 65 +302 66 +303 62 +304 63 +305 64 +306 65 +307 66 +308 62 +309 63 +310 64 +311 65 +312 66 +313 62 +314 63 +315 64 +316 65 +317 66 +318 62 +319 63 +320 64 +321 65 +322 66 +323 62 +324 63 +325 64 +326 65 +327 66 +328 62 +329 63 +330 64 +331 65 +332 66 +333 62 +334 63 +335 64 +336 65 +337 66 +338 62 +339 63 +340 64 +341 65 +342 66 +343 62 +344 63 +345 64 +346 65 +347 66 +348 62 +349 63 +350 64 +351 65 +352 66 +353 62 +354 63 +355 64 +356 65 +357 66 +358 62 +359 63 +360 64 +361 65 +362 66 +363 62 +364 63 +365 64 +366 65 +367 66 +368 62 +369 63 +370 64 +371 65 +372 66 +373 62 +374 63 +375 64 +376 65 +377 66 +378 62 +379 63 +380 64 +381 65 +382 66 +383 62 +384 63 +385 64 +386 65 +387 66 +388 62 +389 63 +390 64 +391 65 +392 66 +393 62 +394 63 +395 64 +396 65 +397 66 +398 62 +399 63 +400 64 +401 65 +402 66 +403 62 +404 63 +405 64 +406 65 +407 66 +408 62 +409 63 +410 64 +411 65 +412 66 +413 62 +414 63 +415 64 +416 65 +417 66 +418 62 +419 63 +420 64 +421 65 +422 66 +423 62 +424 63 +425 64 +426 65 +427 66 +428 62 +429 63 +430 64 +431 65 +432 66 +433 62 +434 63 +435 64 +436 65 +437 66 +438 62 +439 63 +440 64 +441 65 +442 66 +443 62 +444 63 +445 64 +446 65 +447 66 +448 62 +449 63 +450 64 +451 65 +452 66 +453 62 +454 63 +455 64 +456 65 +457 66 +458 62 +459 63 +460 64 +461 65 +462 66 +463 62 +464 63 +465 64 +466 65 +467 66 +468 62 +469 63 +470 64 +471 65 +472 66 +473 62 +474 63 +475 64 +476 65 +477 66 +478 62 +479 63 +480 64 +481 65 +482 66 +483 62 +484 63 +485 64 +486 65 +487 66 +488 62 +489 63 +490 64 +491 65 +492 66 +493 62 +494 63 +495 64 +496 65 +497 66 +498 62 +499 63 +500 64 +501 65 +502 66 +503 62 +504 63 +505 64 +506 65 +507 66 +508 62 +509 63 +510 64 +511 65 +512 66 +513 62 +514 63 +515 64 +516 65 +517 66 +518 62 +519 63 +520 64 +521 65 +522 66 +523 62 +524 63 +525 64 +526 65 +527 66 +528 62 +529 63 +530 64 +531 65 +532 66 +533 62 +534 63 +535 64 +536 65 +537 66 +538 62 +539 63 +540 64 +541 65 +542 66 +543 62 +544 63 +545 64 +546 65 +547 66 +548 62 +549 63 +550 64 +551 65 +552 66 +553 62 +554 63 +555 64 +556 65 +557 66 +558 62 +559 63 +560 64 +561 65 +562 66 +563 62 +564 63 +565 64 +566 65 +567 66 +568 62 +569 63 +570 64 +571 65 +572 66 +573 62 +574 63 +575 64 +576 65 +577 66 +578 62 +579 63 +580 64 +581 65 +582 66 +583 62 +584 63 +585 64 +586 65 +587 66 +588 62 +589 63 +590 64 +591 65 +592 66 +593 62 +594 63 +595 64 +596 65 +597 66 +598 62 +599 63 +600 64 diff --git a/servuino/serv.anaval b/servuino/serv.anaval new file mode 100755 index 0000000..2f18852 --- /dev/null +++ b/servuino/serv.anaval @@ -0,0 +1,601 @@ +# Servuino Status Pin Analog Values Version: 0.1.2 ++ 1 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 2 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 3 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 4 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 5 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 6 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 7 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 8 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 9 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 10 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 11 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 12 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 13 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 14 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 15 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 16 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 17 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 18 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 19 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 20 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 21 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 22 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 23 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 24 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 25 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 26 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 27 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 28 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 29 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 30 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 31 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 32 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 33 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 34 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 35 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 36 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 37 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 38 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 39 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 40 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 41 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 42 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 43 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 44 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 45 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 46 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 47 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 48 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 49 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 50 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 51 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 52 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 53 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 54 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 55 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 56 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 57 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 58 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 59 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 60 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 61 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 62 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 63 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 64 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 65 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 66 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 67 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 68 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 69 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 70 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 71 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 72 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 73 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 74 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 75 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 76 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 77 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 78 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 79 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 80 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 81 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 82 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 83 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 84 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 85 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 86 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 87 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 88 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 89 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 90 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 91 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 92 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 93 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 94 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 95 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 96 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 97 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 98 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 99 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 100 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 101 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 102 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 103 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 104 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 105 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 106 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 107 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 108 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 109 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 110 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 111 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 112 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 113 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 114 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 115 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 116 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 117 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 118 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 119 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 120 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 121 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 122 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 123 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 124 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 125 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 126 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 127 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 128 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 129 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 130 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 131 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 132 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 133 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 134 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 135 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 136 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 137 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 138 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 139 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 140 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 141 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 142 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 143 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 144 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 145 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 146 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 147 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 148 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 149 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 150 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 151 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 152 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 153 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 154 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 155 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 156 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 157 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 158 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 159 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 160 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 161 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 162 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 163 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 164 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 165 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 166 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 167 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 168 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 169 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 170 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 171 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 172 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 173 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 174 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 175 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 176 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 177 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 178 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 179 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 180 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 181 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 182 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 183 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 184 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 185 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 186 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 187 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 188 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 189 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 190 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 191 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 192 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 193 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 194 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 195 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 196 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 197 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 198 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 199 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 200 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 201 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 202 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 203 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 204 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 205 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 206 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 207 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 208 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 209 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 210 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 211 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 212 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 213 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 214 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 215 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 216 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 217 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 218 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 219 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 220 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 221 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 222 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 223 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 224 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 225 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 226 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 227 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 228 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 229 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 230 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 231 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 232 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 233 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 234 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 235 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 236 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 237 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 238 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 239 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 240 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 241 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 242 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 243 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 244 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 245 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 246 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 247 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 248 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 249 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 250 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 251 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 252 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 253 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 254 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 255 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 256 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 257 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 258 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 259 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 260 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 261 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 262 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 263 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 264 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 265 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 266 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 267 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 268 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 269 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 270 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 271 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 272 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 273 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 274 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 275 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 276 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 277 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 278 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 279 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 280 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 281 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 282 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 283 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 284 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 285 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 286 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 287 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 288 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 289 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 290 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 291 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 292 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 293 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 294 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 295 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 296 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 297 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 298 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 299 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 300 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 301 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 302 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 303 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 304 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 305 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 306 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 307 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 308 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 309 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 310 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 311 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 312 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 313 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 314 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 315 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 316 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 317 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 318 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 319 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 320 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 321 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 322 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 323 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 324 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 325 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 326 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 327 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 328 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 329 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 330 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 331 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 332 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 333 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 334 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 335 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 336 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 337 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 338 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 339 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 340 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 341 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 342 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 343 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 344 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 345 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 346 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 347 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 348 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 349 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 350 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 351 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 352 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 353 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 354 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 355 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 356 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 357 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 358 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 359 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 360 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 361 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 362 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 363 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 364 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 365 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 366 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 367 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 368 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 369 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 370 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 371 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 372 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 373 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 374 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 375 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 376 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 377 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 378 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 379 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 380 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 381 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 382 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 383 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 384 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 385 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 386 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 387 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 388 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 389 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 390 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 391 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 392 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 393 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 394 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 395 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 396 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 397 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 398 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 399 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 400 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 401 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 402 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 403 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 404 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 405 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 406 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 407 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 408 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 409 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 410 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 411 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 412 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 413 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 414 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 415 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 416 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 417 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 418 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 419 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 420 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 421 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 422 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 423 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 424 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 425 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 426 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 427 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 428 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 429 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 430 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 431 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 432 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 433 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 434 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 435 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 436 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 437 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 438 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 439 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 440 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 441 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 442 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 443 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 444 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 445 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 446 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 447 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 448 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 449 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 450 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 451 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 452 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 453 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 454 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 455 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 456 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 457 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 458 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 459 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 460 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 461 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 462 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 463 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 464 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 465 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 466 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 467 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 468 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 469 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 470 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 471 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 472 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 473 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 474 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 475 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 476 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 477 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 478 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 479 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 480 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 481 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 482 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 483 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 484 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 485 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 486 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 487 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 488 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 489 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 490 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 491 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 492 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 493 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 494 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 495 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 496 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 497 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 498 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 499 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 500 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 501 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 502 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 503 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 504 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 505 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 506 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 507 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 508 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 509 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 510 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 511 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 512 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 513 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 514 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 515 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 516 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 517 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 518 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 519 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 520 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 521 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 522 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 523 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 524 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 525 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 526 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 527 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 528 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 529 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 530 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 531 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 532 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 533 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 534 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 535 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 536 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 537 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 538 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 539 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 540 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 541 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 542 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 543 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 544 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 545 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 546 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 547 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 548 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 549 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 550 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 551 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 552 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 553 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 554 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 555 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 556 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 557 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 558 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 559 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 560 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 561 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 562 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 563 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 564 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 565 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 566 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 567 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 568 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 569 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 570 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 571 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 572 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 573 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 574 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 575 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 576 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 577 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 578 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 579 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 580 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 581 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 582 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 583 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 584 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 585 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 586 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 587 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 588 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 589 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 590 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 591 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 592 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 593 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 594 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 595 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 596 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 597 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 598 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 599 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 600 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/servuino/serv.cust b/servuino/serv.cust new file mode 100755 index 0000000..7b2518b --- /dev/null +++ b/servuino/serv.cust @@ -0,0 +1,241 @@ +# Servuino Cust Log Version: 0.1.2 +2 PIN: Led Blink 13 +4 Led is on 1 +6 Led is off 0 +9 Led is on 1 +11 Led is off 0 +14 Led is on 1 +16 Led is off 0 +19 Led is on 1 +21 Led is off 0 +24 Led is on 1 +26 Led is off 0 +29 Led is on 1 +31 Led is off 0 +34 Led is on 1 +36 Led is off 0 +39 Led is on 1 +41 Led is off 0 +44 Led is on 1 +46 Led is off 0 +49 Led is on 1 +51 Led is off 0 +54 Led is on 1 +56 Led is off 0 +59 Led is on 1 +61 Led is off 0 +64 Led is on 1 +66 Led is off 0 +69 Led is on 1 +71 Led is off 0 +74 Led is on 1 +76 Led is off 0 +79 Led is on 1 +81 Led is off 0 +84 Led is on 1 +86 Led is off 0 +89 Led is on 1 +91 Led is off 0 +94 Led is on 1 +96 Led is off 0 +99 Led is on 1 +101 Led is off 0 +104 Led is on 1 +106 Led is off 0 +109 Led is on 1 +111 Led is off 0 +114 Led is on 1 +116 Led is off 0 +119 Led is on 1 +121 Led is off 0 +124 Led is on 1 +126 Led is off 0 +129 Led is on 1 +131 Led is off 0 +134 Led is on 1 +136 Led is off 0 +139 Led is on 1 +141 Led is off 0 +144 Led is on 1 +146 Led is off 0 +149 Led is on 1 +151 Led is off 0 +154 Led is on 1 +156 Led is off 0 +159 Led is on 1 +161 Led is off 0 +164 Led is on 1 +166 Led is off 0 +169 Led is on 1 +171 Led is off 0 +174 Led is on 1 +176 Led is off 0 +179 Led is on 1 +181 Led is off 0 +184 Led is on 1 +186 Led is off 0 +189 Led is on 1 +191 Led is off 0 +194 Led is on 1 +196 Led is off 0 +199 Led is on 1 +201 Led is off 0 +204 Led is on 1 +206 Led is off 0 +209 Led is on 1 +211 Led is off 0 +214 Led is on 1 +216 Led is off 0 +219 Led is on 1 +221 Led is off 0 +224 Led is on 1 +226 Led is off 0 +229 Led is on 1 +231 Led is off 0 +234 Led is on 1 +236 Led is off 0 +239 Led is on 1 +241 Led is off 0 +244 Led is on 1 +246 Led is off 0 +249 Led is on 1 +251 Led is off 0 +254 Led is on 1 +256 Led is off 0 +259 Led is on 1 +261 Led is off 0 +264 Led is on 1 +266 Led is off 0 +269 Led is on 1 +271 Led is off 0 +274 Led is on 1 +276 Led is off 0 +279 Led is on 1 +281 Led is off 0 +284 Led is on 1 +286 Led is off 0 +289 Led is on 1 +291 Led is off 0 +294 Led is on 1 +296 Led is off 0 +299 Led is on 1 +301 Led is off 0 +304 Led is on 1 +306 Led is off 0 +309 Led is on 1 +311 Led is off 0 +314 Led is on 1 +316 Led is off 0 +319 Led is on 1 +321 Led is off 0 +324 Led is on 1 +326 Led is off 0 +329 Led is on 1 +331 Led is off 0 +334 Led is on 1 +336 Led is off 0 +339 Led is on 1 +341 Led is off 0 +344 Led is on 1 +346 Led is off 0 +349 Led is on 1 +351 Led is off 0 +354 Led is on 1 +356 Led is off 0 +359 Led is on 1 +361 Led is off 0 +364 Led is on 1 +366 Led is off 0 +369 Led is on 1 +371 Led is off 0 +374 Led is on 1 +376 Led is off 0 +379 Led is on 1 +381 Led is off 0 +384 Led is on 1 +386 Led is off 0 +389 Led is on 1 +391 Led is off 0 +394 Led is on 1 +396 Led is off 0 +399 Led is on 1 +401 Led is off 0 +404 Led is on 1 +406 Led is off 0 +409 Led is on 1 +411 Led is off 0 +414 Led is on 1 +416 Led is off 0 +419 Led is on 1 +421 Led is off 0 +424 Led is on 1 +426 Led is off 0 +429 Led is on 1 +431 Led is off 0 +434 Led is on 1 +436 Led is off 0 +439 Led is on 1 +441 Led is off 0 +444 Led is on 1 +446 Led is off 0 +449 Led is on 1 +451 Led is off 0 +454 Led is on 1 +456 Led is off 0 +459 Led is on 1 +461 Led is off 0 +464 Led is on 1 +466 Led is off 0 +469 Led is on 1 +471 Led is off 0 +474 Led is on 1 +476 Led is off 0 +479 Led is on 1 +481 Led is off 0 +484 Led is on 1 +486 Led is off 0 +489 Led is on 1 +491 Led is off 0 +494 Led is on 1 +496 Led is off 0 +499 Led is on 1 +501 Led is off 0 +504 Led is on 1 +506 Led is off 0 +509 Led is on 1 +511 Led is off 0 +514 Led is on 1 +516 Led is off 0 +519 Led is on 1 +521 Led is off 0 +524 Led is on 1 +526 Led is off 0 +529 Led is on 1 +531 Led is off 0 +534 Led is on 1 +536 Led is off 0 +539 Led is on 1 +541 Led is off 0 +544 Led is on 1 +546 Led is off 0 +549 Led is on 1 +551 Led is off 0 +554 Led is on 1 +556 Led is off 0 +559 Led is on 1 +561 Led is off 0 +564 Led is on 1 +566 Led is off 0 +569 Led is on 1 +571 Led is off 0 +574 Led is on 1 +576 Led is off 0 +579 Led is on 1 +581 Led is off 0 +584 Led is on 1 +586 Led is off 0 +589 Led is on 1 +591 Led is off 0 +594 Led is on 1 +596 Led is off 0 +599 Led is on 1 diff --git a/servuino/serv.digval b/servuino/serv.digval new file mode 100755 index 0000000..20a2b50 --- /dev/null +++ b/servuino/serv.digval @@ -0,0 +1,601 @@ +# Servuino Status Pin Digital Values Version: 0.1.2 ++ 1 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 2 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 3 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 4 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 5 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 6 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 7 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 8 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 9 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 10 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 11 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 12 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 13 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 14 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 15 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 16 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 17 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 18 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 19 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 20 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 21 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 22 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 23 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 24 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 25 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 26 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 27 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 28 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 29 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 30 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 31 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 32 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 33 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 34 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 35 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 36 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 37 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 38 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 39 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 40 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 41 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 42 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 43 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 44 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 45 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 46 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 47 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 48 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 49 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 50 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 51 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 52 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 53 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 54 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 55 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 56 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 57 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 58 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 59 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 60 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 61 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 62 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 63 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 64 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 65 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 66 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 67 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 68 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 69 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 70 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 71 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 72 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 73 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 74 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 75 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 76 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 77 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 78 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 79 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 80 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 81 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 82 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 83 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 84 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 85 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 86 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 87 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 88 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 89 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 90 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 91 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 92 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 93 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 94 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 95 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 96 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 97 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 98 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 99 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 100 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 101 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 102 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 103 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 104 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 105 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 106 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 107 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 108 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 109 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 110 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 111 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 112 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 113 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 114 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 115 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 116 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 117 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 118 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 119 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 120 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 121 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 122 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 123 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 124 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 125 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 126 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 127 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 128 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 129 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 130 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 131 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 132 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 133 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 134 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 135 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 136 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 137 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 138 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 139 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 140 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 141 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 142 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 143 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 144 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 145 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 146 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 147 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 148 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 149 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 150 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 151 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 152 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 153 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 154 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 155 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 156 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 157 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 158 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 159 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 160 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 161 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 162 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 163 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 164 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 165 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 166 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 167 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 168 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 169 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 170 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 171 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 172 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 173 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 174 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 175 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 176 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 177 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 178 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 179 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 180 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 181 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 182 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 183 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 184 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 185 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 186 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 187 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 188 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 189 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 190 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 191 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 192 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 193 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 194 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 195 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 196 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 197 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 198 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 199 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 200 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 201 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 202 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 203 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 204 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 205 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 206 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 207 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 208 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 209 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 210 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 211 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 212 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 213 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 214 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 215 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 216 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 217 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 218 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 219 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 220 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 221 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 222 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 223 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 224 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 225 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 226 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 227 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 228 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 229 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 230 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 231 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 232 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 233 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 234 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 235 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 236 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 237 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 238 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 239 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 240 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 241 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 242 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 243 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 244 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 245 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 246 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 247 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 248 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 249 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 250 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 251 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 252 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 253 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 254 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 255 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 256 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 257 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 258 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 259 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 260 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 261 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 262 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 263 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 264 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 265 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 266 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 267 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 268 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 269 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 270 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 271 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 272 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 273 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 274 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 275 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 276 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 277 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 278 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 279 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 280 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 281 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 282 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 283 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 284 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 285 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 286 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 287 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 288 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 289 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 290 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 291 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 292 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 293 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 294 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 295 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 296 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 297 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 298 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 299 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 300 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 301 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 302 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 303 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 304 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 305 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 306 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 307 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 308 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 309 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 310 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 311 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 312 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 313 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 314 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 315 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 316 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 317 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 318 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 319 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 320 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 321 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 322 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 323 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 324 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 325 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 326 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 327 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 328 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 329 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 330 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 331 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 332 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 333 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 334 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 335 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 336 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 337 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 338 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 339 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 340 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 341 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 342 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 343 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 344 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 345 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 346 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 347 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 348 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 349 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 350 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 351 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 352 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 353 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 354 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 355 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 356 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 357 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 358 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 359 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 360 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 361 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 362 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 363 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 364 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 365 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 366 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 367 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 368 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 369 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 370 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 371 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 372 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 373 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 374 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 375 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 376 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 377 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 378 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 379 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 380 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 381 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 382 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 383 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 384 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 385 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 386 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 387 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 388 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 389 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 390 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 391 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 392 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 393 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 394 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 395 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 396 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 397 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 398 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 399 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 400 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 401 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 402 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 403 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 404 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 405 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 406 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 407 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 408 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 409 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 410 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 411 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 412 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 413 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 414 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 415 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 416 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 417 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 418 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 419 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 420 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 421 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 422 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 423 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 424 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 425 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 426 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 427 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 428 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 429 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 430 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 431 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 432 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 433 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 434 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 435 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 436 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 437 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 438 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 439 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 440 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 441 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 442 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 443 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 444 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 445 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 446 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 447 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 448 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 449 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 450 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 451 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 452 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 453 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 454 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 455 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 456 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 457 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 458 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 459 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 460 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 461 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 462 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 463 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 464 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 465 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 466 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 467 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 468 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 469 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 470 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 471 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 472 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 473 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 474 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 475 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 476 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 477 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 478 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 479 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 480 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 481 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 482 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 483 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 484 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 485 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 486 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 487 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 488 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 489 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 490 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 491 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 492 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 493 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 494 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 495 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 496 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 497 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 498 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 499 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 500 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 501 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 502 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 503 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 504 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 505 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 506 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 507 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 508 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 509 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 510 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 511 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 512 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 513 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 514 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 515 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 516 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 517 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 518 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 519 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 520 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 521 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 522 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 523 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 524 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 525 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 526 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 527 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 528 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 529 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 530 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 531 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 532 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 533 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 534 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 535 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 536 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 537 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 538 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 539 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 540 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 541 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 542 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 543 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 544 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 545 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 546 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 547 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 548 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 549 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 550 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 551 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 552 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 553 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 554 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 555 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 556 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 557 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 558 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 559 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 560 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 561 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 562 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 563 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 564 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 565 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 566 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 567 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 568 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 569 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 570 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 571 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 572 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 573 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 574 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 575 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 576 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 577 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 578 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 579 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 580 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 581 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 582 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 583 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 584 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 585 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 586 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 587 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 588 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 589 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 590 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 591 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 592 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 593 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 594 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 595 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 596 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 597 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 598 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 599 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 600 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, diff --git a/servuino/serv.error b/servuino/serv.error new file mode 100644 index 0000000..e69de29 diff --git a/servuino/serv.event b/servuino/serv.event new file mode 100755 index 0000000..d18fb43 --- /dev/null +++ b/servuino/serv.event @@ -0,0 +1,604 @@ +# Servuino Event Log Version: 0.1.2 +#// BOARD_TYPE: UNO +#// SKETCH_NAME: blink.ino ++ 1 ? setup ++ 2 ? pinMode pin=13 OUTPUT ++ 3 ? servuinoLoop 1 ++ 4 ? digitalWrite pin=13 value=1 ++ 5 ? delay 1000 ms ++ 6 ? digitalWrite pin=13 value=0 ++ 7 ? delay 1000 ms ++ 8 ? servuinoLoop 2 ++ 9 ? digitalWrite pin=13 value=1 ++ 10 ? delay 1000 ms ++ 11 ? digitalWrite pin=13 value=0 ++ 12 ? delay 1000 ms ++ 13 ? servuinoLoop 3 ++ 14 ? digitalWrite pin=13 value=1 ++ 15 ? delay 1000 ms ++ 16 ? digitalWrite pin=13 value=0 ++ 17 ? delay 1000 ms ++ 18 ? servuinoLoop 4 ++ 19 ? digitalWrite pin=13 value=1 ++ 20 ? delay 1000 ms ++ 21 ? digitalWrite pin=13 value=0 ++ 22 ? delay 1000 ms ++ 23 ? servuinoLoop 5 ++ 24 ? digitalWrite pin=13 value=1 ++ 25 ? delay 1000 ms ++ 26 ? digitalWrite pin=13 value=0 ++ 27 ? delay 1000 ms ++ 28 ? servuinoLoop 6 ++ 29 ? digitalWrite pin=13 value=1 ++ 30 ? delay 1000 ms ++ 31 ? digitalWrite pin=13 value=0 ++ 32 ? delay 1000 ms ++ 33 ? servuinoLoop 7 ++ 34 ? digitalWrite pin=13 value=1 ++ 35 ? delay 1000 ms ++ 36 ? digitalWrite pin=13 value=0 ++ 37 ? delay 1000 ms ++ 38 ? servuinoLoop 8 ++ 39 ? digitalWrite pin=13 value=1 ++ 40 ? delay 1000 ms ++ 41 ? digitalWrite pin=13 value=0 ++ 42 ? delay 1000 ms ++ 43 ? servuinoLoop 9 ++ 44 ? digitalWrite pin=13 value=1 ++ 45 ? delay 1000 ms ++ 46 ? digitalWrite pin=13 value=0 ++ 47 ? delay 1000 ms ++ 48 ? servuinoLoop 10 ++ 49 ? digitalWrite pin=13 value=1 ++ 50 ? delay 1000 ms ++ 51 ? digitalWrite pin=13 value=0 ++ 52 ? delay 1000 ms ++ 53 ? servuinoLoop 11 ++ 54 ? digitalWrite pin=13 value=1 ++ 55 ? delay 1000 ms ++ 56 ? digitalWrite pin=13 value=0 ++ 57 ? delay 1000 ms ++ 58 ? servuinoLoop 12 ++ 59 ? digitalWrite pin=13 value=1 ++ 60 ? delay 1000 ms ++ 61 ? digitalWrite pin=13 value=0 ++ 62 ? delay 1000 ms ++ 63 ? servuinoLoop 13 ++ 64 ? digitalWrite pin=13 value=1 ++ 65 ? delay 1000 ms ++ 66 ? digitalWrite pin=13 value=0 ++ 67 ? delay 1000 ms ++ 68 ? servuinoLoop 14 ++ 69 ? digitalWrite pin=13 value=1 ++ 70 ? delay 1000 ms ++ 71 ? digitalWrite pin=13 value=0 ++ 72 ? delay 1000 ms ++ 73 ? servuinoLoop 15 ++ 74 ? digitalWrite pin=13 value=1 ++ 75 ? delay 1000 ms ++ 76 ? digitalWrite pin=13 value=0 ++ 77 ? delay 1000 ms ++ 78 ? servuinoLoop 16 ++ 79 ? digitalWrite pin=13 value=1 ++ 80 ? delay 1000 ms ++ 81 ? digitalWrite pin=13 value=0 ++ 82 ? delay 1000 ms ++ 83 ? servuinoLoop 17 ++ 84 ? digitalWrite pin=13 value=1 ++ 85 ? delay 1000 ms ++ 86 ? digitalWrite pin=13 value=0 ++ 87 ? delay 1000 ms ++ 88 ? servuinoLoop 18 ++ 89 ? digitalWrite pin=13 value=1 ++ 90 ? delay 1000 ms ++ 91 ? digitalWrite pin=13 value=0 ++ 92 ? delay 1000 ms ++ 93 ? servuinoLoop 19 ++ 94 ? digitalWrite pin=13 value=1 ++ 95 ? delay 1000 ms ++ 96 ? digitalWrite pin=13 value=0 ++ 97 ? delay 1000 ms ++ 98 ? servuinoLoop 20 ++ 99 ? digitalWrite pin=13 value=1 ++ 100 ? delay 1000 ms ++ 101 ? digitalWrite pin=13 value=0 ++ 102 ? delay 1000 ms ++ 103 ? servuinoLoop 21 ++ 104 ? digitalWrite pin=13 value=1 ++ 105 ? delay 1000 ms ++ 106 ? digitalWrite pin=13 value=0 ++ 107 ? delay 1000 ms ++ 108 ? servuinoLoop 22 ++ 109 ? digitalWrite pin=13 value=1 ++ 110 ? delay 1000 ms ++ 111 ? digitalWrite pin=13 value=0 ++ 112 ? delay 1000 ms ++ 113 ? servuinoLoop 23 ++ 114 ? digitalWrite pin=13 value=1 ++ 115 ? delay 1000 ms ++ 116 ? digitalWrite pin=13 value=0 ++ 117 ? delay 1000 ms ++ 118 ? servuinoLoop 24 ++ 119 ? digitalWrite pin=13 value=1 ++ 120 ? delay 1000 ms ++ 121 ? digitalWrite pin=13 value=0 ++ 122 ? delay 1000 ms ++ 123 ? servuinoLoop 25 ++ 124 ? digitalWrite pin=13 value=1 ++ 125 ? delay 1000 ms ++ 126 ? digitalWrite pin=13 value=0 ++ 127 ? delay 1000 ms ++ 128 ? servuinoLoop 26 ++ 129 ? digitalWrite pin=13 value=1 ++ 130 ? delay 1000 ms ++ 131 ? digitalWrite pin=13 value=0 ++ 132 ? delay 1000 ms ++ 133 ? servuinoLoop 27 ++ 134 ? digitalWrite pin=13 value=1 ++ 135 ? delay 1000 ms ++ 136 ? digitalWrite pin=13 value=0 ++ 137 ? delay 1000 ms ++ 138 ? servuinoLoop 28 ++ 139 ? digitalWrite pin=13 value=1 ++ 140 ? delay 1000 ms ++ 141 ? digitalWrite pin=13 value=0 ++ 142 ? delay 1000 ms ++ 143 ? servuinoLoop 29 ++ 144 ? digitalWrite pin=13 value=1 ++ 145 ? delay 1000 ms ++ 146 ? digitalWrite pin=13 value=0 ++ 147 ? delay 1000 ms ++ 148 ? servuinoLoop 30 ++ 149 ? digitalWrite pin=13 value=1 ++ 150 ? delay 1000 ms ++ 151 ? digitalWrite pin=13 value=0 ++ 152 ? delay 1000 ms ++ 153 ? servuinoLoop 31 ++ 154 ? digitalWrite pin=13 value=1 ++ 155 ? delay 1000 ms ++ 156 ? digitalWrite pin=13 value=0 ++ 157 ? delay 1000 ms ++ 158 ? servuinoLoop 32 ++ 159 ? digitalWrite pin=13 value=1 ++ 160 ? delay 1000 ms ++ 161 ? digitalWrite pin=13 value=0 ++ 162 ? delay 1000 ms ++ 163 ? servuinoLoop 33 ++ 164 ? digitalWrite pin=13 value=1 ++ 165 ? delay 1000 ms ++ 166 ? digitalWrite pin=13 value=0 ++ 167 ? delay 1000 ms ++ 168 ? servuinoLoop 34 ++ 169 ? digitalWrite pin=13 value=1 ++ 170 ? delay 1000 ms ++ 171 ? digitalWrite pin=13 value=0 ++ 172 ? delay 1000 ms ++ 173 ? servuinoLoop 35 ++ 174 ? digitalWrite pin=13 value=1 ++ 175 ? delay 1000 ms ++ 176 ? digitalWrite pin=13 value=0 ++ 177 ? delay 1000 ms ++ 178 ? servuinoLoop 36 ++ 179 ? digitalWrite pin=13 value=1 ++ 180 ? delay 1000 ms ++ 181 ? digitalWrite pin=13 value=0 ++ 182 ? delay 1000 ms ++ 183 ? servuinoLoop 37 ++ 184 ? digitalWrite pin=13 value=1 ++ 185 ? delay 1000 ms ++ 186 ? digitalWrite pin=13 value=0 ++ 187 ? delay 1000 ms ++ 188 ? servuinoLoop 38 ++ 189 ? digitalWrite pin=13 value=1 ++ 190 ? delay 1000 ms ++ 191 ? digitalWrite pin=13 value=0 ++ 192 ? delay 1000 ms ++ 193 ? servuinoLoop 39 ++ 194 ? digitalWrite pin=13 value=1 ++ 195 ? delay 1000 ms ++ 196 ? digitalWrite pin=13 value=0 ++ 197 ? delay 1000 ms ++ 198 ? servuinoLoop 40 ++ 199 ? digitalWrite pin=13 value=1 ++ 200 ? delay 1000 ms ++ 201 ? digitalWrite pin=13 value=0 ++ 202 ? delay 1000 ms ++ 203 ? servuinoLoop 41 ++ 204 ? digitalWrite pin=13 value=1 ++ 205 ? delay 1000 ms ++ 206 ? digitalWrite pin=13 value=0 ++ 207 ? delay 1000 ms ++ 208 ? servuinoLoop 42 ++ 209 ? digitalWrite pin=13 value=1 ++ 210 ? delay 1000 ms ++ 211 ? digitalWrite pin=13 value=0 ++ 212 ? delay 1000 ms ++ 213 ? servuinoLoop 43 ++ 214 ? digitalWrite pin=13 value=1 ++ 215 ? delay 1000 ms ++ 216 ? digitalWrite pin=13 value=0 ++ 217 ? delay 1000 ms ++ 218 ? servuinoLoop 44 ++ 219 ? digitalWrite pin=13 value=1 ++ 220 ? delay 1000 ms ++ 221 ? digitalWrite pin=13 value=0 ++ 222 ? delay 1000 ms ++ 223 ? servuinoLoop 45 ++ 224 ? digitalWrite pin=13 value=1 ++ 225 ? delay 1000 ms ++ 226 ? digitalWrite pin=13 value=0 ++ 227 ? delay 1000 ms ++ 228 ? servuinoLoop 46 ++ 229 ? digitalWrite pin=13 value=1 ++ 230 ? delay 1000 ms ++ 231 ? digitalWrite pin=13 value=0 ++ 232 ? delay 1000 ms ++ 233 ? servuinoLoop 47 ++ 234 ? digitalWrite pin=13 value=1 ++ 235 ? delay 1000 ms ++ 236 ? digitalWrite pin=13 value=0 ++ 237 ? delay 1000 ms ++ 238 ? servuinoLoop 48 ++ 239 ? digitalWrite pin=13 value=1 ++ 240 ? delay 1000 ms ++ 241 ? digitalWrite pin=13 value=0 ++ 242 ? delay 1000 ms ++ 243 ? servuinoLoop 49 ++ 244 ? digitalWrite pin=13 value=1 ++ 245 ? delay 1000 ms ++ 246 ? digitalWrite pin=13 value=0 ++ 247 ? delay 1000 ms ++ 248 ? servuinoLoop 50 ++ 249 ? digitalWrite pin=13 value=1 ++ 250 ? delay 1000 ms ++ 251 ? digitalWrite pin=13 value=0 ++ 252 ? delay 1000 ms ++ 253 ? servuinoLoop 51 ++ 254 ? digitalWrite pin=13 value=1 ++ 255 ? delay 1000 ms ++ 256 ? digitalWrite pin=13 value=0 ++ 257 ? delay 1000 ms ++ 258 ? servuinoLoop 52 ++ 259 ? digitalWrite pin=13 value=1 ++ 260 ? delay 1000 ms ++ 261 ? digitalWrite pin=13 value=0 ++ 262 ? delay 1000 ms ++ 263 ? servuinoLoop 53 ++ 264 ? digitalWrite pin=13 value=1 ++ 265 ? delay 1000 ms ++ 266 ? digitalWrite pin=13 value=0 ++ 267 ? delay 1000 ms ++ 268 ? servuinoLoop 54 ++ 269 ? digitalWrite pin=13 value=1 ++ 270 ? delay 1000 ms ++ 271 ? digitalWrite pin=13 value=0 ++ 272 ? delay 1000 ms ++ 273 ? servuinoLoop 55 ++ 274 ? digitalWrite pin=13 value=1 ++ 275 ? delay 1000 ms ++ 276 ? digitalWrite pin=13 value=0 ++ 277 ? delay 1000 ms ++ 278 ? servuinoLoop 56 ++ 279 ? digitalWrite pin=13 value=1 ++ 280 ? delay 1000 ms ++ 281 ? digitalWrite pin=13 value=0 ++ 282 ? delay 1000 ms ++ 283 ? servuinoLoop 57 ++ 284 ? digitalWrite pin=13 value=1 ++ 285 ? delay 1000 ms ++ 286 ? digitalWrite pin=13 value=0 ++ 287 ? delay 1000 ms ++ 288 ? servuinoLoop 58 ++ 289 ? digitalWrite pin=13 value=1 ++ 290 ? delay 1000 ms ++ 291 ? digitalWrite pin=13 value=0 ++ 292 ? delay 1000 ms ++ 293 ? servuinoLoop 59 ++ 294 ? digitalWrite pin=13 value=1 ++ 295 ? delay 1000 ms ++ 296 ? digitalWrite pin=13 value=0 ++ 297 ? delay 1000 ms ++ 298 ? servuinoLoop 60 ++ 299 ? digitalWrite pin=13 value=1 ++ 300 ? delay 1000 ms ++ 301 ? digitalWrite pin=13 value=0 ++ 302 ? delay 1000 ms ++ 303 ? servuinoLoop 61 ++ 304 ? digitalWrite pin=13 value=1 ++ 305 ? delay 1000 ms ++ 306 ? digitalWrite pin=13 value=0 ++ 307 ? delay 1000 ms ++ 308 ? servuinoLoop 62 ++ 309 ? digitalWrite pin=13 value=1 ++ 310 ? delay 1000 ms ++ 311 ? digitalWrite pin=13 value=0 ++ 312 ? delay 1000 ms ++ 313 ? servuinoLoop 63 ++ 314 ? digitalWrite pin=13 value=1 ++ 315 ? delay 1000 ms ++ 316 ? digitalWrite pin=13 value=0 ++ 317 ? delay 1000 ms ++ 318 ? servuinoLoop 64 ++ 319 ? digitalWrite pin=13 value=1 ++ 320 ? delay 1000 ms ++ 321 ? digitalWrite pin=13 value=0 ++ 322 ? delay 1000 ms ++ 323 ? servuinoLoop 65 ++ 324 ? digitalWrite pin=13 value=1 ++ 325 ? delay 1000 ms ++ 326 ? digitalWrite pin=13 value=0 ++ 327 ? delay 1000 ms ++ 328 ? servuinoLoop 66 ++ 329 ? digitalWrite pin=13 value=1 ++ 330 ? delay 1000 ms ++ 331 ? digitalWrite pin=13 value=0 ++ 332 ? delay 1000 ms ++ 333 ? servuinoLoop 67 ++ 334 ? digitalWrite pin=13 value=1 ++ 335 ? delay 1000 ms ++ 336 ? digitalWrite pin=13 value=0 ++ 337 ? delay 1000 ms ++ 338 ? servuinoLoop 68 ++ 339 ? digitalWrite pin=13 value=1 ++ 340 ? delay 1000 ms ++ 341 ? digitalWrite pin=13 value=0 ++ 342 ? delay 1000 ms ++ 343 ? servuinoLoop 69 ++ 344 ? digitalWrite pin=13 value=1 ++ 345 ? delay 1000 ms ++ 346 ? digitalWrite pin=13 value=0 ++ 347 ? delay 1000 ms ++ 348 ? servuinoLoop 70 ++ 349 ? digitalWrite pin=13 value=1 ++ 350 ? delay 1000 ms ++ 351 ? digitalWrite pin=13 value=0 ++ 352 ? delay 1000 ms ++ 353 ? servuinoLoop 71 ++ 354 ? digitalWrite pin=13 value=1 ++ 355 ? delay 1000 ms ++ 356 ? digitalWrite pin=13 value=0 ++ 357 ? delay 1000 ms ++ 358 ? servuinoLoop 72 ++ 359 ? digitalWrite pin=13 value=1 ++ 360 ? delay 1000 ms ++ 361 ? digitalWrite pin=13 value=0 ++ 362 ? delay 1000 ms ++ 363 ? servuinoLoop 73 ++ 364 ? digitalWrite pin=13 value=1 ++ 365 ? delay 1000 ms ++ 366 ? digitalWrite pin=13 value=0 ++ 367 ? delay 1000 ms ++ 368 ? servuinoLoop 74 ++ 369 ? digitalWrite pin=13 value=1 ++ 370 ? delay 1000 ms ++ 371 ? digitalWrite pin=13 value=0 ++ 372 ? delay 1000 ms ++ 373 ? servuinoLoop 75 ++ 374 ? digitalWrite pin=13 value=1 ++ 375 ? delay 1000 ms ++ 376 ? digitalWrite pin=13 value=0 ++ 377 ? delay 1000 ms ++ 378 ? servuinoLoop 76 ++ 379 ? digitalWrite pin=13 value=1 ++ 380 ? delay 1000 ms ++ 381 ? digitalWrite pin=13 value=0 ++ 382 ? delay 1000 ms ++ 383 ? servuinoLoop 77 ++ 384 ? digitalWrite pin=13 value=1 ++ 385 ? delay 1000 ms ++ 386 ? digitalWrite pin=13 value=0 ++ 387 ? delay 1000 ms ++ 388 ? servuinoLoop 78 ++ 389 ? digitalWrite pin=13 value=1 ++ 390 ? delay 1000 ms ++ 391 ? digitalWrite pin=13 value=0 ++ 392 ? delay 1000 ms ++ 393 ? servuinoLoop 79 ++ 394 ? digitalWrite pin=13 value=1 ++ 395 ? delay 1000 ms ++ 396 ? digitalWrite pin=13 value=0 ++ 397 ? delay 1000 ms ++ 398 ? servuinoLoop 80 ++ 399 ? digitalWrite pin=13 value=1 ++ 400 ? delay 1000 ms ++ 401 ? digitalWrite pin=13 value=0 ++ 402 ? delay 1000 ms ++ 403 ? servuinoLoop 81 ++ 404 ? digitalWrite pin=13 value=1 ++ 405 ? delay 1000 ms ++ 406 ? digitalWrite pin=13 value=0 ++ 407 ? delay 1000 ms ++ 408 ? servuinoLoop 82 ++ 409 ? digitalWrite pin=13 value=1 ++ 410 ? delay 1000 ms ++ 411 ? digitalWrite pin=13 value=0 ++ 412 ? delay 1000 ms ++ 413 ? servuinoLoop 83 ++ 414 ? digitalWrite pin=13 value=1 ++ 415 ? delay 1000 ms ++ 416 ? digitalWrite pin=13 value=0 ++ 417 ? delay 1000 ms ++ 418 ? servuinoLoop 84 ++ 419 ? digitalWrite pin=13 value=1 ++ 420 ? delay 1000 ms ++ 421 ? digitalWrite pin=13 value=0 ++ 422 ? delay 1000 ms ++ 423 ? servuinoLoop 85 ++ 424 ? digitalWrite pin=13 value=1 ++ 425 ? delay 1000 ms ++ 426 ? digitalWrite pin=13 value=0 ++ 427 ? delay 1000 ms ++ 428 ? servuinoLoop 86 ++ 429 ? digitalWrite pin=13 value=1 ++ 430 ? delay 1000 ms ++ 431 ? digitalWrite pin=13 value=0 ++ 432 ? delay 1000 ms ++ 433 ? servuinoLoop 87 ++ 434 ? digitalWrite pin=13 value=1 ++ 435 ? delay 1000 ms ++ 436 ? digitalWrite pin=13 value=0 ++ 437 ? delay 1000 ms ++ 438 ? servuinoLoop 88 ++ 439 ? digitalWrite pin=13 value=1 ++ 440 ? delay 1000 ms ++ 441 ? digitalWrite pin=13 value=0 ++ 442 ? delay 1000 ms ++ 443 ? servuinoLoop 89 ++ 444 ? digitalWrite pin=13 value=1 ++ 445 ? delay 1000 ms ++ 446 ? digitalWrite pin=13 value=0 ++ 447 ? delay 1000 ms ++ 448 ? servuinoLoop 90 ++ 449 ? digitalWrite pin=13 value=1 ++ 450 ? delay 1000 ms ++ 451 ? digitalWrite pin=13 value=0 ++ 452 ? delay 1000 ms ++ 453 ? servuinoLoop 91 ++ 454 ? digitalWrite pin=13 value=1 ++ 455 ? delay 1000 ms ++ 456 ? digitalWrite pin=13 value=0 ++ 457 ? delay 1000 ms ++ 458 ? servuinoLoop 92 ++ 459 ? digitalWrite pin=13 value=1 ++ 460 ? delay 1000 ms ++ 461 ? digitalWrite pin=13 value=0 ++ 462 ? delay 1000 ms ++ 463 ? servuinoLoop 93 ++ 464 ? digitalWrite pin=13 value=1 ++ 465 ? delay 1000 ms ++ 466 ? digitalWrite pin=13 value=0 ++ 467 ? delay 1000 ms ++ 468 ? servuinoLoop 94 ++ 469 ? digitalWrite pin=13 value=1 ++ 470 ? delay 1000 ms ++ 471 ? digitalWrite pin=13 value=0 ++ 472 ? delay 1000 ms ++ 473 ? servuinoLoop 95 ++ 474 ? digitalWrite pin=13 value=1 ++ 475 ? delay 1000 ms ++ 476 ? digitalWrite pin=13 value=0 ++ 477 ? delay 1000 ms ++ 478 ? servuinoLoop 96 ++ 479 ? digitalWrite pin=13 value=1 ++ 480 ? delay 1000 ms ++ 481 ? digitalWrite pin=13 value=0 ++ 482 ? delay 1000 ms ++ 483 ? servuinoLoop 97 ++ 484 ? digitalWrite pin=13 value=1 ++ 485 ? delay 1000 ms ++ 486 ? digitalWrite pin=13 value=0 ++ 487 ? delay 1000 ms ++ 488 ? servuinoLoop 98 ++ 489 ? digitalWrite pin=13 value=1 ++ 490 ? delay 1000 ms ++ 491 ? digitalWrite pin=13 value=0 ++ 492 ? delay 1000 ms ++ 493 ? servuinoLoop 99 ++ 494 ? digitalWrite pin=13 value=1 ++ 495 ? delay 1000 ms ++ 496 ? digitalWrite pin=13 value=0 ++ 497 ? delay 1000 ms ++ 498 ? servuinoLoop 100 ++ 499 ? digitalWrite pin=13 value=1 ++ 500 ? delay 1000 ms ++ 501 ? digitalWrite pin=13 value=0 ++ 502 ? delay 1000 ms ++ 503 ? servuinoLoop 101 ++ 504 ? digitalWrite pin=13 value=1 ++ 505 ? delay 1000 ms ++ 506 ? digitalWrite pin=13 value=0 ++ 507 ? delay 1000 ms ++ 508 ? servuinoLoop 102 ++ 509 ? digitalWrite pin=13 value=1 ++ 510 ? delay 1000 ms ++ 511 ? digitalWrite pin=13 value=0 ++ 512 ? delay 1000 ms ++ 513 ? servuinoLoop 103 ++ 514 ? digitalWrite pin=13 value=1 ++ 515 ? delay 1000 ms ++ 516 ? digitalWrite pin=13 value=0 ++ 517 ? delay 1000 ms ++ 518 ? servuinoLoop 104 ++ 519 ? digitalWrite pin=13 value=1 ++ 520 ? delay 1000 ms ++ 521 ? digitalWrite pin=13 value=0 ++ 522 ? delay 1000 ms ++ 523 ? servuinoLoop 105 ++ 524 ? digitalWrite pin=13 value=1 ++ 525 ? delay 1000 ms ++ 526 ? digitalWrite pin=13 value=0 ++ 527 ? delay 1000 ms ++ 528 ? servuinoLoop 106 ++ 529 ? digitalWrite pin=13 value=1 ++ 530 ? delay 1000 ms ++ 531 ? digitalWrite pin=13 value=0 ++ 532 ? delay 1000 ms ++ 533 ? servuinoLoop 107 ++ 534 ? digitalWrite pin=13 value=1 ++ 535 ? delay 1000 ms ++ 536 ? digitalWrite pin=13 value=0 ++ 537 ? delay 1000 ms ++ 538 ? servuinoLoop 108 ++ 539 ? digitalWrite pin=13 value=1 ++ 540 ? delay 1000 ms ++ 541 ? digitalWrite pin=13 value=0 ++ 542 ? delay 1000 ms ++ 543 ? servuinoLoop 109 ++ 544 ? digitalWrite pin=13 value=1 ++ 545 ? delay 1000 ms ++ 546 ? digitalWrite pin=13 value=0 ++ 547 ? delay 1000 ms ++ 548 ? servuinoLoop 110 ++ 549 ? digitalWrite pin=13 value=1 ++ 550 ? delay 1000 ms ++ 551 ? digitalWrite pin=13 value=0 ++ 552 ? delay 1000 ms ++ 553 ? servuinoLoop 111 ++ 554 ? digitalWrite pin=13 value=1 ++ 555 ? delay 1000 ms ++ 556 ? digitalWrite pin=13 value=0 ++ 557 ? delay 1000 ms ++ 558 ? servuinoLoop 112 ++ 559 ? digitalWrite pin=13 value=1 ++ 560 ? delay 1000 ms ++ 561 ? digitalWrite pin=13 value=0 ++ 562 ? delay 1000 ms ++ 563 ? servuinoLoop 113 ++ 564 ? digitalWrite pin=13 value=1 ++ 565 ? delay 1000 ms ++ 566 ? digitalWrite pin=13 value=0 ++ 567 ? delay 1000 ms ++ 568 ? servuinoLoop 114 ++ 569 ? digitalWrite pin=13 value=1 ++ 570 ? delay 1000 ms ++ 571 ? digitalWrite pin=13 value=0 ++ 572 ? delay 1000 ms ++ 573 ? servuinoLoop 115 ++ 574 ? digitalWrite pin=13 value=1 ++ 575 ? delay 1000 ms ++ 576 ? digitalWrite pin=13 value=0 ++ 577 ? delay 1000 ms ++ 578 ? servuinoLoop 116 ++ 579 ? digitalWrite pin=13 value=1 ++ 580 ? delay 1000 ms ++ 581 ? digitalWrite pin=13 value=0 ++ 582 ? delay 1000 ms ++ 583 ? servuinoLoop 117 ++ 584 ? digitalWrite pin=13 value=1 ++ 585 ? delay 1000 ms ++ 586 ? digitalWrite pin=13 value=0 ++ 587 ? delay 1000 ms ++ 588 ? servuinoLoop 118 ++ 589 ? digitalWrite pin=13 value=1 ++ 590 ? delay 1000 ms ++ 591 ? digitalWrite pin=13 value=0 ++ 592 ? delay 1000 ms ++ 593 ? servuinoLoop 119 ++ 594 ? digitalWrite pin=13 value=1 ++ 595 ? delay 1000 ms ++ 596 ? digitalWrite pin=13 value=0 ++ 597 ? delay 1000 ms ++ 598 ? servuinoLoop 120 ++ 599 ? digitalWrite pin=13 value=1 ++ 600 ? delay 1000 ms +# ENDOFSIM diff --git a/servuino/serv.pinmod b/servuino/serv.pinmod new file mode 100755 index 0000000..b3a8520 --- /dev/null +++ b/servuino/serv.pinmod @@ -0,0 +1,601 @@ +# Servuino Status Pin Mode Version: 0.1.2 ++ 1 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 2 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 3 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 4 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 5 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 6 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 7 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 8 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 9 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 10 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 11 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 12 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 13 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 14 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 15 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 16 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 17 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 18 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 19 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 20 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 21 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 22 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 23 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 24 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 25 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 26 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 27 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 28 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 29 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 30 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 31 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 32 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 33 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 34 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 35 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 36 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 37 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 38 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 39 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 40 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 41 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 42 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 43 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 44 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 45 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 46 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 47 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 48 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 49 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 50 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 51 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 52 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 53 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 54 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 55 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 56 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 57 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 58 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 59 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 60 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 61 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 62 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 63 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 64 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 65 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 66 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 67 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 68 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 69 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 70 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 71 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 72 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 73 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 74 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 75 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 76 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 77 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 78 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 79 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 80 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 81 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 82 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 83 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 84 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 85 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 86 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 87 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 88 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 89 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 90 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 91 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 92 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 93 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 94 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 95 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 96 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 97 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 98 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 99 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 100 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 101 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 102 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 103 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 104 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 105 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 106 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 107 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 108 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 109 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 110 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 111 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 112 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 113 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 114 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 115 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 116 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 117 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 118 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 119 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 120 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 121 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 122 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 123 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 124 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 125 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 126 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 127 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 128 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 129 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 130 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 131 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 132 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 133 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 134 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 135 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 136 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 137 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 138 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 139 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 140 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 141 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 142 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 143 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 144 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 145 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 146 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 147 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 148 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 149 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 150 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 151 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 152 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 153 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 154 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 155 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 156 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 157 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 158 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 159 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 160 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 161 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 162 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 163 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 164 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 165 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 166 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 167 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 168 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 169 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 170 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 171 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 172 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 173 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 174 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 175 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 176 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 177 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 178 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 179 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 180 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 181 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 182 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 183 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 184 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 185 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 186 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 187 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 188 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 189 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 190 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 191 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 192 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 193 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 194 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 195 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 196 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 197 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 198 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 199 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 200 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 201 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 202 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 203 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 204 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 205 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 206 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 207 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 208 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 209 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 210 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 211 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 212 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 213 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 214 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 215 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 216 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 217 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 218 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 219 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 220 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 221 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 222 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 223 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 224 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 225 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 226 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 227 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 228 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 229 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 230 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 231 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 232 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 233 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 234 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 235 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 236 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 237 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 238 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 239 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 240 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 241 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 242 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 243 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 244 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 245 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 246 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 247 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 248 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 249 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 250 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 251 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 252 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 253 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 254 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 255 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 256 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 257 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 258 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 259 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 260 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 261 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 262 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 263 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 264 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 265 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 266 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 267 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 268 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 269 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 270 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 271 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 272 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 273 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 274 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 275 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 276 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 277 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 278 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 279 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 280 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 281 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 282 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 283 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 284 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 285 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 286 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 287 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 288 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 289 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 290 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 291 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 292 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 293 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 294 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 295 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 296 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 297 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 298 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 299 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 300 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 301 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 302 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 303 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 304 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 305 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 306 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 307 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 308 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 309 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 310 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 311 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 312 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 313 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 314 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 315 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 316 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 317 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 318 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 319 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 320 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 321 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 322 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 323 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 324 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 325 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 326 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 327 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 328 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 329 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 330 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 331 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 332 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 333 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 334 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 335 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 336 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 337 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 338 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 339 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 340 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 341 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 342 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 343 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 344 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 345 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 346 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 347 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 348 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 349 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 350 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 351 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 352 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 353 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 354 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 355 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 356 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 357 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 358 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 359 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 360 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 361 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 362 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 363 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 364 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 365 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 366 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 367 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 368 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 369 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 370 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 371 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 372 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 373 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 374 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 375 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 376 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 377 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 378 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 379 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 380 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 381 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 382 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 383 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 384 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 385 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 386 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 387 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 388 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 389 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 390 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 391 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 392 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 393 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 394 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 395 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 396 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 397 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 398 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 399 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 400 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 401 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 402 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 403 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 404 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 405 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 406 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 407 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 408 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 409 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 410 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 411 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 412 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 413 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 414 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 415 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 416 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 417 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 418 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 419 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 420 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 421 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 422 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 423 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 424 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 425 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 426 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 427 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 428 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 429 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 430 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 431 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 432 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 433 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 434 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 435 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 436 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 437 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 438 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 439 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 440 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 441 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 442 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 443 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 444 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 445 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 446 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 447 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 448 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 449 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 450 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 451 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 452 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 453 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 454 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 455 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 456 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 457 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 458 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 459 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 460 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 461 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 462 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 463 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 464 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 465 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 466 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 467 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 468 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 469 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 470 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 471 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 472 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 473 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 474 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 475 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 476 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 477 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 478 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 479 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 480 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 481 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 482 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 483 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 484 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 485 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 486 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 487 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 488 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 489 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 490 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 491 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 492 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 493 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 494 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 495 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 496 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 497 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 498 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 499 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 500 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 501 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 502 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 503 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 504 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 505 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 506 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 507 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 508 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 509 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 510 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 511 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 512 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 513 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 514 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 515 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 516 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 517 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 518 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 519 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 520 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 521 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 522 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 523 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 524 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 525 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 526 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 527 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 528 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 529 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 530 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 531 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 532 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 533 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 534 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 535 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 536 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 537 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 538 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 539 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 540 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 541 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 542 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 543 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 544 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 545 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 546 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 547 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 548 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 549 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 550 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 551 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 552 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 553 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 554 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 555 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 556 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 557 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 558 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 559 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 560 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 561 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 562 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 563 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 564 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 565 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 566 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 567 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 568 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 569 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 570 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 571 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 572 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 573 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 574 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 575 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 576 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 577 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 578 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 579 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 580 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 581 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 582 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 583 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 584 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 585 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 586 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 587 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 588 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 589 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 590 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 591 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 592 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 593 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 594 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 595 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 596 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 597 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 598 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 599 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, ++ 600 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, diff --git a/servuino/serv.pinrw b/servuino/serv.pinrw new file mode 100755 index 0000000..fe2e846 --- /dev/null +++ b/servuino/serv.pinrw @@ -0,0 +1,601 @@ +# Servuino Status Pin RW Version: 0.1.2 ++ 1 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 2 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 3 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 4 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 5 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 6 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 7 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 8 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 9 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 10 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 11 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 12 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 13 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 14 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 15 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 16 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 17 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 18 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 19 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 20 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 21 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 22 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 23 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 24 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 25 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 26 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 27 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 28 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 29 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 30 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 31 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 32 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 33 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 34 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 35 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 36 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 37 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 38 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 39 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 40 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 41 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 42 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 43 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 44 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 45 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 46 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 47 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 48 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 49 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 50 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 51 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 52 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 53 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 54 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 55 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 56 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 57 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 58 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 59 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 60 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 61 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 62 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 63 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 64 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 65 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 66 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 67 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 68 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 69 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 70 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 71 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 72 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 73 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 74 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 75 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 76 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 77 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 78 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 79 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 80 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 81 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 82 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 83 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 84 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 85 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 86 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 87 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 88 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 89 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 90 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 91 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 92 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 93 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 94 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 95 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 96 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 97 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 98 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 99 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 100 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 101 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 102 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 103 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 104 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 105 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 106 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 107 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 108 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 109 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 110 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 111 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 112 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 113 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 114 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 115 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 116 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 117 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 118 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 119 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 120 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 121 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 122 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 123 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 124 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 125 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 126 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 127 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 128 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 129 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 130 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 131 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 132 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 133 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 134 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 135 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 136 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 137 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 138 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 139 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 140 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 141 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 142 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 143 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 144 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 145 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 146 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 147 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 148 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 149 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 150 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 151 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 152 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 153 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 154 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 155 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 156 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 157 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 158 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 159 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 160 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 161 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 162 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 163 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 164 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 165 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 166 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 167 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 168 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 169 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 170 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 171 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 172 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 173 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 174 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 175 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 176 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 177 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 178 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 179 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 180 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 181 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 182 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 183 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 184 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 185 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 186 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 187 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 188 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 189 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 190 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 191 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 192 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 193 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 194 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 195 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 196 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 197 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 198 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 199 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 200 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 201 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 202 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 203 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 204 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 205 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 206 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 207 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 208 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 209 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 210 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 211 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 212 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 213 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 214 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 215 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 216 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 217 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 218 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 219 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 220 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 221 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 222 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 223 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 224 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 225 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 226 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 227 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 228 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 229 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 230 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 231 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 232 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 233 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 234 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 235 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 236 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 237 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 238 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 239 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 240 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 241 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 242 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 243 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 244 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 245 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 246 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 247 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 248 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 249 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 250 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 251 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 252 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 253 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 254 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 255 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 256 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 257 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 258 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 259 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 260 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 261 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 262 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 263 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 264 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 265 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 266 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 267 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 268 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 269 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 270 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 271 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 272 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 273 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 274 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 275 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 276 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 277 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 278 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 279 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 280 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 281 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 282 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 283 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 284 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 285 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 286 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 287 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 288 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 289 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 290 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 291 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 292 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 293 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 294 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 295 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 296 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 297 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 298 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 299 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 300 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 301 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 302 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 303 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 304 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 305 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 306 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 307 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 308 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 309 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 310 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 311 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 312 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 313 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 314 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 315 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 316 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 317 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 318 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 319 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 320 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 321 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 322 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 323 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 324 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 325 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 326 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 327 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 328 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 329 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 330 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 331 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 332 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 333 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 334 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 335 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 336 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 337 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 338 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 339 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 340 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 341 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 342 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 343 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 344 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 345 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 346 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 347 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 348 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 349 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 350 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 351 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 352 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 353 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 354 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 355 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 356 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 357 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 358 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 359 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 360 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 361 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 362 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 363 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 364 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 365 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 366 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 367 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 368 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 369 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 370 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 371 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 372 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 373 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 374 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 375 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 376 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 377 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 378 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 379 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 380 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 381 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 382 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 383 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 384 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 385 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 386 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 387 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 388 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 389 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 390 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 391 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 392 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 393 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 394 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 395 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 396 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 397 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 398 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 399 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 400 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 401 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 402 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 403 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 404 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 405 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 406 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 407 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 408 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 409 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 410 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 411 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 412 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 413 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 414 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 415 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 416 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 417 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 418 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 419 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 420 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 421 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 422 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 423 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 424 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 425 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 426 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 427 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 428 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 429 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 430 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 431 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 432 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 433 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 434 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 435 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 436 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 437 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 438 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 439 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 440 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 441 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 442 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 443 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 444 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 445 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 446 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 447 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 448 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 449 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 450 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 451 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 452 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 453 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 454 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 455 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 456 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 457 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 458 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 459 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 460 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 461 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 462 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 463 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 464 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 465 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 466 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 467 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 468 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 469 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 470 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 471 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 472 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 473 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 474 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 475 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 476 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 477 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 478 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 479 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 480 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 481 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 482 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 483 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 484 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 485 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 486 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 487 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 488 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 489 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 490 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 491 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 492 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 493 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 494 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 495 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 496 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 497 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 498 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 499 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 500 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 501 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 502 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 503 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 504 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 505 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 506 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 507 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 508 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 509 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 510 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 511 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 512 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 513 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 514 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 515 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 516 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 517 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 518 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 519 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 520 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 521 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 522 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 523 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 524 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 525 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 526 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 527 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 528 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 529 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 530 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 531 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 532 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 533 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 534 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 535 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 536 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 537 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 538 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 539 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 540 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 541 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 542 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 543 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 544 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 545 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 546 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 547 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 548 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 549 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 550 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 551 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 552 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 553 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 554 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 555 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 556 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 557 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 558 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 559 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 560 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 561 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 562 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 563 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 564 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 565 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 566 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 567 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 568 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 569 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 570 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 571 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 572 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 573 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 574 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 575 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 576 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 577 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 578 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 579 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 580 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 581 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 582 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 583 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 584 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 585 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 586 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 587 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 588 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 589 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 590 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 591 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 592 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 593 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 594 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 595 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 596 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 597 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 598 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 599 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, ++ 600 ? 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/servuino/serv.serial b/servuino/serv.serial new file mode 100755 index 0000000..07212dc --- /dev/null +++ b/servuino/serv.serial @@ -0,0 +1 @@ +# Servuino Serial Simulation Data Version: 0.1.2 diff --git a/servuino/serv.time b/servuino/serv.time new file mode 100755 index 0000000..501fdf8 --- /dev/null +++ b/servuino/serv.time @@ -0,0 +1,240 @@ +# Servuino Time Delay (microseconds) Version: 0.1.2 ++ 5 1000000 ++ 7 1000000 ++ 10 1000000 ++ 12 1000000 ++ 15 1000000 ++ 17 1000000 ++ 20 1000000 ++ 22 1000000 ++ 25 1000000 ++ 27 1000000 ++ 30 1000000 ++ 32 1000000 ++ 35 1000000 ++ 37 1000000 ++ 40 1000000 ++ 42 1000000 ++ 45 1000000 ++ 47 1000000 ++ 50 1000000 ++ 52 1000000 ++ 55 1000000 ++ 57 1000000 ++ 60 1000000 ++ 62 1000000 ++ 65 1000000 ++ 67 1000000 ++ 70 1000000 ++ 72 1000000 ++ 75 1000000 ++ 77 1000000 ++ 80 1000000 ++ 82 1000000 ++ 85 1000000 ++ 87 1000000 ++ 90 1000000 ++ 92 1000000 ++ 95 1000000 ++ 97 1000000 ++ 100 1000000 ++ 102 1000000 ++ 105 1000000 ++ 107 1000000 ++ 110 1000000 ++ 112 1000000 ++ 115 1000000 ++ 117 1000000 ++ 120 1000000 ++ 122 1000000 ++ 125 1000000 ++ 127 1000000 ++ 130 1000000 ++ 132 1000000 ++ 135 1000000 ++ 137 1000000 ++ 140 1000000 ++ 142 1000000 ++ 145 1000000 ++ 147 1000000 ++ 150 1000000 ++ 152 1000000 ++ 155 1000000 ++ 157 1000000 ++ 160 1000000 ++ 162 1000000 ++ 165 1000000 ++ 167 1000000 ++ 170 1000000 ++ 172 1000000 ++ 175 1000000 ++ 177 1000000 ++ 180 1000000 ++ 182 1000000 ++ 185 1000000 ++ 187 1000000 ++ 190 1000000 ++ 192 1000000 ++ 195 1000000 ++ 197 1000000 ++ 200 1000000 ++ 202 1000000 ++ 205 1000000 ++ 207 1000000 ++ 210 1000000 ++ 212 1000000 ++ 215 1000000 ++ 217 1000000 ++ 220 1000000 ++ 222 1000000 ++ 225 1000000 ++ 227 1000000 ++ 230 1000000 ++ 232 1000000 ++ 235 1000000 ++ 237 1000000 ++ 240 1000000 ++ 242 1000000 ++ 245 1000000 ++ 247 1000000 ++ 250 1000000 ++ 252 1000000 ++ 255 1000000 ++ 257 1000000 ++ 260 1000000 ++ 262 1000000 ++ 265 1000000 ++ 267 1000000 ++ 270 1000000 ++ 272 1000000 ++ 275 1000000 ++ 277 1000000 ++ 280 1000000 ++ 282 1000000 ++ 285 1000000 ++ 287 1000000 ++ 290 1000000 ++ 292 1000000 ++ 295 1000000 ++ 297 1000000 ++ 300 1000000 ++ 302 1000000 ++ 305 1000000 ++ 307 1000000 ++ 310 1000000 ++ 312 1000000 ++ 315 1000000 ++ 317 1000000 ++ 320 1000000 ++ 322 1000000 ++ 325 1000000 ++ 327 1000000 ++ 330 1000000 ++ 332 1000000 ++ 335 1000000 ++ 337 1000000 ++ 340 1000000 ++ 342 1000000 ++ 345 1000000 ++ 347 1000000 ++ 350 1000000 ++ 352 1000000 ++ 355 1000000 ++ 357 1000000 ++ 360 1000000 ++ 362 1000000 ++ 365 1000000 ++ 367 1000000 ++ 370 1000000 ++ 372 1000000 ++ 375 1000000 ++ 377 1000000 ++ 380 1000000 ++ 382 1000000 ++ 385 1000000 ++ 387 1000000 ++ 390 1000000 ++ 392 1000000 ++ 395 1000000 ++ 397 1000000 ++ 400 1000000 ++ 402 1000000 ++ 405 1000000 ++ 407 1000000 ++ 410 1000000 ++ 412 1000000 ++ 415 1000000 ++ 417 1000000 ++ 420 1000000 ++ 422 1000000 ++ 425 1000000 ++ 427 1000000 ++ 430 1000000 ++ 432 1000000 ++ 435 1000000 ++ 437 1000000 ++ 440 1000000 ++ 442 1000000 ++ 445 1000000 ++ 447 1000000 ++ 450 1000000 ++ 452 1000000 ++ 455 1000000 ++ 457 1000000 ++ 460 1000000 ++ 462 1000000 ++ 465 1000000 ++ 467 1000000 ++ 470 1000000 ++ 472 1000000 ++ 475 1000000 ++ 477 1000000 ++ 480 1000000 ++ 482 1000000 ++ 485 1000000 ++ 487 1000000 ++ 490 1000000 ++ 492 1000000 ++ 495 1000000 ++ 497 1000000 ++ 500 1000000 ++ 502 1000000 ++ 505 1000000 ++ 507 1000000 ++ 510 1000000 ++ 512 1000000 ++ 515 1000000 ++ 517 1000000 ++ 520 1000000 ++ 522 1000000 ++ 525 1000000 ++ 527 1000000 ++ 530 1000000 ++ 532 1000000 ++ 535 1000000 ++ 537 1000000 ++ 540 1000000 ++ 542 1000000 ++ 545 1000000 ++ 547 1000000 ++ 550 1000000 ++ 552 1000000 ++ 555 1000000 ++ 557 1000000 ++ 560 1000000 ++ 562 1000000 ++ 565 1000000 ++ 567 1000000 ++ 570 1000000 ++ 572 1000000 ++ 575 1000000 ++ 577 1000000 ++ 580 1000000 ++ 582 1000000 ++ 585 1000000 ++ 587 1000000 ++ 590 1000000 ++ 592 1000000 ++ 595 1000000 ++ 597 1000000 ++ 600 1000000 diff --git a/servuino/servuino b/servuino/servuino new file mode 100755 index 0000000..a57c1cd Binary files /dev/null and b/servuino/servuino differ diff --git a/servuino/servuino.c b/servuino/servuino.c new file mode 100755 index 0000000..8cd9bb3 --- /dev/null +++ b/servuino/servuino.c @@ -0,0 +1,234 @@ +/* Servuino is a Arduino Simulator Engine + Copyright (C) 2012 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +using namespace std; +#include "common.h" + +//=================================== +// Simulator status +int x_pinMode[MAX_TOTAL_PINS]; +int x_pinScenario[MAX_TOTAL_PINS][SCEN_MAX]; +int x_pinDigValue[MAX_TOTAL_PINS]; +int x_pinAnaValue[MAX_TOTAL_PINS]; +int x_pinRW[MAX_TOTAL_PINS]; + +int g_attachedPin[MAX_TOTAL_PINS]; +int g_interruptType[MAX_TOTAL_PINS]; + +int g_curStep = 0; +int g_curLoop = 0; +int g_nDigPins = 14; +int g_nAnaPins = 6; +int g_nTotPins = MAX_TOTAL_PINS; + +int g_doInterrupt = S_NO; +int g_serialMode = S_OFF; + +char g_custText[120][120][100]; +//=================================== + + +char sketch[120],g_temp[120]; +int g_simulationLength = 111; +char g_version[40]; + + + +void stepCommand(); + +int row,col; +int graph_x = 10,graph_y = 10; + +char appName[120]; + + + + +int anaPinPos[MAX_PIN_ANALOG_MEGA]; +int c_analogPin[MAX_PIN_ANALOG_MEGA]; +int s_analogPin[SCEN_MAX][MAX_PIN_ANALOG_MEGA]; +int s_analogStep[SCEN_MAX][MAX_PIN_ANALOG_MEGA]; + +int digPinPos[MAX_PIN_DIGITAL_MEGA]; +int c_digitalPin[MAX_PIN_DIGITAL_MEGA]; +int s_digitalPin[SCEN_MAX][MAX_PIN_DIGITAL_MEGA]; +int s_digitalStep[SCEN_MAX][MAX_PIN_DIGITAL_MEGA]; +int digitalMode[MAX_PIN_DIGITAL_MEGA]; + +int s_interrupt[SCEN_MAX][MAX_PIN_IR_MEGA]; +int s_interruptStep[SCEN_MAX]; +int interruptMode[MAX_PIN_IR_MEGA]; + +char textPinModeIn[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textPinModeOut[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textDigitalWriteLow[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textDigitalWriteHigh[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textAnalogWrite[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textAnalogRead[MAX_PIN_ANALOG_MEGA][SIZE_ROW]; +char textDigitalRead[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; + +int stepAtReadD[MAX_READ]; +int stepAtReadA[MAX_READ]; +int valueAtReadD[MAX_READ]; +int valueAtReadA[MAX_READ]; +int pinAtReadD[MAX_READ]; +int pinAtReadA[MAX_READ]; + +int paceMaker = 0; +int baud = 0; +int error = 0; +int logging = S_YES; +int serialSize = 1; +int serialMode = S_OFF; +int scenAnalog = 0; +int scenDigital = 0; +int scenInterrupt = 0; + +int conn; + +int confLogLev = 0; + +int g_nloop = 0; +int g_scenSource = 0; +int g_pinType = 0; +int g_pinNo = 0; +int g_pinValue = 0; +int g_pinStep = 0; +int g_action = 0; + +int g_allowInterrupt = S_YES; +int g_ongoingInterrupt = S_NO; +int g_interpolation = S_NO; + +int g_row_setup = 0; +int g_row_loop = 0; + + +int nCodeString = 0; + + +FILE *s_log,*e_log,*c_log,*a_log,*u_log,*x_log,*t_log,*r_log; +FILE *f_event,*f_cust,*f_serial,*f_time,*f_ino; +FILE *f_pinmod,*f_digval,*f_anaval,*f_pinrw; + +#include "arduino.h" +#include "code.h" +#include "common_lib.c" +#include "servuino.h" +#include "servuino_lib.c" +#include "arduino_lib.c" +#include "sketch.ino" +void setup(); +void loop(); + +//==================================== +void runEncoding(int n) +//==================================== +{ + int i; + + saveScenarioExpanded(); + + g_curStep = 0; + ino(g_row_setup); + servuinoFunc(S_SETUP,0,0,NULL,0); + setup(); + + for(i=0;i. +*/ + + +//==================================== +void ino(int x) +//==================================== +{ + if(x<1) + { + errorLog("Source Ino rownumber zero",x); + } + else + { + fprintf(f_ino,"%d %d\n",g_curStep+1,x); + } +} + +//==================================== +void clearRW() +//==================================== +{ + int i; + for(i=0;i 512) + errorLog("EEPROM write: address > 512: ",pin); + if(pin < 0) + errorLog("EEPROM write: address < 0: ",pin); + if(value > 255) + errorLog("EEPROM write: value > 255: ",value); + if(value < 0) + errorLog("EEPROM write: value < 0: ",value); + res = 0; + } + if(event == S_EEPROM_READ) + { + sprintf(eventText,"EEPROM.read address=%d value=%d",pin,value); + if(pin > 512) + errorLog("EEPROM read: address > 512: ",pin); + if(pin < 0) + errorLog("EEPROM read: address < 0: ",pin); + if(value > 255) + errorLog("EEPROM read: value > 255: ",value); + if(value < 0) + errorLog("EEPROM read: value < 0: ",value); + res = 0; + } + + + logEvent(eventText); + logCust(custText); + writeStatus(); + + if(g_curStep == g_simulationLength) stopEncoding(); + + if(g_doInterrupt == S_YES && g_ongoingInterrupt == S_NO)interruptNow(); + + return(res); +} +//==================================== +void writeRegister(int digital, int reg, int port, int value) +//==================================== +{ + + //------------------------------------------------------- + if(reg == R_PORT && digital == 1) // 0=LOW 1=HIGH + { + if(port <= 7 && port >= 0)bitWrite(&PORTD,port,value); + if(port >= 8 && port <= 15)bitWrite(&PORTB,port-8,value); + if(port >= 16 && port <= 23)bitWrite(&PORTE,port-16,value); + if(port >= 24 && port <= 31)bitWrite(&PORTF,port-24,value); + if(port >= 32 && port <= 39)bitWrite(&PORTK,port-32,value); + if(port >= 40 && port <= 47)bitWrite(&PORTL,port-40,value); + if(port >= 48 && port <= 55)bitWrite(&PORTM,port-48,value); + } + if(reg == R_PORT && digital == 0) + { + if(port <= 7 && port >= 0)bitWrite(&PORTC,port,value); + if(port <= 15 && port >= 8)bitWrite(&PORTN,port-8,value); + } + //------------------------------------------------------- + if(reg == R_DDR && digital == 1) // 0=INPUT 1=OUTPUT + { + if(port <= 7 && port >= 0)bitWrite(&DDRD,port,value); + if(port >= 8 && port <= 13)bitWrite(&DDRB,port-8,value); + if(port >= 16 && port <= 23)bitWrite(&DDRE,port-16,value); + if(port >= 24 && port <= 31)bitWrite(&DDRF,port-24,value); + if(port >= 32 && port <= 39)bitWrite(&DDRK,port-32,value); + if(port >= 40 && port <= 47)bitWrite(&DDRL,port-40,value); + if(port >= 48 && port <= 55)bitWrite(&DDRM,port-48,value); + } + if(reg == R_DDR && digital == 0) + { + if(port <= 7 && port >= 0)bitWrite(&DDRC,port,value); + if(port <= 15 && port >= 8)bitWrite(&DDRN,port-8,value); + } + //------------------------------------------------------- + if(reg == R_PIN && digital == 1) // 0=INPUT 1=OUTPUT + { + if(port <= 7 && port >= 0)bitWrite(&PIND,port,value); + if(port >= 8 && port <= 13)bitWrite(&PINB,port-8,value); + if(port >= 16 && port <= 23)bitWrite(&PINE,port-16,value); + if(port >= 24 && port <= 31)bitWrite(&PINF,port-24,value); + if(port >= 32 && port <= 39)bitWrite(&PINK,port-32,value); + if(port >= 40 && port <= 47)bitWrite(&PINL,port-40,value); + if(port >= 48 && port <= 55)bitWrite(&PINM,port-48,value); + } + if(reg == R_PIN && digital == 0) + { + if(port <= 7 && port >= 0)bitWrite(&PINC,port,value); + if(port <= 15 && port >= 8)bitWrite(&PINN,port-8,value); + } + //------------------------------------------------------- + +} + +//==================================== +int readRegister(int reg, int port) +//==================================== +{ + int value = 99,pin; + + //------------------------------------------------------- + if(reg == R_PORT && port < g_nDigPins) // 0=LOW 1=HIGH + { + if(port >= 0 && port <= 7)value=bitRead(PORTD,port); + if(port >= 8 && port <= 15)value=bitRead(PORTB,port-8); + if(port >= 16 && port <= 23)value=bitRead(PORTE,port-16); + if(port >= 24 && port <= 31)value=bitRead(PORTF,port-24); + if(port >= 32 && port <= 39)value=bitRead(PORTK,port-32); + if(port >= 40 && port <= 47)value=bitRead(PORTL,port-40); + if(port >= 48 && port <= 55)value=bitRead(PORTM,port-48); + } + if(reg == R_PORT && port >= g_nDigPins) // Analog Pins + { + pin = port-g_nDigPins; + if(pin <= 7 && pin >= 0)value=bitRead(PORTC,pin); + if(pin <= 15 && pin >= 8)value=bitRead(PORTN,pin-8); // verify + } + //------------------------------------------------------- + if(reg == R_DDR && port < g_nDigPins) // 0=INPUT 1=OUTPUT + { + if(port <= 7 && port >= 0)value=bitRead(DDRD,port); + if(port >= 8 && port <= 15)value=bitRead(DDRB,port-8); + if(port >= 16 && port <= 23)value=bitRead(DDRE,port-16); + if(port >= 24 && port <= 31)value=bitRead(DDRF,port-24); + if(port >= 32 && port <= 39)value=bitRead(DDRK,port-32); + if(port >= 40 && port <= 47)value=bitRead(DDRL,port-40); + if(port >= 48 && port <= 55)value=bitRead(DDRM,port-48); + } + if(reg == R_DDR && port >= g_nDigPins)// Analog Pins + { + pin = port-g_nDigPins; + if(pin <= 7 && pin >= 0)value=bitRead(DDRC,pin); + if(pin <= 15 && pin >= 8)value=bitRead(DDRN,pin-8); // verify + } + //------------------------------------------------------- + if(reg == R_PIN && port < g_nDigPins) // 0=INPUT 1=OUTPUT + { + if(port <= 7 && port >= 0)value=bitRead(PIND,port); + if(port >= 8 && port <= 15)value=bitRead(PINB,port-8); + if(port >= 16 && port <= 23)value=bitRead(PINE,port-16);// verify + if(port >= 24 && port <= 31)value=bitRead(PINF,port-24);// verify + if(port >= 32 && port <= 39)value=bitRead(PINK,port-32);// verify + if(port >= 40 && port <= 47)value=bitRead(PINL,port-40);// verify + if(port >= 48 && port <= 55)value=bitRead(PINM,port-48);// verify + } + if(reg == R_PIN && port >= g_nDigPins)// Analog Pins + { + pin = port-g_nDigPins; + if(pin <= 7 && pin >= 0)value=bitRead(PINC,pin); + if(pin <= 15 && pin >= 8)value=bitRead(PINN,pin-8); // verify + } + //------------------------------------------------------- + + return(value); +} + +//==================================== +void updateFromRegister() +//==================================== +{ + int i; + + for(i=0;i 0) + { + n++; + tempD[0] = n; + tempD[n] = x; + pinD[n] = i; + } + } + + strcpy(z,""); + // Mode status of digital pins + for(i=0;i<=max_digPin;i++) + { + if(g_boardType==UNO) + { + in_out = readRegister(R_DDR,i); + if(in_out == 0)z[i] ='I'; + if(in_out == 1)z[i] ='o'; + } + else // MEGA + { + if(digitalMode[i]==INPUT) + { + in_out = 0; + z[i] ='I'; + } + if(digitalMode[i]==OUTPUT) + { + in_out = 1; + z[i] ='o'; + } + } + + + x = digitalMode[i]; + if(in_out == 0) // INPUT + { + if(x == FREE)z[i] ='-'; + else if(x == CHANGE)z[i] ='C'; + else if(x == RISING)z[i] ='R'; + else if(x == FALLING)z[i] ='F'; + else if(x == LOW)z[i] ='L'; + else if(x == RX)z[i] ='X'; + else if(x == TX)z[i] ='Y'; + //else z[i] = 'Q'; + } + else // OUTPUT + { + if(x == FREE)z[i] ='-'; + else if(x == CHANGE)z[i] ='c'; + else if(x == RISING)z[i] ='r'; + else if(x == FALLING)z[i] ='f'; + else if(x == LOW)z[i] ='l'; + else if(x == RX)z[i] ='x'; + else if(x == TX)z[i] ='y'; + //else z[i] = 'q'; + } + } + z[i]='\0'; + + fprintf(s_log,"%d,%s,%d,%d",g_curStep,z,tempA[0],tempD[0]); + if(tempA[0] > 0) + { + for(i=1;i<=tempA[0];i++)fprintf(s_log,",%d,%d",pinA[i],tempA[i]); + } + if(tempD[0] > 0) + { + for(i=1;i<=tempD[0];i++)fprintf(s_log,",%d,%d",pinD[i],tempD[i]); + } + fprintf(s_log,"\n"); + + registerLog(); +} + +//==================================== +void registerLog() +//==================================== +{ + if(g_boardType==UNO) + { + setPINRegister(g_curStep); + fprintf(r_log,"# %d,DDRB=%s,DDRC=%s,DDRD=%s,",g_curStep,int2bin(DDRB,8),int2bin(DDRC,8),int2bin(DDRD,8)); + fprintf(r_log,"PORTB=%s,PORTC=%s,PORTD=%s,",int2bin(PORTB,8),int2bin(PORTC,8),int2bin(PORTD,8)); + fprintf(r_log,"PINB=%s,PINC=%s,PIND=%s\n",int2bin(PINB,8),int2bin(PINC,8),int2bin(PIND,8)); + fprintf(r_log,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",g_curStep,DDRB,DDRC,DDRD,PORTB,PORTC,PORTD,PINB,PINC,PIND); + } +} + +//==================================== +void boardInit() +//==================================== +{ + int i,j; + + g_nloop = 0; + + for(i=0;i<40;i++) + { + for(j=0;j= s_analogStep[i][pin] && step < s_analogStep[i+1][pin]) + res = s_analogPin[i][pin]; + } + if(step >= s_analogStep[limit][pin]) res = s_analogPin[limit][pin]; + } + else + { + limit = s_analogStep[0][pin]; + for (i=1;i<=limit;i++) + { + if(step >= s_analogStep[i][pin] && step < s_analogStep[i+1][pin]) + res = s_analogPin[i][pin]; + } + if(step >= s_analogStep[limit][pin]) res = s_analogPin[limit][pin]; + } + + return(res); +} + +//==================================== +int getDigitalPinValue(int pin,int step) +//==================================== +{ + int i,res=0,limit; + + + limit = s_digitalStep[0][pin]; + + for (i=1;i<=limit;i++) + { + if(step >= s_digitalStep[i][pin] && step < s_digitalStep[i+1][pin]) + res = s_digitalPin[i][pin]; + } + if(step >= s_digitalStep[limit][pin]) res = s_digitalPin[limit][pin]; + return(res); +} + +//==================================== +int insDigitalPinValue(int pin,int step, int value) +//==================================== +{ + int i,limit,hit=0,ok=0; + + ok = ok + checkRange(S_OK,"digpin",pin); + ok = ok + checkRange(S_OK,"step",step); + ok = ok + checkRange(S_OK,"digval",value); + + if(ok == S_OK) + { + + limit = s_digitalStep[0][pin]; + + // Insert breakpoint at the end + if(step > s_digitalStep[limit][pin]) + { + hit = 1; + s_digitalPin[limit+1][pin] = value; + s_digitalStep[limit+1][pin] = step; + limit++; + } + + // Insert breakpoint at the begining + else if(step < s_digitalStep[1][pin]) + { + hit = limit; + for(i=limit;i>0;i--) + { + s_digitalPin[i+1][pin] = s_digitalPin[i][pin]; + s_digitalStep[i+1][pin] = s_digitalStep[i][pin]; + } + s_digitalPin[1][pin] = value; + s_digitalStep[1][pin] = step; + limit++; + } + // Insert breakpoint in between + else + { + for (i=1;i<=limit;i++) + { + // If step in between + if(step > s_digitalStep[i][pin] && step < s_digitalStep[i+1][pin]) + { + hit = i+1; // New breakpoint index + } + // If breakpoint already exists - replace value + if(step == s_digitalStep[i][pin]) + { + hit = -1; + s_digitalPin[i][pin] = value; + } + } + // Insert breakpoint + if(hit > 0) + { + for(i=limit;i>=hit;i--) + { + s_digitalPin[i+1][pin] = s_digitalPin[i][pin]; + s_digitalStep[i+1][pin] = s_digitalStep[i][pin]; + } + s_digitalPin[hit][pin] = value; + s_digitalStep[hit][pin] = step; + limit++; + } + } + s_digitalStep[0][pin] = limit; + + } + if(hit==0) + { + sprintf(g_temp,"Digital: Unable to insert breakpoint pin=%d step=%d value=%d",pin,step,value); + errorLog(g_temp,0); + } + return(hit); +} + +//==================================== +int insAnalogPinValue(int pin,int step, int value) +//==================================== +{ + int i,limit,hit=0,ok=0; + + ok = ok + checkRange(S_OK,"anapin",pin); + ok = ok + checkRange(S_OK,"step",step); + ok = ok + checkRange(S_OK,"anaval",value); + + if(ok == S_OK) + { + + limit = s_analogStep[0][pin]; + + // Insert breakpoint at the end + if(step > s_analogStep[limit][pin]) + { + hit = 1; + s_analogPin[limit+1][pin] = value; + s_analogStep[limit+1][pin] = step; + limit++; + } + + // Insert breakpoint at the begining + else if(step < s_analogStep[1][pin]) + { + hit = limit; + for(i=limit;i>0;i--) + { + s_analogPin[i+1][pin] = s_analogPin[i][pin]; + s_analogStep[i+1][pin] = s_analogStep[i][pin]; + } + s_analogPin[1][pin] = value; + s_analogStep[1][pin] = step; + limit++; + } + // Insert breakpoint in between + else + { + for (i=1;i<=limit;i++) + { + // If step in between + if(step > s_analogStep[i][pin] && step < s_analogStep[i+1][pin]) + { + hit = i+1; // New breakpoint index + } + // If breakpoint already exists - replace value + if(step == s_analogStep[i][pin]) + { + hit = -1; + s_analogPin[i][pin] = value; + } + } + // Insert breakpoint + if(hit > 0) + { + for(i=limit;i>=hit;i--) + { + s_analogPin[i+1][pin] = s_analogPin[i][pin]; + s_analogStep[i+1][pin] = s_analogStep[i][pin]; + } + s_analogPin[hit][pin] = value; + s_analogStep[hit][pin] = step; + limit++; + } + } + s_analogStep[0][pin] = limit; + + } + if(hit==0) + { + sprintf(g_temp,"Analog: Unable to insert breakpoint pin=%d step=%d value=%d",pin,step,value); + errorLog(g_temp,0); + } + return(hit); +} + + +//==================================== +int delDigitalPinValue(int pin,int step) +//==================================== +{ + int i,limit,hit=0,ok=0; + + ok = ok + checkRange(S_OK,"digpin",pin); + ok = ok + checkRange(S_OK,"step",step); + + if(ok == S_OK) + { + limit = s_digitalStep[0][pin]; + for (i=1;i<=limit;i++) + { + if(step == s_digitalStep[i][pin]) + { + hit = i; + } + } + + if(hit > 0) + { + s_digitalStep[0][pin]--; + //Remove the only/last breakpoint + if(limit == hit) + { + s_digitalPin[hit][pin] = 0; + s_digitalStep[hit][pin] = 0; + } + else if(hit < limit) + { + for(i=hit;i 0) + { + s_analogStep[0][pin]--; + //Remove the only/last breakpoint + if(limit == hit) + { + s_analogPin[hit][pin] = 0; + s_analogStep[hit][pin] = 0; + } + else if(hit < limit) + { + for(i=hit;i 0) + fprintf(out,"%4d ",i); + } + fprintf(out,"\n"); + fprintf(out,"# Analog: "); + for(i=0;i<=max_anaPin;i++) + { + if(s_analogStep[0][i] > 0) + fprintf(out,"%4d ",i); + } + fprintf(out,"\n"); + + for(k=1;k<=g_simulationLength;k++) + { + fprintf(out,"%4d ",k); + for(i=0;i<=max_digPin;i++) + { + if(s_digitalStep[0][i] > 0) + { + temp = getDigitalPinValue(i,k); + fprintf(out,"%4d ",temp); + x_pinScenario[i][k] = temp; + } + } + fprintf(out," "); + for(i=0;i<=max_anaPin;i++) + { + if(s_analogStep[0][i] > 0) + { + temp = getAnalogPinValue(i,k); + fprintf(out,"%4d ",temp); + x_pinScenario[i+g_nDigPins][k] = temp; + } + } + fprintf(out,"\n"); + } + + fclose(out); + return; +} + +//==================================== +void setPINRegister(int step) +//==================================== +{ + int i,temp; + + for(i=0;i<=max_digPin;i++) + { + temp = getDigitalPinValue(i,step); + writeRegister(1,R_PIN,i,temp); + } +/* for(i=0;i<=max_anaPin;i++) */ +/* { */ +/* temp = getAnalogPinValue(i,step); */ +/* writeRegister(0,R_PIN,i,temp); */ +/* } */ + return; +} + + +/* //==================================== */ +/* void iLog1(const char *p, int value1) */ +/* //==================================== */ +/* { */ +/* fprintf(a_log,"* %d %s ? %d\n",currentStep,p,value1); */ +/* fprintf(u_log,"* %d %s ? %d\n",currentStep,p,value1); */ +/* return; */ +/* } */ + +/* //==================================== */ +/* void mLine() */ +/* //==================================== */ +/* { */ +/* char line[120]; */ + +/* strcpy(line,"--------------------"); */ +/* fprintf(a_log,"= %d ? %s\n",currentStep,line); */ +/* fprintf(u_log,"= %d ? %s\n",currentStep,line); */ +/* return; */ +/* } */ +/* //==================================== */ +/* void mLineText(const char *t) */ +/* //==================================== */ +/* { */ +/* char line[120]; */ + +/* sprintf(line,"------ %s ------",t); */ +/* fprintf(a_log,"= %d ? %s\n",currentStep,line); */ +/* fprintf(u_log,"= %d ? %s\n",currentStep,line); */ +/* return; */ +/* } */ +/* //==================================== */ +/* void mLog0(const char *p) */ +/* //==================================== */ +/* { */ +/* fprintf(a_log,"= %d ? %s\n",currentStep,p); */ +/* fprintf(u_log,"= %d ? %s\n",currentStep,p); */ +/* return; */ +/* } */ +/* //==================================== */ +/* void mLog1(const char *p, int value1) */ +/* //==================================== */ +/* { */ +/* fprintf(a_log,"= %d ? %s %d\n",currentStep,p,value1); */ +/* fprintf(u_log,"= %d ? %s %d\n",currentStep,p,value1); */ +/* return; */ +/* } */ + + + +//==================================== +int wCustomLog(char *in, char *out) +//==================================== +{ + char *q,*p; + int pin; + + p = strstr(in,":"); + p++; + sscanf(p,"%d",&pin); + p = strstr(p,"\""); + p++; + q = strstr(p,"\""); + strcpy(q,"\0"); + strcpy(out,p); + + return(pin); +} + + +//==================================== +void readSketchInfo() +//==================================== +{ + FILE *in; + char row[120],res[40],*p,*q,value[5]; + int pin,rows=0; + + in = fopen("sketch.ino","r"); + if(in == NULL) + { + errorLog("Error: Unable to open sketch",g_curStep); + } + else + { + while (fgets(row,120,in)!=NULL) + { + rows++; + //if(row[0] == '/') + // { + if(p=strstr(row,"setup("))g_row_setup = rows; + if(p=strstr(row,"loop("))g_row_loop = rows; + if(p=strstr(row,"SKETCH_NAME:")) + { + fprintf(f_event,"#%s",row); + q = strstr(p,":");q++; + sscanf(q,"%s",appName); + } + if(p=strstr(row,"BOARD_TYPE")) + { + fprintf(f_event,"#%s",row); + if(strstr(row,"UNO") != NULL) g_boardType = UNO; + if(strstr(row,"MEGA")!= NULL) g_boardType = MEGA; + } + // } + } + } + fclose(in); +} + + +//==================================== +void stopEncoding() +//==================================== +{ + + fprintf(f_event,"# ENDOFSIM\n"); + saveScenario(); + //saveScenarioExpanded(); + closeFiles(); + exit(0); +} +//==================================== +void savePinStatus() +//==================================== +{ + int i; + for(i=0;i<=max_digPin;i++) + s_digitalPin[g_curStep][i] = c_digitalPin[i]; + for(i=0;i<=max_anaPin;i++) + s_analogPin[g_curStep][i] = c_analogPin[i]; +} + +//==================================== +void doInterrupt(int pin,int ir, int irType,int value) +//==================================== +{ + + if(g_ongoingInterrupt == S_YES || g_allowInterrupt == S_NO) + { + errorLog("Try to interrupt during ongoing interrupt",g_curStep); + return; + } + + g_ongoingInterrupt = S_YES; + interrupt[ir](); + g_ongoingInterrupt = S_NO; + +} + +//==================================== +void interruptNow() +//==================================== +{ + int ir,ir_1,ir_2,pin,extTrigged = S_NO; + + for(ir=0;ir<=max_irPin;ir++) + { + + if(attached[ir] == S_YES) + { + pin = inrpt[ir]; + + ir_1 = getDigitalPinValue(pin,g_curStep); + ir_2 = getDigitalPinValue(pin,g_curStep-1); + + + if(interruptMode[ir] == RISING && ir_1 == 1 && ir_2 == 0) + { + doInterrupt(pin,ir,RISING,1); + } + if(interruptMode[ir] == FALLING && ir_1 == 0 && ir_2 == 1) + { + doInterrupt(pin,ir,FALLING,0); + } + if(interruptMode[ir] == CHANGE && ir_1 != ir_2) + { + doInterrupt(pin,ir,CHANGE,ir_1); + } + if(interruptMode[ir] == LOW && ir_1 != ir_2) + { + doInterrupt(pin,ir,LOW,ir_1); + } + } + + } + +} +//==================================== +void readScenario() +//==================================== +{ + FILE *in; + char row[120],*p, junk[20]; + int pin,step,value,i,j; + int tmp=0,dCount[MAX_PIN_DIGITAL_MEGA],aCount[MAX_PIN_ANALOG_MEGA]; + + if(g_scenSource == 0)in = fopen("sketch.ino","r"); + if(g_scenSource == 1)in = fopen("data.scen","r"); + + for(i=0;i<=max_anaPin;i++) + { + for(j=0;j. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "servuino/common.h" + + +// Simulator status +int x_pinMode[MAX_TOTAL_PINS][SCEN_MAX]; +int x_pinScenario[MAX_TOTAL_PINS][SCEN_MAX]; +int x_pinDigValue[MAX_TOTAL_PINS][SCEN_MAX]; +int x_pinAnaValue[MAX_TOTAL_PINS][SCEN_MAX]; +int x_pinRW[MAX_TOTAL_PINS][SCEN_MAX]; + +// Window ==================== +#define UNO_H 17 +#define UNO_W 63 +#define MEGA_H 32 +#define MEGA_W 110 +#define UNO_COLOR 7 + +#define MSG_H 20 +#define MSG_W 61 +#define MSG_COLOR 6 + +#define LOG_H 40 +#define LOG_W 40 +#define LOG_COLOR 3 + +#define SER_H 40 +#define SER_W 30 +#define SER_COLOR 4 + +#define WIN_MODES 5 + +// Sketch Status +#define SO_VOID 1 +#define SO_SELECTED 2 +#define SO_LOADED 3 +#define SO_COMP_ERROR 4 +#define SO_RUN_ERROR 5 + +// Current data +int currentStep = 0; +int currentLoop = 0; +char currentConf[SIZE_ROW]; +int currentPin = 0; +int currentValueD[MAX_PIN_DIGITAL_MEGA]; +int currentValueA[MAX_PIN_ANALOG_MEGA]; +char g_currentSketch[80]; +int g_currentSketchStatus = SO_VOID; +int g_runDelay = 0; //millisec + + +// Limits +int g_loops = 0; +int g_steps = 0; +int g_comments = 0; + +int g_dir; + +int g_value = 0; +int s_mode = S_ADMIN; +int g_warning = S_YES; +int g_silent = 0; +int g_scenSource = 0; +int g_pinType = 0; +int g_pinNo = 0; +int g_pinValue = 0; +int g_pinStep = 0; +int g_debug = 0; + +int g_existError = S_NO; + +int digPinCol[MAX_PIN_DIGITAL_MEGA]; +int digPinRow[MAX_PIN_DIGITAL_MEGA]; +int digValCol[MAX_PIN_DIGITAL_MEGA]; +int digValRow[MAX_PIN_DIGITAL_MEGA]; +int digIdCol[MAX_PIN_DIGITAL_MEGA]; +int digIdRow[MAX_PIN_DIGITAL_MEGA]; +int digStatCol[MAX_PIN_DIGITAL_MEGA]; +int digStatRow[MAX_PIN_DIGITAL_MEGA]; +int digActCol[MAX_PIN_DIGITAL_MEGA]; +int digActRow[MAX_PIN_DIGITAL_MEGA]; + +int anaPinCol[MAX_PIN_ANALOG_MEGA]; +int anaPinRow[MAX_PIN_ANALOG_MEGA]; +int anaValCol[MAX_PIN_ANALOG_MEGA]; +int anaValRow[MAX_PIN_ANALOG_MEGA]; +int anaIdCol[MAX_PIN_ANALOG_MEGA]; +int anaIdRow[MAX_PIN_ANALOG_MEGA]; +int anaStatCol[MAX_PIN_ANALOG_MEGA]; +int anaStatRow[MAX_PIN_ANALOG_MEGA]; +int anaActCol[MAX_PIN_ANALOG_MEGA]; +int anaActRow[MAX_PIN_ANALOG_MEGA]; + +int s_row,s_col; + +char status[MAX_STEP][SIZE_ROW]; +char simulation[MAX_STEP][SIZE_ROW]; +char serialM[MAX_STEP][SIZE_ROW]; +int serialL[MAX_STEP]; + +char simComment[MAX_STEP][SIZE_ROW]; +int stepComment[MAX_STEP]; +int commentStep[MAX_STEP]; +int loopPos[MAX_LOOP]; +int stepLoop[MAX_STEP]; +int loopStep[MAX_LOOP]; + +int stepDelay[MAX_STEP]; + +char appName[120]; + +int interruptMode[2]; +int digitalMode[MAX_PIN_DIGITAL_MEGA]; +int paceMaker = 0; +int baud = 0; +int error = 0; + +// Debug +int g_lineSketch[MAX_STEP]; +char g_sourceSketch[MAX_SOURCE_LINES][SIZE_ROW]; + +// Log +char logBlankRow[MAX_SERIAL_BUFFER]; + +// Serial Interface +int serialMode = S_OFF; +char prevSerial[MAX_SERIAL_BUFFER]; +char serBlankRow[MAX_SERIAL_BUFFER]; + +int s_digitalPin[MAX_STEP][MAX_PIN_DIGITAL_MEGA]; +int s_analogPin[MAX_STEP][MAX_PIN_ANALOG_MEGA]; + +char textPinModeIn[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textPinModeOut[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textDigitalWriteLow[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textDigitalWriteHigh[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textAnalogWrite[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +char textAnalogRead[MAX_PIN_ANALOG_MEGA][SIZE_ROW]; +char textDigitalRead[MAX_PIN_DIGITAL_MEGA][SIZE_ROW]; +int scenAnalog = 0; +int scenDigital = 0; +int scenInterrupt = 0; + +// Configuration default values +int confSteps = 1000; +int confWinMode = 2; +int confLogLev = 1; +int confLogFile = 0; +char confSketchFile[200]; +int confBoardType = UNO; + +char fileTemp[80] = "temp.txt"; +char fileInfoRun[80] = "help.txt"; +char fileCopyError[80] = "copy.error"; +char fileHints[80] = "hints.txt"; +char fileInfoAdmin[80] = "help_command.txt"; +char fileInfoGpl[80] = "gpl.txt"; +char fileProjList[80] = "conf_list.txt"; +char fileLog[80] = "log.txt"; +char fileDefault[80] = "default.conf"; +char fileError[80] = "error.txt"; +char fileServComp[80] = "servuino/g++.result"; +char fileServSketch[80] = "servuino/sketch.ino"; +char fileServArduino[80] = "servuino/serv.event"; +char fileServError[80] = "servuino/serv.error"; +char fileServScen[80] = "servuino/data.scen"; +char fileServScenario[80] = "servuino/data.scenario"; +char fileServCode[80] = "servuino/data.code"; +char fileServCustom[80] = "servuino/serv.cust"; + +char fileServInoDebug[80] = "servuino/ino.debug"; + +char fileServPinmod[80] = "servuino/serv.pinmod"; +char fileServDigval[80] = "servuino/serv.digval"; +char fileServAnaval[80] = "servuino/serv.anaval"; +char fileServPinrw[80] = "servuino/serv.pinrw"; +char fileServSerial[80] = "servuino/serv.serial"; +char fileServTime[80] = "servuino/serv.time"; + +int g_nScenDigital = 0; +int g_nScenAnalog = 0; + +int g_row_setup = 0; +int g_row_loop = 0; + +int uno_h=0, uno_w=0, uno_x=0, uno_y=0; +int msg_h=0, msg_w=0, msg_x=0, msg_y=0; +int log_h=0, log_w=0, log_x=0, log_y=0; +int ser_h=0, ser_w=0, ser_x=0, ser_y=0; +int board_w=0,board_h=0,board_x=0,board_y=0; +int ap,dp; + +//#define DP 5 // Digital Pin Row No +//#define AP 11 // Analog Pin Row No +#define RF 1 +#define ER 1 +#define SR 20 + + +WINDOW *uno,*ser,*slog,*msg; +static struct termios orig, nnew; + +//char stemp[80]; +char gplFile[80]; + +FILE *err; + +#include "servuino/common_lib.c" +#include "servuino/arduino.h" +#include "simuino.h" +#include "simuino_lib.c" + +//==================================== +int runStep(int dir) +//==================================== +{ + //char stemp[SIZE_ROW]; + int temp; + + g_dir = dir; + + if(dir == S_FORWARD)currentStep++; + if(dir == S_BACKWARD)currentStep--; + if(currentStep > g_steps || currentStep < 1) + { + currentStep = checkRange(HEAL,"step",currentStep); + return(S_STOP); + } + currentLoop = stepLoop[currentStep]; + winLog(); + winSer(); + //strcpy(stemp,status[currentStep]); + displayStatus(); + unoInfo(); + + // Realtime animation + temp = stepDelay[currentStep]; + if(temp > 0)microDelay(temp); + iDelay(g_runDelay); + return(0); +} + +//==================================== +int goStep(int step) +//==================================== +{ + char stemp[SIZE_ROW]; + + + if(step > g_steps || step < 1) + { + step = checkRange(HEAL,"step",step); + //return(STOP); + } + currentStep = step; + currentLoop = stepLoop[currentStep]; + winLog(); + winSer(); + //strcpy(stemp,status[currentStep]); + displayStatus(); + unoInfo(); + iDelay(g_runDelay); + return(0); +} + +//==================================== +int tokCommand(char res[40][40],char *inp) +//==================================== +{ + char *pch; + int count = 0; + + pch = strtok(inp," "); + while (pch != NULL) + { + strcpy(res[count],pch); + count++; + pch = strtok(NULL, " "); + } + return(count); +} + +//==================================== +void loadCurrentSketch() +//==================================== +{ + int x,res; + char syscom[120],temp[200]; + + g_warning = S_NO; + putMsg(1,"Loading sketch ..."); + res = loadSketch(g_currentSketch); + if(res == 0) + { + if(confSteps < 0) confSteps = 100; + if(confSteps > MAX_STEP) confSteps = MAX_STEP-1; + sprintf(syscom,"cd servuino;./servuino %d %d;",confSteps,g_scenSource); + x=system(syscom); + initSim(); + resetSim(); + readSimulation(); + readSketchInfo(); + setRange(confBoardType); + init(confWinMode); + saveSetting(); + unoInfo(); + sprintf(temp,"Sketch load ready: %s",confSketchFile); + putMsg(msg_h-2,temp); + g_currentSketchStatus = SO_LOADED; + } + if(res != 0)g_currentSketchStatus = SO_COMP_ERROR; +} + +//==================================== +void openCommand() +//==================================== +{ + struct stat st; + int ch,nsteps=1000,x,i,n,stop=0,loop,projNo = 0,ok=0,tmp; + char *p,str[120],sstr[20],fileName[120],temp[120],syscom[120]; + char command[40][40]; + + s_mode = S_ADMIN; + g_silent = 0; + + readMsg(gplFile); + + while(strstr(str,"ex") == NULL) + { + anyErrors(); + unoInfo(); + + wmove(uno,board_h-2,1); + wprintw(uno," "); + if(g_silent==S_NO )mvwprintw(uno,board_h-2,1,"A%1d>",confWinMode); + if(g_silent==S_YES)mvwprintw(uno,board_h-2,1,"A%1d<",confWinMode); + + strcpy(command[0],""); + + wgetstr(uno,str); + + n = tokCommand(command,str); + + strcpy(sstr,command[0]); + + p = str; + + projNo = atoi(sstr); + + if(strstr(sstr,"gpl")) + { + readMsg(gplFile); + } + else if(strstr(sstr,"err")) + { + readMsg(fileTemp); + } + else if(strstr(sstr,"run")) + { + stop = 1; + if(n == 2)stop = atoi(command[1]); + stop = checkRange(HEAL,"step",stop); + + runMode(stop); + if(stop==0)putMsg(2,"Back in Admin Mode!"); + } + else if(strstr(sstr,"res")) // reset simulation + { + resetSim(); + init(confWinMode); + unoInfo(); + readMsg(currentConf); + } + else if(strstr(sstr,"help")) // + { + strcpy(fileName,fileInfoAdmin); + readMsg(fileName); + } + else if(strstr(sstr,"rem")) // + { + if(n == 4) + { + if(strstr(command[1],"a"))g_pinType = ANA; + if(strstr(command[1],"d"))g_pinType = DIG; + g_pinNo = atoi(command[2]); + g_pinStep = atoi(command[3]); + if(g_pinType == ANA) + ok = checkRange(S_OK,"anapin",g_pinNo); + if(g_pinType == DIG) + ok = checkRange(S_OK,"digpin",g_pinNo); + if(ok == S_OK) + { + g_scenSource = 1; + sprintf(syscom,"cd servuino;./servuino %d %d %d %d %d %d %d;",confSteps,g_scenSource,g_pinType,g_pinNo,0,g_pinStep,S_DELETE); + //putMsg(2,syscom); + tmp=system(syscom); + initSim(); + readSketchInfo(); + readSimulation(); + runStep(S_FORWARD); + readMsg(fileServScen); + } + else + putMsg(2,"Wrong pin number or pin type!"); + } + else + putMsg(2,"Syntax: rem "); + } + else if(strstr(sstr,"add")) // + { + if(n == 5) + { + if(strstr(command[1],"a"))g_pinType = ANA; + if(strstr(command[1],"d"))g_pinType = DIG; + + g_pinNo = atoi(command[2]); + g_pinStep = atoi(command[3]); + g_pinValue = atoi(command[4]); + + ok = S_OK; + if(g_pinType == ANA) + ok = checkRange(S_OK,"anapin",g_pinNo); + if(g_pinType == DIG) + ok = checkRange(S_OK,"digpin",g_pinNo); + + ok = ok + checkRange(S_OK,"step",g_pinStep); + + if(ok == S_OK) + { + g_scenSource = 1; + sprintf(syscom,"cd servuino;./servuino %d %d %d %d %d %d %d;",confSteps,g_scenSource,g_pinType,g_pinNo,g_pinValue,g_pinStep,S_ADD); + tmp=system(syscom); + initSim(); + readSketchInfo(); + readSimulation(); + runStep(S_FORWARD); + readMsg(fileServScen); + } + } + else + putMsg(2,"Syntax: add "); + } + else if(strstr(sstr,"info")) + { + if(n == 2) + { + if(strstr(command[1],"err")) + { + readMsg(fileServError); + } + else if(strstr(command[1],"g++")) + { + readMsg(fileServComp); + } + else if(strstr(command[1],"loop")) + { + showLoops(); + } + else if(strstr(command[1],"scen")) // scenario + { + readMsg(fileServScen); + } + } + else + { + readMsg(fileInfoAdmin); + } + } + + else if(strstr(sstr,"list")) + { + sprintf(syscom,"ls sketchbook/*.ino > %s;",fileProjList); + x=system(syscom); + readMsg(fileProjList); + } + else if(strstr(sstr,"sketch")) + { + if(n == 2) + { + if(strstr(command[1],"ino")) + { + readMsg(confSketchFile); + } + else if(strstr(command[1],"work")) + { + readMsg(fileServSketch); + } + } + else + readMsg(fileServSketch); + } + else if(strstr(sstr,"win")) + { + confWinMode = atoi(command[1]); + if(confWinMode > WIN_MODES)confWinMode = 0; + init(confWinMode); + unoInfo(); + } + else if(strstr(sstr,"conf")) + { + if(n == 3) + { + if(strstr(command[1],"sim")) + { + confSteps = atoi(command[2]); + } + else if(strstr(command[1],"win")) + { + confWinMode = atoi(command[2]); + if(confWinMode > WIN_MODES)confWinMode = 0; + init(confWinMode); + unoInfo(); + } + else if(strstr(command[1],"sketch")) + { + strcpy(temp,command[2]); + if(stat(temp,&st) == 0) + { + strcpy(confSketchFile,command[2]); + } + else + { + sprintf(temp,"Sketch not found: %s",command[2]);// Issue 16 + putMsg(msg_h-2,temp); + } + } + saveSetting(); + } + //readMsg(currentConf); + } + + + else if(strstr(sstr,"sav")) //save config + { + + } + else if(strstr(sstr,"win")) //windows layout + { + if(n == 2) + { + confWinMode = atoi(command[1]); + if(confWinMode > WIN_MODES)confWinMode = 0; + init(confWinMode); + unoInfo(); + } + } + else if(strstr(sstr,"loop")) + { + if(n == 2)loop = atoi(command[1]); + loop = checkRange(HEAL,"loop",loop); + runLoops(loop); + } + else if(strstr(sstr,"clear")) + { + sprintf(syscom,"rm servuino/sketch.ino;rm servuino/data.su;rm servuino/data.scen;"); + x=system(syscom); + } + else if(strstr(sstr,"load")) + { + if(n == 2) + { + confSteps = atoi(command[1]); + } + g_scenSource = 0; + loadCurrentSketch(); + } + else if(projNo > 0 && projNo < 21) + { + selectProj(projNo,g_currentSketch); + readConfig(g_currentSketch); + g_warning = S_YES; + g_currentSketchStatus = SO_SELECTED; + setRange(confBoardType); + init(confWinMode); + unoInfo(); + show(slog); + //readMsg(g_currentSketch); + readMsg(fileProjList); + } + else if(strstr(sstr,"data")) + { + if(n == 2) + { + if(strstr(command[1],"ard")) + { + readMsg(fileServArduino); + } + else if(strstr(command[1],"cus")) + { + readMsg(fileServCustom); + } + else if(strstr(command[1],"cod")) + { + readMsg(fileServCode); + } + else if(strstr(command[1],"err")) + { + readMsg(fileServError); + } + else if(strstr(command[1],"sce")) + { + readMsg(fileServScen); + } + } + else + readMsg(fileServArduino); + } + else + { + putMsg(msg_h-2,"Unknown Admin command"); + } + } +} + +//==================================== +void runMode(int stop) +//==================================== +{ + int ch,x,step,tmp,res=0,a=0,b=0,ir,ok=0,n=0; + char tempName[80],syscom[120],temp[80]; + char command[40][40]; + + strcpy(tempName,"help.txt"); + + s_mode = S_RUN; + + + if(stop > 1) + { + if(stop > g_steps)stop = g_steps; + //if(stop > currentStep) + runAll(stop); + return; + } + + putMsg(3,"Run Mode. Press h for help."); + + while(1) + { + if(g_debug == 1) + readFile(g_currentSketch,g_lineSketch[currentStep]); + + anyErrors(); + if(g_silent==S_NO )mvwprintw(uno,board_h-2,1,"R%1d>",confWinMode); + if(g_silent==S_YES)mvwprintw(uno,board_h-2,1,"R%1d<",confWinMode); + unoInfo(); + + ch = getchar(); + + if (ch=='q') + { + return; + } + + if (ch=='h') + { + readMsg(fileInfoRun); + } + else if (ch=='c') + { + sprintf(temp,"Simulation Length: %d\n Delay............: %d ms",confSteps,g_runDelay); + putMsg(2,temp); + } + else if (ch=='e') + { + readMsg(fileServError); + } + else if (ch=='d') + { + readMsg(fileServTime); + } + else if(ch=='y' ) // scenario + { + readMsg(fileServScen); + } + else if (ch=='x') + { + readMsg(fileServScenario); + } + else if (ch=='G') + { + runAll(g_steps); + } + else if (ch=='l') + { + showLoops(); + } + else if (ch=='s') + { + g_debug++; + if(g_debug > 1) + { + g_debug = 0; + putMsg(2,"Run Mode. Press h for help."); + } + + } + else if (ch=='w') + { + confWinMode++; + if(confWinMode > WIN_MODES)confWinMode = 0; + init(confWinMode); + mvwprintw(uno,board_h-2,1,"R%1d>",confWinMode); + unoInfo(); + } + else if (ch=='a') + { + goStep(1); + } + else if (ch=='r') + { + goStep(loopStep[currentLoop+1]); + } + else if (ch=='o') + { + goStep(loopStep[currentLoop]); + } + else if (ch=='p') + { + goStep(loopStep[currentLoop-1]); + } + else if (ch=='z') + { + goStep(g_steps); + } + else if (ch=='k') + { + resetSim(); + init(confWinMode); + unoInfo(); + mvwprintw(uno,board_h-2,1,"R%1d>",confWinMode); + show(uno); + } + else if (ch=='f')// Up Arrow + { + goStep(currentStep+1); + } + else if (ch=='b')// Down Arrow + { + goStep(currentStep-1); + } + else if (ch=='R') // Right Arrow + { + runLoop(S_FORWARD); + } + else if (ch=='P') // Left Arrow + { + runLoop(S_BACKWARD); + } + else if (ch=='A')// Up Arrow + { + goStep(currentStep+1); + } + else if (ch=='B')// Down Arrow + { + goStep(currentStep-1); + } + else if (ch=='C') // Right Arrow + { + runLoop(S_FORWARD); + } + else if (ch=='D') // Left Arrow + { + runLoop(S_BACKWARD); + } + else if (ch=='t') + { + runNextRead(); + } + else if (ch=='j') + { + runPrevRead(); + } + /* else if (ch=='i') + { + ok = 0; + step = currentStep; + sprintf(temp,"(Step:%d) Enter: d/a pin value (q - cancel)",step); + putMsg(2,temp); + wgetstr(uno,temp); + n = tokCommand(command,temp); + + if(strstr(command[0],"q") == NULL && n == 3) + { + g_pinNo = atoi(command[1]); + x = atoi(command[2]); + printf("%s %d %d",command[0],g_pinNo,x); + if(strstr(command[0],"a")) + { + ok = ok + checkRange(S_OK,"anapin",g_pinNo); + ok = ok + checkRange(S_OK,"anaval",x); + g_pinType = ANA; + } + if(strstr(command[0],"d")) + { + ok = ok + checkRange(S_OK,"digpin",g_pinNo); + ok = ok + checkRange(S_OK,"digval",x); + g_pinType = DIG; + } + if(ok == S_OK) + { + g_scenSource = 1; + // steps, source, pintype, pinno, pinvalue, pinstep + sprintf(syscom,"cd servuino;./servuino %d %d %d %d %d %d %d;",confSteps,g_scenSource,g_pinType,g_pinNo,x,currentStep,S_ADD); +putMsg(2,syscom); + tmp=system(syscom); + initSim(); + readSketchInfo(); + readSimulation(); + goStep(currentStep); + readMsg(fileServScen); + } + } + else + putMsg(2,"Cancelled!"); + } */ + else if (ch=='v') + { + step = currentStep ; + res = analyzeEvent(simulation[step]); + sprintf(temp," Pin:%d Enter value to be read at step %d (q - cancel)",g_pinNo,step); + putMsg(2,temp); + + if(res > 0) + { + wgetstr(uno,temp); + + if(strstr(temp,"q") == NULL) + { + x = atoi(temp); + ok = S_OK; + if(res == ANA)ok = ok + checkRange(S_OK,"anaval",x); + if(res == DIG)ok = ok + checkRange(S_OK,"digval",x); + if(ok == S_OK) + { + g_scenSource = 1; + // steps, source, pintype, pinno, pinvalue, pinstep + sprintf(syscom,"cd servuino;./servuino %d %d %d %d %d %d %d;",confSteps,g_scenSource,g_pinType,g_pinNo,x,currentStep,S_ADD); + tmp=system(syscom); + initSim(); + readSketchInfo(); + readSimulation(); + goStep(currentStep); + readMsg(fileServScen); + } + } + else + putMsg(2,"Cancelled!"); + } + else + putMsg(2,"Next step is not a Read event"); + } + else + { + sprintf(temp,"Unknown command: %c",ch); + putMsg(msg_h-2,temp); + } + } + return; +} +//==================================== +int main(int argc, char *argv[]) +//==================================== +{ + char syscom[120]; + int ch,i,x; + + currentStep = 1; + currentLoop = 0; + + + + strcpy(gplFile,"gpl.txt"); + + inrpt[0] = IR0; + inrpt[1] = IR1; + inrpt[2] = IR2; + inrpt[3] = IR3; + inrpt[4] = IR4; + inrpt[5] = IR5; + + + sprintf(syscom,"ls sketchbook/*.ino > %s;",fileProjList); + x=system(syscom); + sprintf(syscom,"rm %s;touch %s;",fileTemp,fileTemp); + x=system(syscom); + sprintf(syscom,"rm %s;touch %s;",fileError,fileError); + x=system(syscom); + sprintf(syscom,"rm %s;touch %s;",fileServError,fileServError); + x=system(syscom); + sprintf(syscom,"rm %s;touch %s;",fileCopyError,fileCopyError); + x=system(syscom); + + err = fopen(fileError,"w"); // Issue 15 + + readSetting(); + readConfig(g_currentSketch); + + + initSim(); + + resetSim(); + + readSimulation(); + + readSketchInfo(); + + setRange(confBoardType); + + init(confWinMode); + + unoInfo(); + show(slog); + + if(confLogFile == S_YES)resetFile("log.txt"); + + readMsg(gplFile); + + openCommand(); + + delwin(uno); + delwin(ser); + delwin(slog); + delwin(msg); + endwin(); + + fclose(err); + +} +//==================================== +// End of file +//==================================== + diff --git a/simuino.h b/simuino.h new file mode 100755 index 0000000..7b6857c --- /dev/null +++ b/simuino.h @@ -0,0 +1,76 @@ +/* Simuino is a Arduino Simulator based on Servuino Engine + Copyright (C) 2011 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +void anyErrors(); +int countRowsInFile(char *fileName); +int analyzeEvent(char *Event); +int readEvent(char *ev, int step); +int readComment(int step); +void mLog0(const char *p); +void wLog0(const char *p); +void mLog1(const char *p, int value1); +void wLog1(const char *p, int value1); +void wLog2(const char *p, int value1, int value2); +void debug(char *msg); +void runMode(int stop); +int runStep(int dir); +void openCommand(); +void iDelay(int ms); +void show(WINDOW *win); +void putMsg(int line,const char *message); +void showError(const char *m, int value); +void saveSetting(); +void resetFile(const char *filename); +void logFile(char *m); +void wLog(const char *p, int value1, int value2); +void unoInfo(); +void wLogChar(const char *p, const char *value1, int value2); +void showSerial(const char *m, int newLine); +void getString(char *in, char *out); +void readSketchInfo(); +void initSim(); +void resetSim(); +void unimplemented(const char *f); +void readConfig(); +void runLoop(); +void runAll(); +void readSimulation(); +void showScenario(char *fileName); +void readMsg(char *fileName); +void init(); +int loadSketch(char sketch[]); +void pinMode(int pin,int mode); +void digitalWrite(int pin,int value); +void analogReference(char type[]); +void analogWrite(int pin,int value); +void tone(int pin, unsigned int freq); +void tone(int pin, unsigned int freq, unsigned long duration); +void noTone(int pin); +void shiftOut(int dataPin, int clockPin, int bitOrder, int value); +void delay(int ms); +void delayMicroseconds(int us); +void test_math(); +void test_trigonometry(); +void randomSeed(int seed); +void attachInterrupt(int interrupt,void(*func)(),int mode); +void detachInterrupt(int interrupt); +void interrupts(); +void noInterrupts(); +int readStatus(); +void readSerial(); +void readTime(); +int goStep(int step); +char *replace_str(char *str, char orig[], char rep[]); diff --git a/simuino_lib.c b/simuino_lib.c new file mode 100755 index 0000000..8aea3d1 --- /dev/null +++ b/simuino_lib.c @@ -0,0 +1,1945 @@ +/* Simuino is a Arduino Simulator based on Servuino Engine + Copyright (C) 2013 Benny Saxen + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +//==================================== +int milliSleep(unsigned long milisec) +//==================================== +{ + struct timespec req={0}; + time_t sec=(int)(milisec/1000); + milisec=milisec-(sec*1000); + req.tv_sec=sec; + req.tv_nsec=milisec*1000000L; + while(nanosleep(&req,&req)==-1) + continue; + return 1; +} + +//==================================== +int microSleep(unsigned long microsec) +//==================================== +{ + struct timespec req={0}; + time_t sec=(int)(microsec/1000000L); + microsec=microsec-(sec*1000000L); + req.tv_sec=sec; + req.tv_nsec=microsec*1000; + while(nanosleep(&req,&req)==-1) + continue; + return 1; +} + +//==================================== +void iDelay(int ms) +//==================================== +{ + milliSleep(ms); +} + +//==================================== +void microDelay(int us) +//==================================== +{ + microSleep(us); +} + +//==================================== +int analyzeEvent(char *event) +//==================================== +{ + int step,pin,value; + char str[80],str1[12],str2[12],*p; + { + if(strstr(event,"analogRead") || strstr(event,"digitalRead")) + { + sscanf(event,"%s %s %s",str,str1,str2); + + p = strstr(str1,"pin="); + p = p+4; + sscanf(p,"%d",&pin); + + p = strstr(str2,"value="); + p = p+6; + sscanf(p,"%d",&value); + + g_pinNo = pin; + g_pinValue = value; + if(strstr(event,"analog")) g_pinType = ANA; + if(strstr(event,"digital")) g_pinType = DIG; + return(g_pinType); + } + return(0); + } +} +//==================================== +void show(WINDOW *win) +//==================================== +{ + int next; + + box(win,0,0); + if(win == uno) + { + wmove(win,0,2); + if(confBoardType ==UNO) + wprintw(win,"SIMUINO - Arduino UNO Pin Analyzer 0.1.9 "); + if(confBoardType ==MEGA) + wprintw(win,"SIMUINO - Arduino MEGA Pin Analyzer 0.1.9 "); + wmove(win,1,2); + wprintw(uno,"Sketch: %s",g_currentSketch); + wmove(win,2,2); + if(g_currentSketchStatus == SO_VOID) wprintw(uno,"Status: - "); + if(g_currentSketchStatus == SO_SELECTED) wprintw(uno,"Status: selected "); + if(g_currentSketchStatus == SO_LOADED) wprintw(uno,"Status: loaded "); + if(g_currentSketchStatus == SO_RUN_ERROR) wprintw(uno,"Status: runtime error"); + if(g_currentSketchStatus == SO_COMP_ERROR)wprintw(uno,"Status: compile error"); + } + if(win == ser) + { + wmove(win,0,2); + wprintw(win,"Serial Interface"); + } + if(win == slog) + { + next = loopPos[currentLoop+1]; + if(currentStep == loopPos[currentLoop+1]) next = loopPos[currentLoop+2]; + wmove(win,0,2); + wprintw(win,"Log "); + if(currentStep == g_steps) + wprintw(slog,"%d,%d ->| (%d,%d)",currentLoop,currentStep,g_loops,g_steps); + else + wprintw(slog,"%d,%d ->%d (%d,%d)",currentLoop,currentStep,next,g_loops,g_steps); + } + if(win == msg) + { + wmove(win,0,2); + wprintw(win,"----------Messages----------"); + } + + wmove(uno,board_h-2,4); + wprintw(uno," "); + wmove(uno,board_h-2,4); + wrefresh(uno); + wrefresh(win); +} + +//==================================== +void putMsg(int line,const char *message) +//==================================== +{ + wclear(msg); + wmove(msg,line,1); + wprintw(msg,message); + show(msg); + return; +} +//==================================== +void errorLog(const char msg[], int x) +//==================================== +{ + showError(msg,x); +} +//==================================== +void showError(const char *m, int value) +//==================================== +{ + char err_msg[300]; + strcpy(err_msg,"SimuinoERROR: "); + strcat(err_msg,m); + fprintf(err,"%s %d\n",err_msg,value,-1); + error = 1; +} + +//==================================== +void saveSetting() +//==================================== +{ + FILE *out; + time_t lt; + + // Store setting + out = fopen("settings.txt","w"); + if(out == NULL) + { + showError("No setting file ",-1); + return; + } + else + { + lt = time(NULL); + fprintf(out,"# Simuino Setting %s",ctime(<)); + fprintf(out,"SKETCH: %s\n",g_currentSketch); + } + fclose(out); +} + +//==================================== +void resetFile(const char *filename) +//==================================== +{ + FILE *out; + time_t lt; + + out = fopen(filename,"w"); + if(out == NULL) + { + showError("Unable to reset file ",-1); + return; + } + else + { + lt = time(NULL); + fprintf(out,"# Simuino Log File %s",ctime(<)); + fclose(out); + } +} + + +//==================================== +void fill(int len,char *p,char c) +//==================================== +{ + int i; + + if(len > 0) + { + for(i=0;i%s%s",simulation[currentStep+1],filler); + for(i=1;i0) + { + fill(log_w-strlen(simulation[k]),filler,' '); + wprintw(slog,"[%d,%d] %s%s",k,stepLoop[k],simulation[k],filler); + } + else + wprintw(slog,"%s",logBlankRow); + } + show(slog); +} + +//==================================== +void winSer() +//==================================== +{ + int i,j,k=0,m=0,prevL=1; + char buf[MAX_STEP][240]; + char filler[120]; + + for(i=1;i<=currentStep;i++) + { + if(strlen(serialM[i]) > 0) + { + if(prevL == 1) //New Line + { + m++; + strcpy(buf[m],serialM[i]); + } + else + strcat(buf[m],serialM[i]); + + prevL = serialL[i]; + } + } + + wmove(ser,1,1); + for(i=1;i0) + { + fill(ser_w-strlen(buf[k]),filler,' '); + wprintw(ser,"%s%s",buf[k],filler); + } + else + wprintw(ser,"%s",logBlankRow); + } + + + show(ser); +} + +//==================================== +void unoInfo() +//==================================== +{ + + wmove(uno,ap+2,3); + + if(g_existError == S_YES) + { + wprintw(uno," [More details - type: err (or e in run-mode)]"); + } + else if(g_warning == S_YES) + { + wprintw(uno," [Load status unknown - load]"); + // g_currentSketchStatus = SO_SELECTED; + } + else + wprintw(uno," "); + + show(uno); +} + +//==================================== +void showLoops() +//==================================== +{ + int i; + wclear(msg); + wmove(msg,1,2); + wprintw(msg," Loop information:"); + for(i=0;i%3d: %4d -> %4d",i,loopPos[i]+1,loopPos[i+1]); + else + wprintw(msg," %3d: %4d -> %4d",i,loopPos[i]+1,loopPos[i+1]); + } + } + show(msg); +} + + +//==================================== +int wCustomLog(char *in, char *out) +//==================================== +{ + char *q,*p; + int pin=0; + + p = strstr(in,":"); + if(p==NULL) + { + showError("Custom Log: Cant find any semicolon",0); + strcpy(out,"Custom : Failed"); + return(0); + } + + p++; + sscanf(p,"%d",&pin); + p = strstr(p,"\""); + if(p==NULL) + { + showError("Custom Log: Cant find first \" ",0); + strcpy(out,"Custom \" Failed"); + return(0); + } + + p++; + q = strstr(p,"\""); + if(q==NULL) + { + showError("Custom Log: Cant find second \" ",0); + strcpy(out,"Custom \" Failed"); + return(0); + } + + strcpy(q,"\0"); + strcpy(out,p); + return(pin); +} + +//==================================== +void getString(char *in, char *out) +//==================================== +{ + char *q,*p; + + p = strstr(in,"'"); + p++; + q = strstr(p,"'"); + strcpy(q,"\0"); + strcpy(out,p); + return; +} + +//==================================== +void readSketchInfo() +//==================================== +{ + FILE *in; + char row[80],res[40],*p,*q,value[5]; + int pin; + + in = fopen(fileServSketch,"r"); + if(in == NULL) + { + showError("No servuino/sketch.ino",-1); + } + else + { + while (fgets(row,80,in)!=NULL) + { + + if(p=strstr(row,"SKETCH_NAME:")) + { + q = strstr(p,":");q++; + sscanf(q,"%s",appName); + } + if(p=strstr(row,"BOARD_TYPE:")) + { + if(strstr(row,"UNO") != NULL) confBoardType = UNO; + if(strstr(row,"MEGA")!= NULL) confBoardType = MEGA; + } + + if(p=strstr(row,"WINDOWLAYOUT:")) + { + q = strstr(p,":");q++; + sscanf(q,"%d",&confWinMode); + } + // if(p=strstr(row,"SO_DELAY:")) + // { + // q = strstr(p,":");q++; + // sscanf(q,"%d",appName); + // } + if(p=strstr(row,"SCENSIMLEN:")) + { + q = strstr(p,":");q++; + sscanf(q,"%d",&confSteps); + } + if(p=strstr(row,"PINMODE_IN:")) + { + pin = wCustomLog(p,res); + strcpy(textPinModeIn[pin],res); + } + if(p=strstr(row,"PINMODE_OUT:")) + { + pin = wCustomLog(p,res); + strcpy(textPinModeOut[pin],res); + } + if(p=strstr(row,"DIGITALWRITE_LOW:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalWriteLow[pin],res); + } + if(p=strstr(row,"DIGITALWRITE_HIGH:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalWriteHigh[pin],res); + } + if(p=strstr(row,"ANALOGREAD:")) + { + pin = wCustomLog(p,res); + strcpy(textAnalogRead[pin],res); + } + if(p=strstr(row,"DIGITALREAD:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalRead[pin],res); + } + if(p=strstr(row,"ANALOGWRITE:")) + { + pin = wCustomLog(p,res); + strcpy(textAnalogWrite[pin],res); + } + } + fclose(in); + } +} + +//==================================== +void initSim() +//==================================== +{ + int i; + + strcpy(appName,"-"); + + for(i=0;i= 0 && currentLoop < g_loops) + { + if(dir == S_FORWARD) + { + tmp = loopPos[currentLoop+1]-1; + while(currentStep < tmp) + { + runStep(S_FORWARD); + } + } + if(dir == S_BACKWARD) + { + tmp = loopPos[currentLoop]-1; + while(currentStep > tmp) + { + runStep(S_BACKWARD); + } + } + } + return; +} + +//==================================== +void runLoops(int targetLoop) +//==================================== +{ + int stop; + targetLoop = checkRange(HEAL,"loop",targetLoop); + while(currentLoop < targetLoop && stop == 0) + { + stop = runStep(S_FORWARD); + } + return; +} + +//==================================== +void runAll(int stop) +//==================================== +{ + int x; + stop = checkRange(HEAL,"step",stop); + + if(currentStep < stop) + { + while(currentStep < stop) + x = runStep(S_FORWARD); + } + + if(currentStep > stop) + { + while(currentStep > stop) + x = runStep(S_BACKWARD); + } + + return; +} + +//==================================== +void endOfSimulation() +//==================================== +{ + wmove(slog,1,1); + wprintw(slog,"%s",logBlankRow); + wscrl(slog,-1); + wmove(slog,1,1); + wprintw(slog,">%s",logBlankRow); + //wmove(slog,2,1); + //wprintw(slog,"-=End of Simulation=-"); + show(slog); + return; +} + +//==================================== +void runNextRead() +//==================================== +{ + char event[120]; + + while (!strstr(event,"digitalRead") && !strstr(event,"analogRead") && currentStep < g_steps) + { + currentStep++; + goStep(currentStep); + strcpy(event,simulation[currentStep]); + } + return; +} + +//==================================== +void runPrevRead() +//==================================== +{ + char event[80]; + + while (!strstr(event,"digitalRead") && !strstr(event,"analogRead") && currentStep > 0) + { + currentStep--; + goStep(currentStep); + strcpy(event,simulation[currentStep]); + } + return; +} + + +//==================================== +void readSimulation() +//==================================== +{ + FILE *in; + char row[SIZE_ROW],*p,temp[SIZE_ROW],junk[5]; + int step=0,loop=0; + + g_steps = 0; + g_loops = 0; + g_comments = 0; + scenAnalog = 0; + scenDigital = 0; + scenInterrupt = 0; + + in = fopen(fileServArduino,"r"); + if(in == NULL) + { + showError("No simulation file",-1); + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + + if(row[0] == '+') + { + //printf("%s",row); + p = strstr(row," ? "); + p = p+3; + g_steps++; + sscanf(row,"%s%d",junk,&step); + if(step == g_steps) + strcpy(simulation[step],p); + else + { + showError(row,step); + showError(row,g_steps); + } + if(p=strstr(row,"servuinoLoop ")) + { + sscanf(p,"%s%d",temp,&loop); + loopPos[loop] = step; + loopStep[loop] = step; + sprintf(simulation[step],"Loop %d",loop); + } + stepLoop[step] = loop; + } + if(row[0] == '=') + { + g_comments++; + p = strstr(row,"= "); + p = p+2; + sscanf(row,"%s%d",junk,&step); + stepComment[0] = g_comments; + if(step == g_steps) + { + stepComment[g_comments] = step; + commentStep[step] = g_comments; + strcat(simComment[g_comments],p); + } + } + + else if(p=strstr(row,"ENDOFSIM")) + { + loop++; + loopPos[loop] = step+1; + loopStep[loop] = step+1; + strcpy(simulation[step+1],"End of Simulation !"); + } + else if(p=strstr(row,"SCENARIODATA")) + { + sscanf(p,"%s%d%d%d",temp,&scenDigital,&scenAnalog,&scenInterrupt); + } + } + + g_loops = loop; + //loopPos[loop] = step; + + readStatus(); + + readSerial(); + + readDebug(); + + readTime(); + + fclose(in); + } + return; +} + +//==================================== +void showScenario(char *fileName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW]; + int i=0; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("Unable to open scenario file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL && i < s_row-1) + { + if(strstr(row,"// SCEN")) + { + i++; + wmove(msg,i,1); + wprintw(msg,row); + } + } + if(i == 0) + { + wmove(msg,1,1); wprintw(msg,"No scenario data in sketch"); + } + show(msg); + fclose(in); + } + return; +} + +//==================================== +void selectProj(int projNo,char *projName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[SIZE_ROW],*p; + int i=0; + + strcpy(projName,fileDefault); + + in = fopen(fileProjList,"r"); + if(in == NULL) + { + showError("Unable to open list file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + i++; + if(i==projNo) + { + sscanf(row,"%s",projName); + g_currentSketchStatus = SO_SELECTED; + } + } + fclose(in); + } + return; +} + +//==================================== +void readMsg(char *fileName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[SIZE_ROW],*p; + int i=0,ch; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("Unable to open msg file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL && ch != 'x') + { + i++; + // If Conf List File + if(strstr(fileName,fileProjList) != NULL) + { + strcpy(temp,row); + //if(p = strstr(temp,".ino")) strcpy(p,"\0"); + if(strstr(row,g_currentSketch)) + sprintf(row,"> %d %s",i,temp); + else + sprintf(row," %d %s",i,temp); + } + if(i < msg_h-2) + { + wmove(msg,i,1); + wprintw(msg,row); + } + else + { + wmove(msg,msg_h-2,1); + wprintw(msg,"press any key (q to quit) >>"); + wrefresh(msg); + ch = getchar(); + if(ch == 'q') + { + fclose(in); + return; + } + wscrl(msg,msg_h-2); + i = 1; + wmove(msg,i,1); + wprintw(msg,row); + } + } + show(msg); + fclose(in); + } + return; +} + +//==================================== +void readFile(char *fileName,int line) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[10]; + int i=0,from,to; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("readFile:Unable to open file",-1); + return; + } + else + { + if(line > msg_h) + { + from = line - msg_h/2; + to = line + msg_h/2; + } + else + { + from = 0; + to = msg_h; + } + if(from < 0)from = 0; + while (fgets(row,SIZE_ROW,in)!=NULL) + { + i++; + if(i > from && i < to) + { + wmove(msg,i,1); + wprintw(msg," "); + if(i==line) + { + sprintf(temp,"[%d]:>",i); + wprintw(msg,temp); + //wmove(msg,i,4); + } + wprintw(msg,row); + } + } + show(msg); + fclose(in); + } + return; +} + + +//==================================== +void init(int mode) +//==================================== +{ + int i,j,k; + + if(confBoardType == UNO) + { + board_w = UNO_W; + board_h = UNO_H; + board_x = 0; + board_y = 0; + } + + if(confBoardType == MEGA) + { + board_w = MEGA_W; + board_h = MEGA_H; + board_x = 0; + board_y = 0; + } + + dp = 5; + ap = board_h - 5; + + g_value = 0; + + // Down + endwin(); + delwin(uno); + delwin(ser); + delwin(slog); + delwin(msg); + + // Up + initscr(); + clear(); + //noecho(); + cbreak(); + + getmaxyx(stdscr,s_row,s_col); + start_color(); + init_pair(1,COLOR_BLACK,COLOR_BLUE); + init_pair(2,COLOR_BLACK,COLOR_GREEN); + init_pair(3,COLOR_BLUE,COLOR_WHITE); + init_pair(4,COLOR_RED,COLOR_WHITE); + init_pair(5,COLOR_MAGENTA,COLOR_WHITE); + init_pair(6,COLOR_WHITE,COLOR_BLACK); + init_pair(7,COLOR_WHITE,COLOR_BLUE); + + /* COLOR_BLACK 0 */ + /* COLOR_RED 1 */ + /* COLOR_GREEN 2 */ + /* COLOR_YELLOW 3 */ + /* COLOR_BLUE 4 */ + /* COLOR_MAGENTA 5 */ + /* COLOR_CYAN 6 */ + /* COLOR_WHITE 7 */ + + // Board Window + uno=newwin(board_h,board_w,board_x,board_y); + wbkgd(uno,COLOR_PAIR(UNO_COLOR)); + //box(uno, 0 , 0); + + wmove(uno,dp-1,RF);waddch(uno,ACS_ULCORNER); + wmove(uno,dp-1,RF+board_w-3);waddch(uno,ACS_URCORNER); + wmove(uno,ap+1,RF);waddch(uno,ACS_LLCORNER); + wmove(uno,ap+1,RF+board_w-3);waddch(uno,ACS_LRCORNER); + for(i=1;i"); + strcpy(sTemp,"\""); + p = replace_str(p,sIn,sTemp); + } + + fprintf(out,"%s",p); + + } + + fclose(out); + fclose(in); + + return; +} +//==================================== +void anyErrors() +//==================================== +{ + int x; + char syscom[200]; + + g_existError = S_NO; + x = system("rm temp.txt"); + sprintf(syscom,"cat %s %s %s> %s",fileError,fileServError,fileCopyError,fileTemp); + x = system(syscom); + x = countRowsInFile(fileTemp); + if(x > 0 && x != 999) + { + g_existError = S_YES; + g_currentSketchStatus = SO_RUN_ERROR; + } + if(x == 999)putMsg(2,"Unable to read error file"); + show(uno); +} + + +//==================================== +int loadSketch(char sketch[]) +//==================================== +{ + int x,ch,res; + char syscom[120]; + + sprintf(syscom,"cp %s %s > %s 2>&1;",sketch,fileServSketch,fileCopyError); + x=system(syscom); + //strcpy(confSketchFile,sketch); + + instrument(sketch,fileServSketch); + + sprintf(syscom,"cd servuino; g++ -O2 -o servuino servuino.c > g++.result 2>&1;"); + x=system(syscom); + + x=countRowsInFile(fileServComp); + if(x > 0) + { + readMsg(fileServComp); + wmove(msg,msg_h-2,1); + wprintw(msg,"press any key to continue >>"); + wrefresh(msg); + ch = getchar(); + putMsg(2,"Check your sketch or report an issue to Simuino"); + return(1); + } + readSketchInfo(); + return(0); +} + +//==================================== +int readScenario() +//==================================== +{ + FILE *in; + char row[SIZE_ROW]; + int step=0,res=0,loop=0; + + in = fopen(fileServArduino,"r"); + if(in == NULL) + { + showError("readScenario: Unable to open file",-1); + return(res); + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + if(row[0] == '+') + { + step++; + strcpy(simulation[step],row); + if(strstr(row,"Loop")) + { + loop++; + loopPos[loop] = step; + loopStep[loop] = step; + } + stepLoop[step] = loop; + //printf("%s\n",row); + } + } + fclose(in); + g_steps = step; + g_loops = loop; + res = step; + } + return(res); +} + +//==================================== +void readTime() +//==================================== +{ + FILE *in; + char row[SIZE_ROW],junk[10]; + int i,step,delay; + + + for(i=0;i 0) + wprintw(uno,"%4d",value); + else + wprintw(uno," -",value); + } + + // Action event + for(pin=0;pin. +*/ + + +//==================================== +int milliSleep(unsigned long milisec) +//==================================== +{ + struct timespec req={0}; + time_t sec=(int)(milisec/1000); + milisec=milisec-(sec*1000); + req.tv_sec=sec; + req.tv_nsec=milisec*1000000L; + while(nanosleep(&req,&req)==-1) + continue; + return 1; +} + +//==================================== +int microSleep(unsigned long microsec) +//==================================== +{ + struct timespec req={0}; + time_t sec=(int)(microsec/1000000L); + microsec=microsec-(sec*1000000L); + req.tv_sec=sec; + req.tv_nsec=microsec*1000; + while(nanosleep(&req,&req)==-1) + continue; + return 1; +} + +//==================================== +void iDelay(int ms) +//==================================== +{ + milliSleep(ms); +} + +//==================================== +void microDelay(int us) +//==================================== +{ + microSleep(us); +} + +//==================================== +int analyzeEvent(char *event) +//==================================== +{ + int step,pin,value; + char str[80],str1[12],str2[12],*p; + { + if(strstr(event,"analogRead") || strstr(event,"digitalRead")) + { + sscanf(event,"%s %s %s",str,str1,str2); + + p = strstr(str1,"pin="); + p = p+4; + sscanf(p,"%d",&pin); + + p = strstr(str2,"value="); + p = p+6; + sscanf(p,"%d",&value); + + g_pinNo = pin; + g_pinValue = value; + if(strstr(event,"analog")) g_pinType = ANA; + if(strstr(event,"digital")) g_pinType = DIG; + return(g_pinType); + } + return(0); + } +} +//==================================== +void show(WINDOW *win) +//==================================== +{ + int next; + + box(win,0,0); + if(win == uno) + { + wmove(win,0,2); + if(confBoardType ==UNO) + wprintw(win,"SIMUINO - Arduino UNO Pin Analyzer 0.1.8 "); + if(confBoardType ==MEGA) + wprintw(win,"SIMUINO - Arduino MEGA Pin Analyzer 0.1.8 "); + wmove(win,1,2); + wprintw(uno,"Sketch: %s",g_currentSketch); + wmove(win,2,2); + if(g_currentSketchStatus == SO_VOID) wprintw(uno,"Status: - "); + if(g_currentSketchStatus == SO_SELECTED) wprintw(uno,"Status: selected "); + if(g_currentSketchStatus == SO_LOADED) wprintw(uno,"Status: loaded "); + if(g_currentSketchStatus == SO_RUN_ERROR) wprintw(uno,"Status: runtime error"); + if(g_currentSketchStatus == SO_COMP_ERROR)wprintw(uno,"Status: compile error"); + } + if(win == ser) + { + wmove(win,0,2); + wprintw(win,"Serial Interface"); + } + if(win == slog) + { + next = loopPos[currentLoop+1]; + if(currentStep == loopPos[currentLoop+1]) next = loopPos[currentLoop+2]; + wmove(win,0,2); + wprintw(win,"Log "); + if(currentStep == g_steps) + wprintw(slog,"%d,%d ->| (%d,%d)",currentLoop,currentStep,g_loops,g_steps); + else + wprintw(slog,"%d,%d ->%d (%d,%d)",currentLoop,currentStep,next,g_loops,g_steps); + } + if(win == msg) + { + wmove(win,0,2); + wprintw(win,"----------Messages----------"); + } + + wmove(uno,board_h-2,4); + wprintw(uno," "); + wmove(uno,board_h-2,4); + wrefresh(uno); + wrefresh(win); +} + +//==================================== +void putMsg(int line,const char *message) +//==================================== +{ + wclear(msg); + wmove(msg,line,1); + wprintw(msg,message); + show(msg); + return; +} +//==================================== +void errorLog(const char msg[], int x) +//==================================== +{ + showError(msg,x); +} +//==================================== +void showError(const char *m, int value) +//==================================== +{ + char err_msg[300]; + strcpy(err_msg,"SimuinoERROR: "); + strcat(err_msg,m); + fprintf(err,"%s %d\n",err_msg,value,-1); + error = 1; +} + +//==================================== +void saveSetting() +//==================================== +{ + FILE *out; + time_t lt; + + // Store setting + out = fopen("settings.txt","w"); + if(out == NULL) + { + showError("No setting file ",-1); + return; + } + else + { + lt = time(NULL); + fprintf(out,"# Simuino Setting %s",ctime(<)); + fprintf(out,"SKETCH: %s\n",g_currentSketch); + } + fclose(out); +} + +//==================================== +void resetFile(const char *filename) +//==================================== +{ + FILE *out; + time_t lt; + + out = fopen(filename,"w"); + if(out == NULL) + { + showError("Unable to reset file ",-1); + return; + } + else + { + lt = time(NULL); + fprintf(out,"# Simuino Log File %s",ctime(<)); + fclose(out); + } +} + + +//==================================== +void fill(int len,char *p,char c) +//==================================== +{ + int i; + + if(len > 0) + { + for(i=0;i%s%s",simulation[currentStep+1],filler); + for(i=1;i0) + { + fill(log_w-strlen(simulation[k]),filler,' '); + wprintw(slog,"[%d,%d] %s%s",k,stepLoop[k],simulation[k],filler); + } + else + wprintw(slog,"%s",logBlankRow); + } + show(slog); +} + +//==================================== +void winSer() +//==================================== +{ + int i,j,k=0,m=0,prevL=1; + char buf[MAX_STEP][240]; + char filler[120]; + + for(i=1;i<=currentStep;i++) + { + if(strlen(serialM[i]) > 0) + { + if(prevL == 1) //New Line + { + m++; + strcpy(buf[m],serialM[i]); + } + else + strcat(buf[m],serialM[i]); + + prevL = serialL[i]; + } + } + + wmove(ser,1,1); + for(i=1;i0) + { + fill(ser_w-strlen(buf[k]),filler,' '); + wprintw(ser,"%s%s",buf[k],filler); + } + else + wprintw(ser,"%s",logBlankRow); + } + + + show(ser); +} + +//==================================== +void unoInfo() +//==================================== +{ + + wmove(uno,ap+2,3); + + if(g_existError == S_YES) + { + wprintw(uno," [More details - type: err (or e in run-mode)]"); + } + else if(g_warning == S_YES) + { + wprintw(uno," [Load status unknown - load]"); + // g_currentSketchStatus = SO_SELECTED; + } + else + wprintw(uno," "); + + show(uno); +} + +//==================================== +void showLoops() +//==================================== +{ + int i; + wclear(msg); + wmove(msg,1,2); + wprintw(msg," Loop information:"); + for(i=0;i%3d: %4d -> %4d",i,loopPos[i]+1,loopPos[i+1]); + else + wprintw(msg," %3d: %4d -> %4d",i,loopPos[i]+1,loopPos[i+1]); + } + } + show(msg); +} + + +//==================================== +int wCustomLog(char *in, char *out) +//==================================== +{ + char *q,*p; + int pin=0; + + p = strstr(in,":"); + if(p==NULL) + { + showError("Custom Log: Cant find any semicolon",0); + strcpy(out,"Custom : Failed"); + return(0); + } + + p++; + sscanf(p,"%d",&pin); + p = strstr(p,"\""); + if(p==NULL) + { + showError("Custom Log: Cant find first \" ",0); + strcpy(out,"Custom \" Failed"); + return(0); + } + + p++; + q = strstr(p,"\""); + if(q==NULL) + { + showError("Custom Log: Cant find second \" ",0); + strcpy(out,"Custom \" Failed"); + return(0); + } + + strcpy(q,"\0"); + strcpy(out,p); + return(pin); +} + +//==================================== +void getString(char *in, char *out) +//==================================== +{ + char *q,*p; + + p = strstr(in,"'"); + p++; + q = strstr(p,"'"); + strcpy(q,"\0"); + strcpy(out,p); + return; +} + +//==================================== +void readSketchInfo() +//==================================== +{ + FILE *in; + char row[80],res[40],*p,*q,value[5]; + int pin; + + in = fopen(fileServSketch,"r"); + if(in == NULL) + { + showError("No servuino/sketch.ino",-1); + } + else + { + while (fgets(row,80,in)!=NULL) + { + + if(p=strstr(row,"SKETCH_NAME:")) + { + q = strstr(p,":");q++; + sscanf(q,"%s",appName); + } + if(p=strstr(row,"BOARD_TYPE:")) + { + if(strstr(row,"UNO") != NULL) confBoardType = UNO; + if(strstr(row,"MEGA")!= NULL) confBoardType = MEGA; + } + + if(p=strstr(row,"WINDOWLAYOUT:")) + { + q = strstr(p,":");q++; + sscanf(q,"%d",&confWinMode); + } + // if(p=strstr(row,"SO_DELAY:")) + // { + // q = strstr(p,":");q++; + // sscanf(q,"%d",appName); + // } + if(p=strstr(row,"SCENSIMLEN:")) + { + q = strstr(p,":");q++; + sscanf(q,"%d",&confSteps); + } + if(p=strstr(row,"PINMODE_IN:")) + { + pin = wCustomLog(p,res); + strcpy(textPinModeIn[pin],res); + } + if(p=strstr(row,"PINMODE_OUT:")) + { + pin = wCustomLog(p,res); + strcpy(textPinModeOut[pin],res); + } + if(p=strstr(row,"DIGITALWRITE_LOW:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalWriteLow[pin],res); + } + if(p=strstr(row,"DIGITALWRITE_HIGH:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalWriteHigh[pin],res); + } + if(p=strstr(row,"ANALOGREAD:")) + { + pin = wCustomLog(p,res); + strcpy(textAnalogRead[pin],res); + } + if(p=strstr(row,"DIGITALREAD:")) + { + pin = wCustomLog(p,res); + strcpy(textDigitalRead[pin],res); + } + if(p=strstr(row,"ANALOGWRITE:")) + { + pin = wCustomLog(p,res); + strcpy(textAnalogWrite[pin],res); + } + } + fclose(in); + } +} + +//==================================== +void initSim() +//==================================== +{ + int i; + + strcpy(appName,"-"); + + for(i=0;i= 0 && currentLoop < g_loops) + { + if(dir == S_FORWARD) + { + tmp = loopPos[currentLoop+1]-1; + while(currentStep < tmp) + { + runStep(S_FORWARD); + } + } + if(dir == S_BACKWARD) + { + tmp = loopPos[currentLoop]-1; + while(currentStep > tmp) + { + runStep(S_BACKWARD); + } + } + } + return; +} + +//==================================== +void runLoops(int targetLoop) +//==================================== +{ + int stop; + targetLoop = checkRange(HEAL,"loop",targetLoop); + while(currentLoop < targetLoop && stop == 0) + { + stop = runStep(S_FORWARD); + } + return; +} + +//==================================== +void runAll(int stop) +//==================================== +{ + int x; + stop = checkRange(HEAL,"step",stop); + + if(currentStep < stop) + { + while(currentStep < stop) + x = runStep(S_FORWARD); + } + + if(currentStep > stop) + { + while(currentStep > stop) + x = runStep(S_BACKWARD); + } + + return; +} + +//==================================== +void endOfSimulation() +//==================================== +{ + wmove(slog,1,1); + wprintw(slog,"%s",logBlankRow); + wscrl(slog,-1); + wmove(slog,1,1); + wprintw(slog,">%s",logBlankRow); + //wmove(slog,2,1); + //wprintw(slog,"-=End of Simulation=-"); + show(slog); + return; +} + +//==================================== +void runNextRead() +//==================================== +{ + char event[120]; + + while (!strstr(event,"digitalRead") && !strstr(event,"analogRead") && currentStep < g_steps) + { + currentStep++; + goStep(currentStep); + strcpy(event,simulation[currentStep]); + } + return; +} + +//==================================== +void runPrevRead() +//==================================== +{ + char event[80]; + + while (!strstr(event,"digitalRead") && !strstr(event,"analogRead") && currentStep > 0) + { + currentStep--; + goStep(currentStep); + strcpy(event,simulation[currentStep]); + } + return; +} + + +//==================================== +void readSimulation() +//==================================== +{ + FILE *in; + char row[SIZE_ROW],*p,temp[SIZE_ROW],junk[5]; + int step=0,loop=0; + + g_steps = 0; + g_loops = 0; + g_comments = 0; + scenAnalog = 0; + scenDigital = 0; + scenInterrupt = 0; + + in = fopen(fileServArduino,"r"); + if(in == NULL) + { + showError("No simulation file",-1); + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + + if(row[0] == '+') + { + //printf("%s",row); + p = strstr(row," ? "); + p = p+3; + g_steps++; + sscanf(row,"%s%d",junk,&step); + if(step == g_steps) + strcpy(simulation[step],p); + else + { + showError(row,step); + showError(row,g_steps); + } + if(p=strstr(row,"servuinoLoop ")) + { + sscanf(p,"%s%d",temp,&loop); + loopPos[loop] = step; + loopStep[loop] = step; + sprintf(simulation[step],"Loop %d",loop); + } + stepLoop[step] = loop; + } + if(row[0] == '=') + { + g_comments++; + p = strstr(row,"= "); + p = p+2; + sscanf(row,"%s%d",junk,&step); + stepComment[0] = g_comments; + if(step == g_steps) + { + stepComment[g_comments] = step; + commentStep[step] = g_comments; + strcat(simComment[g_comments],p); + } + } + + else if(p=strstr(row,"ENDOFSIM")) + { + loop++; + loopPos[loop] = step+1; + loopStep[loop] = step+1; + strcpy(simulation[step+1],"End of Simulation !"); + } + else if(p=strstr(row,"SCENARIODATA")) + { + sscanf(p,"%s%d%d%d",temp,&scenDigital,&scenAnalog,&scenInterrupt); + } + } + + g_loops = loop; + //loopPos[loop] = step; + + readStatus(); + + readSerial(); + + readDebug(); + + readTime(); + + fclose(in); + } + return; +} + +//==================================== +void showScenario(char *fileName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW]; + int i=0; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("Unable to open scenario file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL && i < s_row-1) + { + if(strstr(row,"// SCEN")) + { + i++; + wmove(msg,i,1); + wprintw(msg,row); + } + } + if(i == 0) + { + wmove(msg,1,1); wprintw(msg,"No scenario data in sketch"); + } + show(msg); + fclose(in); + } + return; +} + +//==================================== +void selectProj(int projNo,char *projName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[SIZE_ROW],*p; + int i=0; + + strcpy(projName,fileDefault); + + in = fopen(fileProjList,"r"); + if(in == NULL) + { + showError("Unable to open list file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + i++; + if(i==projNo) + { + sscanf(row,"%s",projName); + g_currentSketchStatus = SO_SELECTED; + } + } + fclose(in); + } + return; +} + +//==================================== +void readMsg(char *fileName) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[SIZE_ROW],*p; + int i=0,ch; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("Unable to open msg file",-1); + return; + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL && ch != 'x') + { + i++; + // If Conf List File + if(strstr(fileName,fileProjList) != NULL) + { + strcpy(temp,row); + //if(p = strstr(temp,".ino")) strcpy(p,"\0"); + if(strstr(row,g_currentSketch)) + sprintf(row,"> %d %s",i,temp); + else + sprintf(row," %d %s",i,temp); + } + if(i < msg_h-2) + { + wmove(msg,i,1); + wprintw(msg,row); + } + else + { + wmove(msg,msg_h-2,1); + wprintw(msg,"press any key (q to quit) >>"); + wrefresh(msg); + ch = getchar(); + if(ch == 'q') + { + fclose(in); + return; + } + wscrl(msg,msg_h-2); + i = 1; + wmove(msg,i,1); + wprintw(msg,row); + } + } + show(msg); + fclose(in); + } + return; +} + +//==================================== +void readFile(char *fileName,int line) +//==================================== +{ + FILE *in; + char row[SIZE_ROW],temp[10]; + int i=0,from,to; + + wclear(msg); + in = fopen(fileName,"r"); + if(in == NULL) + { + showError("readFile:Unable to open file",-1); + return; + } + else + { + if(line > msg_h) + { + from = line - msg_h/2; + to = line + msg_h/2; + } + else + { + from = 0; + to = msg_h; + } + if(from < 0)from = 0; + while (fgets(row,SIZE_ROW,in)!=NULL) + { + i++; + if(i > from && i < to) + { + wmove(msg,i,1); + wprintw(msg," "); + if(i==line) + { + sprintf(temp,"[%d]:>",i); + wprintw(msg,temp); + //wmove(msg,i,4); + } + wprintw(msg,row); + } + } + show(msg); + fclose(in); + } + return; +} + + +//==================================== +void init(int mode) +//==================================== +{ + int i,j,k; + + if(confBoardType == UNO) + { + board_w = UNO_W; + board_h = UNO_H; + board_x = 0; + board_y = 0; + } + + if(confBoardType == MEGA) + { + board_w = MEGA_W; + board_h = MEGA_H; + board_x = 0; + board_y = 0; + } + + dp = 5; + ap = board_h - 5; + + g_value = 0; + + // Down + endwin(); + delwin(uno); + delwin(ser); + delwin(slog); + delwin(msg); + + // Up + initscr(); + clear(); + //noecho(); + cbreak(); + + getmaxyx(stdscr,s_row,s_col); + start_color(); + init_pair(1,COLOR_BLACK,COLOR_BLUE); + init_pair(2,COLOR_BLACK,COLOR_GREEN); + init_pair(3,COLOR_BLUE,COLOR_WHITE); + init_pair(4,COLOR_RED,COLOR_WHITE); + init_pair(5,COLOR_MAGENTA,COLOR_WHITE); + init_pair(6,COLOR_WHITE,COLOR_BLACK); + init_pair(7,COLOR_WHITE,COLOR_BLUE); + + /* COLOR_BLACK 0 */ + /* COLOR_RED 1 */ + /* COLOR_GREEN 2 */ + /* COLOR_YELLOW 3 */ + /* COLOR_BLUE 4 */ + /* COLOR_MAGENTA 5 */ + /* COLOR_CYAN 6 */ + /* COLOR_WHITE 7 */ + + // Board Window + uno=newwin(board_h,board_w,board_x,board_y); + wbkgd(uno,COLOR_PAIR(UNO_COLOR)); + //box(uno, 0 , 0); + + wmove(uno,dp-1,RF);waddch(uno,ACS_ULCORNER); + wmove(uno,dp-1,RF+board_w-3);waddch(uno,ACS_URCORNER); + wmove(uno,ap+1,RF);waddch(uno,ACS_LLCORNER); + wmove(uno,ap+1,RF+board_w-3);waddch(uno,ACS_LRCORNER); + for(i=1;i"); + strcpy(sTemp,"\""); + p = replace_str(p,sIn,sTemp); + } + + fprintf(out,"%s",p); + + } + + fclose(out); + fclose(in); + + return; +} +//==================================== +void anyErrors() +//==================================== +{ + int x; + char syscom[200]; + + g_existError = S_NO; + x = system("rm temp.txt"); + sprintf(syscom,"cat %s %s %s> %s",fileError,fileServError,fileCopyError,fileTemp); + x = system(syscom); + x = countRowsInFile(fileTemp); + if(x > 0 && x != 999) + { + g_existError = S_YES; + g_currentSketchStatus = SO_RUN_ERROR; + } + if(x == 999)putMsg(2,"Unable to read error file"); + show(uno); +} + + +//==================================== +int loadSketch(char sketch[]) +//==================================== +{ + int x,ch,res; + char syscom[120]; + + sprintf(syscom,"cp %s %s > %s 2>&1;",sketch,fileServSketch,fileCopyError); + x=system(syscom); + //strcpy(confSketchFile,sketch); + + instrument(sketch,fileServSketch); + + sprintf(syscom,"cd servuino; g++ -O2 -o servuino servuino.c > g++.result 2>&1;"); + x=system(syscom); + + x=countRowsInFile(fileServComp); + if(x > 0) + { + readMsg(fileServComp); + wmove(msg,msg_h-2,1); + wprintw(msg,"press any key to continue >>"); + wrefresh(msg); + ch = getchar(); + putMsg(2,"Check your sketch or report an issue to Simuino"); + return(1); + } + readSketchInfo(); + return(0); +} + +//==================================== +int readScenario() +//==================================== +{ + FILE *in; + char row[SIZE_ROW]; + int step=0,res=0,loop=0; + + in = fopen(fileServArduino,"r"); + if(in == NULL) + { + showError("readScenario: Unable to open file",-1); + return(res); + } + else + { + while (fgets(row,SIZE_ROW,in)!=NULL) + { + if(row[0] == '+') + { + step++; + strcpy(simulation[step],row); + if(strstr(row,"Loop")) + { + loop++; + loopPos[loop] = step; + loopStep[loop] = step; + } + stepLoop[step] = loop; + //printf("%s\n",row); + } + } + fclose(in); + g_steps = step; + g_loops = loop; + res = step; + } + return(res); +} + +//==================================== +void readTime() +//==================================== +{ + FILE *in; + char row[SIZE_ROW],junk[10]; + int i,step,delay; + + + for(i=0;i 0) + wprintw(uno,"%4d",value); + else + wprintw(uno," -",value); + } + + // Action event + for(pin=0;pin +// Leds +int URGENTLED = 11; +int BLINKLED = 12; +int IN_PIN = 10; +int CONTROL = 9; + +//-------- ANALOGUE PIN settings +int SENSOR1 = 4; +int SENSOR2 = 5; + +//================================================ +// Function Declarations +//================================================ + +void blinkLed(int n); + +//================================================ +void urgent() +//================================================ +{ + digitalWrite(URGENTLED, HIGH); + delay(401); + digitalWrite(URGENTLED, LOW); +} +//================================================ +void very_urgent() +//================================================ +{ + digitalWrite(URGENTLED, HIGH); + delay(402); + digitalWrite(URGENTLED, LOW); +} +//================================================ +void setup() +//================================================ +{ + Serial.begin(9600); + attachInterrupt(0,urgent, CHANGE); + attachInterrupt(1,very_urgent, RISING); + pinMode(BLINKLED,OUTPUT); + pinMode(URGENTLED,OUTPUT); + pinMode(IN_PIN,INPUT); + pinMode(CONTROL,INPUT); +} + +//================================================ +void loop() +//================================================ +{ + int value1,value2,i; + + Serial.println("Hello Simuino!"); + value1 = analogRead(SENSOR1); + value2 = analogRead(SENSOR2); + Serial.print("Analog 1 value read: "); + Serial.println(value1); + Serial.print("Analog 2 value read: "); + Serial.println(value2); + blinkLed(value1); + value1 = digitalRead(IN_PIN); + value2 = digitalRead(CONTROL); + Serial.print("Digital IN_PIN read: "); + Serial.println(value1); + Serial.print("Digital CONTROL read: "); + Serial.println(value2); + + delay(1000); + EEPROM.write(55,120); + int lue = EEPROM.read(55); + Serial.print("EEPROM value is: "); + Serial.println(lue); +} + +//================================================ +void blinkLed(int n) +//================================================ +{ + int i; + for(i=1;i<=10;i++) + { + digitalWrite(BLINKLED, HIGH); + delay(500); + digitalWrite(BLINKLED, LOW); + } +} +//================================================ +// End of Sketch +//================================================ diff --git a/temp.txt b/temp.txt new file mode 100644 index 0000000..e69de29