Whats wrong with this?

I found this code on youtube, in the video the system seems to work really really well. Heres the code he supplied but when I compile it I get this error:
sketch_jan26a:145: error: stray '' in program
sketch_jan26a:145: error: expected constructor, destructor, or type conversion at end of input

I know its something simple and I'll probably be embarrassed when you find it!

#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 177 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

String inString = String(35);

String CHANNEL;

String name[] = {"null","KITCHEN","LIVING ROOM","HALL","CLOSET","BEDROOM","OFFICE"};
//Pins 10, 11, 12 and 13 are reserved for Ethernet module. 
int old[] = {00,0,0,0,0,0,0};//old switch value
int swch[] = {00,A0,A1,A2,A3,A4,A5};//switch input pins
int arm = 8;//away armed input pin
int armed =0;//value of 1 when armed

int CHANNELpin[] = {00, 2, 3, 4 ,5 ,6 ,7}; //CHANNEL output pins. 00 is null pin
int numofCHANNELs = 6; //number of channels
String value[] = {"off","off","off","off","off","off","off"}; //startup all CHANNELs are off

EthernetServer server(80);
String data;
int debounce = 200;
void setup(){
  Serial.begin(9600);
  Ethernet.begin(mac, ip,gateway,subnet); 
  server.begin();
  
 //set pin mode
  for (int j = 1; j < (numofCHANNELs + 1); j++){
    pinMode(CHANNELpin[j], OUTPUT);
  }
  
  pinMode(arm, INPUT);
  Serial.println("Serial READY");
  Serial.println("Ethernet READY");
  Serial.println("Server READY");
}

void loop(){
  EthernetClient client = server.available();
  
  
  //test for internal switching
  for(int i=1;i < (numofCHANNELs + 1) ;i++){
  if(digitalRead(swch[i])==!old[i]){
    delay(debounce);
    if(digitalRead(swch[i])==!old[i]){
    if(value[i] == "on"){
      digitalWrite(CHANNELpin[i], LOW);
      value[i] = "off";
      Serial.println(name[i]+" OFF Internal");
    }
    else if(value[i] == "off"){
      digitalWrite(CHANNELpin[i], HIGH);
      value[i] = "on";
      Serial.println(name[i]+" ON Internal");
    }
    }
    old[i] = digitalRead(swch[i]);
  }
  }


  if(client){
    boolean current_line_is_blank = true;
    while (client.connected()) {
     if(client.available()) {
      char c = client.read();
        if (inString.length() < 35) {
            inString.concat(c);
         } 
        if (c == '\n' && current_line_is_blank) {
// send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><body><form method=get>");
//          client.println("<p><font size=7>Locust Home Lighting Controller</p>"); this is the header not used
         
         for(int i=1;i < (numofCHANNELs + 1) ;i++){ 
           CHANNEL = String("CHANNEL") + i;
           
          if(inString.indexOf(CHANNEL+"=off")>0 || inString.indexOf("all=on")>0){
            Serial.println(name[i]+" ON Ethernet");
            digitalWrite(CHANNELpin[i], HIGH);
            value[i] = "on"; 
          }else if(inString.indexOf(CHANNEL+"=on")>0 || inString.indexOf("all=off")>0 ){          
            Serial.println(name[i]+" OFF Ethernet");
            digitalWrite(CHANNELpin[i], LOW);
            value[i] = "off";
          }
          //if statments to change color of radio button
          if((value[i])== "on"){ //changes to yellow background if on
           client.println("
<font size=7><input type=submit style=background-color:yellow;width:150px;height:60px;font-size:50px name="+CHANNEL+" value="+value[i]+" >  "+name[i]+"");
         }
         else if((value[i])== "off"){ //normal background if off
           client.println("
<font size=7><input type=submit style=width:150px;height:60px;font-size:50px name="+CHANNEL+" value="+value[i]+" >  "+name[i]+"");
         }
         }
         client.println("
<font size=7>All <input type=submit style=width:150px;height:60px;font-size:50px name=all value=off><input type=submit style=width:150px;height:60px;font-size:50px name=all value=on>");
         client.println("</from></html></body>");
          break;
        }
        if (c == '\n') {
          // we're starting a new line
          current_line_is_blank = true;
        } else if (c != '\r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    inString = "";
    client.stop();
  }
  
  
  //away arm program to turn lights off
    if(digitalRead(arm)==HIGH){
    delay(500);
    if(digitalRead(arm)==HIGH){
      for(int i=1;i < (numofCHANNELs + 1) ;i++){
        digitalWrite(CHANNELpin[i], LOW);
        value[i]= "off";
        armed= 1;
      }
    }
  }
  //away arm program to turn lights back on
  else if(digitalRead(arm)==LOW && armed==1){
    for(int i=1;i < (numofCHANNELs + 1) ;i++){
        digitalWrite(CHANNELpin[i], HIGH);
        value[i]= "on";
        armed= 0;
    }
  }
  
  
  delay(5);  //keeps arduino loops running at a slower speed
}

when i copied this into the Arduino IDE just after the last } a dot appears. not a full stop not an apostrophe im not sure what it is but after removing it the code verified

I cannot believe it! :-[ Thanks!

I had nothing display after the last } not even a blank space however when I pressed the backspace the } didn't disappear and it complied!

This is now solved!

HA sometimes answer can be so simple we dont see it

The simplicity or lack thereof of the answer has nothing to do with why it wasn't seen.

This is classic bullshit, where you get a non-printing, invisible character (if ascii, some char code over 127) in your code, and you can't see it, but the compiler can.

Very irritating. Your finer editors will show these non-printing characters, but even then they often get displayed as spaces (so they look like harmless whitespace). Does anyone know a way to make these characters display and show a symbol that makes it clear that there's a something there, and it's not a space?

I've run into characters like this in my source files twice in the past few months, and I've yet to figure out how or when they got there (there was no accompanying damage to the file - nothing was deleted)