[Android Software/Hacking General [Developers Only]] bawffg85:
There is a syntax error in my aroma-config,which is on line 331, column 2,but I really can't find the key to the problem.Anyone chould help me?

### LICENSE:
#
# Copyright (C) 2011 Ahmad Amarullah ( http://amarullz.com/ )
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
### FILE INFO:
#
# AROMA Installer 2.00 - AROMA Installer Test Script Configuration
# (c) 2011-2012 by Ahmad Amarullah
# amarullz - xda-developers
# http://www.amarullz.com/
#
# Binary Version : 2.00
# Binary Codename : Dahlia
#
### INFO:
#
# * AROMA Resource Dir = META-INF/com/google/android/aroma
#
# * AROMA Temporary Dir = /tmp/aroma/
#
# * About Icon = @alert - show <AROMA Resource Dir>/icons/alert.png
# or if theme used it will find <themedir>/icon.alert.png
# you can still access it via "icons/alert"
#
# * dp = Device Pixelate. WVGA/QHD = 3, HVGA = 2.
# dp calculated with = round(min(width,height) / 160)
#
###

##
# Fix Colorspace Issue
#
# For device which have a problem with color ( not display the correct color )
# try to set "force_colorspace" with ini_set. It may caused by wrong framebuffer
# information that passed by kernel into framebuffer device.
#
# You can use one of following values:
# "rgba", "abgr", "argb", "bgra"
#
# NOTE: It must be in top most script, or you will got the color flicker
#
# ini_set("force_colorspace","rgba");
#

##
# Forcing Device Pixelate Size
# defaut: floor( min( width, height ) / 160 )
#
# Usefull for tablet device, if interface was too big, you can
# force dp size for smaller UI size.
#
#-------- Uncomment one of this to use custom dp size:
#
# ini_set("dp","1"); #-- LDPI ( 240x320 / QVGA )
# ini_set("dp","2"); #-- MDPI ( 340x480 / HVGA )
# ini_set("dp","3"); #-- HDPI ( 480x800 / WVGA )
# ini_set("dp","4");
# ini_set("dp","5");
#

##
# Calibrate Touchscreen
# defaut: HTC Desire Touch Screen Calibrate Data [7.90,20,7.90,20]
#
# For other device, run the installer, then press "menu"
# and select Calibrating Tools. Follow Instructions, and make
# sure the touch screen has been valid in the testing step.
#
# In the end, there will be alert dialog with calibration data
# ( green ), replace this calibrate() function with that data.
#
#-------- Uncomment This to insert calibrating data:
# calibrate("7.90","20","7.90","20");
#

##
# Custom Key Code - Usefull For Some Device which not used
# Standard key code for up/down/select/back/menu
#
# You can capture the keycode in
# recovery using "aroma-keycapture-flashable.zip" Available in
# AROMA Installer Thread.
#
# Press some key when it run, it will return key code,
# that key can override up/down/select/back/menu actions in
# AROMA Installer, you can even set your home key for up, or
# volume down for select item
#
#-------- Uncomment & Modify this Code:
#
# ini_set("customkeycode_up", "115");
# ini_set("customkeycode_down", "114");
# ini_set("customkeycode_select", "116");
# ini_set("customkeycode_menu", "229");
# ini_set("customkeycode_back", "158");
#

##
# Initializing Rom Information
#
ini_set("rom_name", "Bawffg ROM");
ini_set("rom_version", "XDMB6 1.0");
ini_set("rom_author", "bawffg");
ini_set("rom_device", "Note2 Lte");
ini_set("rom_date", "2013-04-05");

##
# Show Simple Splash
#
splash(
#-- Duration 2000ms / 2 seconds
5000,

#-- <AROMA Resource Dir>/default.png
"default"
);

##
# Show Calibrating Tools Directly before show any UI
#
#--- Remove this calibtool if you already know the calibrate data
#calibtool("");
#calibrate("0.9185","42","0.9284", "44", "yes");
calibrate_matrix(
"119350.00", "1610.00", "-640755.00", "5740.00",
"121100.00", "-134550.00", "122823.50", "0"
);

