function Weblink_Device_StarterConf(conf){
	var that = this;
	if(typeof(conf)!='string'){throw new InvalidConfigurationException('Provided string is invalid configuration');}
	var config = {};
	if(((/^((0x)[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2},)*((0x)[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2})$/).test(conf))){
		var arr = conf.split(',');
		for(var x=0; x<arr.length; x++){
			var line = arr[x].split(':');
			config[new String(line[0].replace('0x',''))] = new String(line[1]);
		}
	} else if(((/^([a-fA-F0-9]{4},)*([a-fA-F0-9]{4})$/).test(conf))){
		var arr = conf.split(',');
		for(var x=0; x<arr.length; x++){
			var line = [arr[x].slice(0,2),arr[x].slice(2,4)];
			config[new String(line[0])] = new String(line[1]);
		}
	} else {
		throw new InvalidConfigurationException('Provided string is invalid configuration');
	}

	var configString = new String(conf);
	var changes = {};
	this.setState = function(ft,st){
		changes[ft] = st;
	};
	this.getChanges = function(){
		var arr = new Array();
		for(x in changes){
			if(typeof(changes[x])!="undefined"){
				arr.push(x+":"+changes[x]);
			}
		}
		
		return arr.join(',');
	};
	this.resetChanges = function(){
		return changes;
	};
	this.toRead = function(){
		var arr = new Array();
		for(x in config){
			arr.push("0x"+x+":"+config[x]);
		}
		return arr.join(',');
	};
	this.toWrite = function(){
		var arr = new Array();
		for(x in config){
			arr.push(x+""+config[x]);
		}
		return arr.join(',');
	};
	this.toMap = function(){
		return config;
	}
	this.toString = function(){
		return that.toRead();
	};
}