#
# Set Small Font to Support all fonts
#
loadlang("langs/cn.lang");
fontresload( "0", "ttf/DroidSansFallback.ttf;ttf/DroidSans.ttf", "12" ); #-- Use sets of font (Font Family)
fontresload( "1", "ttf/DroidSansFallback.ttf;ttf/DroidSans.ttf", "18" );

##
# SET THEME
#
theme("sense");

###################################################################################################################
#
# STEP 2 - SHOW ROM INFORMATION
#
viewbox(
#-- Title
"<~welcome.title>",

#-- Text
"<~welcome.text1> <b>"+
#-- Get Config Value
ini_get("rom_name")+
"</b> <~common.for> <b>"+ini_get("rom_device")+"</b>.\n\n"+

"<~welcome.text2>\n\n"+

" <~welcome.version>\t:\t<b><#selectbg_g>"+ini_get("rom_version")+"</#></b>\n"+
" <~welcome.codename>\t:\t<b><#selectbg_g>"+ini_get("rom_author")+"</#></b>\n"+
" <~welcome.updated>\t:\t<b><#selectbg_g>"+ini_get("rom_date")+"</#></b>\n\n\n"+

"<~welcome.next>",

#-- Icon
"@welcome"
);

###################################################################################################################
#
# STEP 3 - LICENSE
#
agreebox(
#-- Title
"<~terms.title>",

#-- Subtitle / Description
"<~terms.desc>",

#-- Icon
"@license",

#-- Text Content ( Read from <AROMA Resource Dir>/license.txt )
resread("license.txt"),

#-- Checkbox Text
"<~terms.check>",

#-- Unchecked Alert Message
"<~terms.confirm>"
);

###################################################################################################################
#
# STEP 4 - CHANGELOG
#
textbox(
#-- Title
"<~changelog.title>",

#-- Subtitle
"<~changelog.desc>",

#-- Icon
"@update",

#-- Arg 4
resread("changelog.txt")
);

################################################################################
# #
# INSTALLATION #
# #
################################################################################

checkviewbox(
#-- Title
"<~install.wipedata.title>",

#-- Text
"<#selectbg_g><b><~install.wipedata.desc.title></b></#>\n\n"+
"<~install.wipedata.desc>\n\n",

#-- Icon
"@welcome",

#-- Checkbox Text
"<~install.wipedata>",

#-- Initial Checkbox value ( 0=unchecked, 1=checked ) - (Optional, default:0)
"1",

#-- Save checked value in variable "reboot_it" (Optional)
"wipe_data"
);

writetmpfile(
#-- Prop file will write to /tmp/aroma/customize.prop
"wipe_data.prop",
"wipe_data="+getvar("wipe_data")+"\n"
);

################################################################################
#
# STEP 6 - SHOW MENUBOX - INSTALLATION TYPE
#
menubox(
#-- Title
"<~bawffg.install.type>",

#-- Sub Title
"<~bawffg.install.type.sub>",

#-- Icon
"@install",

#-- Will be saved in /tmp/aroma/type.prop
"type.prop",

#------------+-------------[ Menubox Items ]----------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#------------+----------------------------------------------+---------------#
"<~bawffg.install.default>", "<~bawffg.install.default.desc>", "@default",
"<~bawffg.install.minimal>", "<~bawffg.install.minimal.desc>", "@install",
"<~bawffg.install.custom>", "<~bawffg.install.custom.desc>", "@customize"
);

################################################################################
#
# STEP 7 - SELECT MAIN MODS
#
if (prop("type.prop","selected")=="1") then
#-- IF "Default" Installation, don't show configuration
writetmpfile(
#-- Prop file will write to /tmp/aroma/customize.prop
"customize.prop",
#-- Default Values
"item.1.1=1\n"+
"item.1.2=1\n"+
"item.1.3=1\n"+
"item.1.4=0\n"+
"item.1.5=0\n"+
"item.1.6=1\n"+
"item.1.7=0\n"+
"item.1.8=1\n"+
"item.1.9=0\n"+

"item.2.1=0\n"+
"item.2.2=0\n"+
"item.2.3=0\n"+
"item.2.4=0\n"+
"item.2.5=1\n"+
"item.2.6=0\n"+
"item.2.7=0\n"+
"item.2.8=1\n"+
"item.2.9=0\n"+
"item.2.10=0\n"+
"item.2.11=1\n"+
"item.2.12=1\n"+
"item.2.13=0\n"+
"item.2.14=0\n"+
"item.2.15=1\n"+
"item.2.16=0\n"+
"item.2.17=0\n"+

"item.3.1=0\n"+
"item.3.2=1\n"+
"item.3.3=1\n"+
"item.3.4=1\n"+
"item.3.5=1\n"+
"item.3.6=1\n"+
);
endif;

if (prop("type.prop","selected")=="2") then
writetmpfile(
"customize.prop",
"item.1.1=0\n"+
"item.1.2=0\n"+
"item.1.3=0\n"+
"item.1.4=0\n"+
"item.1.5=0\n"+
"item.1.6=0\n"+
"item.1.7=0\n"+
"item.1.8=0\n"+
"item.1.9=0\n"+

"item.2.1=0\n"+
"item.2.2=0\n"+
"item.2.3=0\n"+
"item.2.4=0\n"+
"item.2.5=0\n"+
"item.2.6=0\n"+
"item.2.7=0\n"+
"item.2.8=1\n"+
"item.2.9=0\n"+
"item.2.10=0\n"+
"item.2.11=0\n"+
"item.2.12=0\n"+
"item.2.13=0\n"+
"item.2.14=0\n"+
"item.2.15=1\n"+
"item.2.16=0\n"+
"item.2.17=0\n"+

"item.3.1=0\n"+
"item.3.2=1\n"+
"item.3.3=1\n"+
"item.3.4=1\n"+
"item.3.5=1\n"+
"item.3.6=1\n"+
);
endif;

################################################################################
#
# STEP 8 - CUSTOMIZE YOUR INSTALLATION
#
if (prop("type.prop","selected")=="3") then
#-- IF Installation type = "Custom" Show Customize Selection
checkbox(
#-- Title
"<~bawffg.custom.title>",

#-- Sub Title
"<~bawffg.custom.title.sub>",

#-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
"@personalize",

#-- Will be saved in /tmp/aroma/customize.prop
"customize.prop",

#---------------------[ Checkbox Without Group ]---------------------------#
# TITLE | SUBTITLE | Initial Value #
#------------+---------------------------------------------+---------------#
"<~gapps>", "<~gapps.desc>", 2, #-- Group 1. key = "item.1.x"
"<~gapps.sync>", "<~gapps.sync.title>", 1, #-- item.1.1
"<~gapps.gmail>", "<~gapps.gmail.title>", 1, #-- item.1.2
"<~gapps.search>", "<~gapps.search.title>", 1, #-- item.1.3
"<~gapps.talk>", "<~gapps.talk.title>", 0, #-- item.1.4
"<~gapps.plus>", "<~gapps.plus.title>", 0, #-- item.1.5
"<~gapps.market>", "<~gapps.market.title>", 1, #-- item.1.6
"<~gapps.talkback>", "<~gapps.talkback.title>", 0, #-- item.1.7
"<~gapps.maps>", "<~gapps.maps.title>", 1, #-- item.1.8
"<~gapps.tts>", "<~gapps.tts.title>", 0, #-- item.1.9
"<~samsung>", "<~samsung.desc>", 2, #-- Group 2. key = "item.2.x"
"<~samsung.accu>", "<~samsung.accu.title>", 0, #-- item.2.1
"<~samsung.allshare>", "<~samsung.allshare.title>", 0, #-- item.2.2
"<~samsung.analogclock>", "<~samsung.analogclock.title>", 0, #-- item.2.3
"<~samsung.apps>", "<~samsung.apps.title>", 0, #-- item.2.4
"<~samsung.autonav>", "<~samsung.autonav.title>", 1, #-- item.2.5
"<~samsung.chaton>", "<~samsung.chaton.title>", 0, #-- item.2.6
"<~samsung.dualclock>", "<~samsung.dualclock.title>", 0, #-- item.2.7
"<~samsung.ime>", "<~samsung.ime.title>", 1, #-- item.2.8
"<~samsung.mobileprint>", "<~samsung.mobileprint.title>", 0, #-- item.2.9
"<~samsung.sCloud>", "<~samsung.sCloud.title>", 0, #-- item.2.10
"<~samsung.sina>", "<~samsung.sina.title>", 1, #-- item.2.11
"<~samsung.smemo>", "<~samsung.smemo.title>", 1, #-- item.2.12
"<~samsung.sns>", "<~samsung.sns.title>", 0, #-- item.2.13
"<~samsung.svoice>", "<~samsung.svoice.title>", 0, #-- item.2.14
"<~samsung.tts>", "<~samsung.tts.title>", 1, #-- item.2.15
"<~samsung.yahoo>", "<~samsung.yahoo.title>", 0, #-- item.2.16
"<~samsung.dict>", "<~samsung.dict.title>", 0, #-- item.2.17
"<~other>", "<~other.desc>", 2, #-- Group 3. key = "item.3.x"
"<~other.dropbox>", "<~other.dropbox.title>", 0, #-- item.3.1
"<~other.flashplayer>", "<~other.flashplayer.title>", 1, #-- item.3.2
"<~other.photoretouch>", "<~other.photoretouch.title>", 1, #-- item.3.3
"<~other.reexplorer>", "<~other.reexplorer.title>", 1, #-- item.3.4
"<~other.sogouime>", "<~other.sogouime.title>", 1, #-- item.3.5
"<~other.tai>", "<~other.tai.title>", 1, #-- item.3.6

#-[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]-#
);
endif;

##
#
# Next Screen is Installation UI, So change the next button text to "Install Now"
#
ini_set("text_next", "<~install.now>");

################################################################################
#
# STEP 9 - MAKE SURE USER KNOW THAT NEXT STEP WAS INSTALLATION PROCESS
#
viewbox(
#-- Title
"<~ready.title>",

#-- Text
"<~ready.multiline>",

#-- Icon
"@install"
);

##
#
# Next Button in successfull installation should be back to "Next >"
#
ini_set("text_next", "<~text_next>");

################################################################################
#
# STEP 10 - INSTALLATION PROCESS
#
setvar("retstatus",
install(
#-- Title
"<~installing.title>",

#-- Installation Process message
"<~installing.multiline>",

#-- Installation Icon
"@install",

#-- Installation Finish Message
"<~install.finish>"
)
);

##
#
# Next Button is "Finish"
#
ini_set("text_next", "<~text_finish>");

################################################################################
#
# STEP 11 - FINISH MESSAGE, Add Checkbox to Reboot or No. Save in "reboot_it" variable
#
# You can use return value or "reboot_it" variable to retrive checkbox value
# Example:
# if (checkviewbox(....)=="1" then
# ... checked ...
# endif;
#
checkviewbox(
#-- Title
"<~install.finish.title>",

#-- Text
"<#selectbg_g><b><~finish.title></b></#>\n\n"+
"<~finish.msg>\n\n"+
"<~finish.status>"+getvar("retstatus")+"\n\n",

#-- Icon
"@welcome",

#-- Checkbox Text
"<~finish.reboot>",

#-- Initial Checkbox value ( 0=unchecked, 1=checked ) - (Optional, default:0)
"1",

#-- Save checked value in variable "reboot_it" (Optional)
"reboot_it"
);

###
#
# Check if reboot checkbox was checked
if
getvar("reboot_it")=="1"
then
#
# reboot("onfinish"); - Reboot if anything finished
# reboot("now"); - Reboot Directly
# reboot("disable"); - If you set reboot("onfinish") before, use this command to revert it.
#
reboot("onfinish");
endif;

#---- FINISH