Commits

chunlinyao  committed 54c0881

init

  • Participants

Comments (0)

Files changed (17)

+syntax:glob
+dist
+deploy
+build
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<project name="Google_Auth_Token_Generator" default="jar" basedir=".">
+    <description>Builds, tests, and runs the project .</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+            There exist several targets which are by default empty and which can be
+            used for execution of your tasks. These targets are usually executed
+            before and after some main targets. They are:
+
+            pre-init:                 called before initialization of project properties
+            post-init:                called after initialization of project properties
+            pre-preprocess:           called before text preprocessing of sources
+            post-preprocess:          called after text preprocessing of sources
+            pre-compile:              called before source compilation
+            post-compile:             called after source compilation
+            pre-obfuscate:            called before obfuscation 
+            post-obfuscate:           called after obfuscation
+            pre-preverify:            called before preverification
+            post-preverify:           called after preverification
+            pre-jar:                  called before jar building
+            post-jar:                 called after jar building
+            pre-build:                called before final distribution building
+            post-build:               called after final distribution building
+            pre-clean:                called before cleaning build products
+            post-clean:               called after cleaning build products
+
+            Example of pluging a my-special-task after the compilation could look like
+
+            <target name="post-compile">
+            <my-special-task>
+            <fileset dir="${build.classes.dir}"/>
+            </my-special-task>
+            </target>
+
+            For list of available properties check the imported
+            nbproject/build-impl.xml file.
+
+            Other way how to customize the build is by overriding existing main targets.
+            The target of interest are:
+
+            preprocess:               preprocessing
+            extract-libs:             extraction of libraries and resources
+            compile:                  compilation
+            create-jad:               construction of jad and jar manifest source
+            obfuscate:                obfuscation
+            preverify:                preverification
+            jar:                      jar archive building
+            run:                      execution
+            debug:                    execution in debug mode
+            build:                    building of the final distribution
+            javadoc:                  javadoc generation
+
+            Example of overriding the target for project execution could look like
+
+            <target name="run" depends="init,jar">
+            <my-special-exec jadfile="${dist.dir}/${dist.jad}"/>
+            </target>
+
+            Be careful about correct dependencies when overriding original target. 
+            Again, for list of available properties which you can use check the target 
+            you are overriding in nbproject/build-impl.xml file.
+
+            A special target for-all-configs can be used to run some specific targets for
+            all project configurations in a sequence. File nbproject/build-impl.xml 
+            already contains some "for-all" targets:
+    
+            jar-all
+            javadoc-all
+            clean-all
+      
+            Example of definition of target iterating over all project configurations:
+    
+            <target name="jar-all">
+            <property name="target.to.call" value="jar"/>
+            <antcall target="for-all-configs"/>
+            </target>
+
+            -->
+</project>

File icons/vass2.png

Added
New image

File lib/cldc_classes.zip

Binary file added.

File lib/cldc_crypto.zip

Binary file added.

File nbproject/build-impl.xml

+<?xml version="1.0" encoding="UTF-8"?>
+<!-- *** GENERATED FROM project.xml - DO NOT EDIT *** -->
+<project name="Google_Auth_Token_Generator-impl" default="jar" basedir="..">
+    <!--load-properties-->
+    <target name="pre-load-properties">
+        <property file="nbproject/private/private.properties"/>
+        <property name="user.properties.file" location="${netbeans.user}/build.properties"/>
+        <available property="user.properties.file.exists" file="${user.properties.file}"/>
+    </target>
+    <target name="exists.config.active" unless="config.active">
+        <echo level="warning" message="Active configuration (config.active property) is not set - using default."/>
+        <property value="" name="config.active"/>
+    </target>
+    <target name="exists.netbeans.user" unless="netbeans.user">
+        <echo level="warning" message="NetBeans IDE user directory (netbeans.user property) is not set. By specifying this property many properties required by the project will be automatically evaluated (e.g.: ant-ext library home, ...). You could also open this project in the NetBeans IDE - in this case this property would be set automatically."/>
+    </target>
+    <target name="exists.user.properties.file" unless="user.properties.file.exists">
+        <echo level="warning" message="User properties file (user.properties.file) property is not set. By specifying this property many properties required by the project will be automatically evaluated (e.g.: libraries, platforms, ...)."/>
+    </target>
+    <target name="load-properties" depends="pre-load-properties,exists.config.active,exists.netbeans.user,exists.user.properties.file">
+        <loadproperties srcfile="nbproject/project.properties">
+            <filterchain>
+                <containsregex pattern="^configs\.${config.active}\.(.*)" replace="\1"/>
+                <concatfilter prepend="nbproject/project.properties"/>
+                <containsregex pattern="^platform.active=|^deployment.method=|^deployment.instance="/>
+            </filterchain>
+        </loadproperties>
+        <property name="deployment.instance" value="default"/>
+        <loadproperties srcfile="${user.properties.file}">
+            <filterchain>
+                <replaceregex pattern="^platforms\.${platform.active}\." replace="platform."/>
+                <replaceregex pattern="^deployment\.${deployment.method}\.scriptfile=" replace="deployment.scriptfile="/>
+                <replaceregex pattern="^deployments\.${deployment.method}\.${deployment.instance}\.([^=]+)=" replace="\1="/>
+            </filterchain>
+        </loadproperties>
+        <loadproperties srcfile="nbproject/project.properties">
+            <filterchain>
+                <containsregex pattern="^configs\.${config.active}\.(.*)" replace="\1"/>
+                <concatfilter prepend="nbproject/project.properties"/>
+            </filterchain>
+        </loadproperties>
+    </target>
+    <!--basic-init-->
+    <target name="exists.platform.active" unless="platform.active">
+        <echo level="warning" message="Active platform (platform.active property) in not set. If you set this and user.properties.file property, many properties required by the project will be automatically evaluated (e.g.: platform home, platform classpath, ...)."/>
+    </target>
+    <target name="exists.platform.configuration" unless="platform.configuration">
+        <echo level="warning" message="Platform configuration (platform.configuration) is not set. Using default (CLDC-1.0) configuration."/>
+        <property name="platform.configuration" value="CLDC-1.0"/>
+    </target>
+    <target name="exists.platform.profile" unless="platform.profile">
+        <echo level="warning" message="Platform profile (platform.profile) is not set. Using default (MIDP-1.0) profile."/>
+        <property name="platform.profile" value="MIDP-1.0"/>
+    </target>
+    <target name="basic-init" depends="exists.platform.active,exists.platform.configuration,exists.platform.profile">
+        <fail unless="libs.j2me_ant_ext.classpath">Classpath to J2ME Ant extension library (libs.j2me_ant_ext.classpath property) is not set. For example: location of mobility/modules/org-netbeans-mobility-antext.jar file in the IDE installation directory.</fail>
+        <fail unless="platform.home">Platform home (platform.home property) is not set. Value of this property should be ${platform.active.description} emulator home directory location.</fail>
+        <fail unless="platform.bootclasspath">Platform boot classpath (platform.bootclasspath property) is not set. Value of this property should be ${platform.active.description} emulator boot classpath containing all J2ME classes provided by emulator.</fail>
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+        <property name="javac.source" value="1.3"/>
+        <property name="javac.target" value="1.1"/>
+        <property name="javac.encoding" value="${file.encoding}"/>
+        <property name="deployment.number" value="0.0.1"/>
+        <property name="deployment.counter" value="000002"/>
+        <condition property="no.deps">
+            <istrue value="${no.dependencies}"/>
+        </condition>
+        <condition property="no.preprocess">
+            <isfalse value="${use.preprocessor}"/>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <isfalse value="${javadoc.preview}"/>
+        </condition>
+        <condition property="filter.excludes.evaluated" value="${filter.excludes},${filter.more.excludes},**/*Test.java,**/test,**/test/**">
+            <istrue value="${filter.exclude.tests}"/>
+        </condition>
+        <property name="filter.excludes.evaluated" value="${filter.excludes},${filter.more.excludes}"/>
+        <condition property="deployment.do.override.jarurl" value="">
+            <istrue value="${deployment.override.jarurl}"/>
+        </condition>
+        <condition property="config.active.name" value="DefaultConfiguration">
+            <length string="${config.active}" trim="true" length="0"/>
+        </condition>
+        <property name="config.active.name" value="${config.active}"/>
+        <taskdef resource="org/netbeans/mobility/antext/defs.properties">
+            <classpath>
+                <pathelement path="${libs.j2me_ant_ext.classpath}"/>
+            </classpath>
+        </taskdef>
+        <condition property="skip.deployment">
+            <equals arg1="${deployment.method}" arg2="NONE" casesensitive="false" trim="true"/>
+        </condition>
+        <condition property="app-version.autoincrement.trigger">
+            <istrue value="${app-version.autoincrement}"/>
+        </condition>
+        <condition property="debug.timeout" value="30000">
+            <or>
+                <equals arg1="${debugger.timeout}" arg2="" trim="true"/>
+                <not>
+                    <isset property="debugger.timeout"/>
+                </not>
+            </or>
+        </condition>
+        <property name="debug.timeout" value="${debugger.timeout}"/>
+        <nb-overrideproperty name="buildsystem.baton" value="${src.dir}"/>
+    </target>
+    <!--cldc-init-->
+    <target name="cldc-pre-init">
+        <condition property="cldc-platform.trigger">
+            <equals arg1="CLDC" arg2="${platform.trigger}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="cldc-init" depends="cldc-pre-init" if="cldc-platform.trigger">
+        <property name="preverify.sources.dir" location="${build.dir}/preverifysrc"/>
+        <property name="manifest.build.file" location="${build.dir}/manifest.mf"/>
+        <property name="platform.device" value=""/>
+        <property name="dist.jad.url" value="file://"/>
+        <property name="run.cmd.options" value=""/>
+        <condition property="evaluated.run.security.domain" value="">
+            <isfalse value="${run.use.security.domain}"/>
+        </condition>
+        <property name="evaluated.run.security.domain" value="${run.security.domain}"/>
+        <condition property="override.jarurl.trigger">
+            <and>
+                <istrue value="${cldc-platform.trigger}"/>
+                <istrue value="${deployment.override.jarurl}"/>
+            </and>
+        </condition>
+        <property name="deployment.jad" location="${dist.dir}/${dist.jad}"/>
+        <property name="deployment.jar" location="${dist.dir}/${dist.jar}"/>
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="${dist.jad}"/>
+            <include name="${dist.jar}"/>
+        </patternset>
+    </target>
+    <!--cdc-init-->
+    <target name="cdc-init">
+        <condition property="cdc-platform.trigger">
+            <equals arg1="CDC" arg2="${platform.trigger}" casesensitive="false"/>
+        </condition>
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="main.class.applet">
+            <equals arg1="${main.class.class}" arg2="applet" casesensitive="false"/>
+        </condition>
+        <condition property="main.class.xlet">
+            <equals arg1="${main.class.class}" arg2="xlet" casesensitive="false"/>
+        </condition>
+        <condition property="manifest.available+main.class+fat.jar">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class"/>
+                <istrue value="${platform.fat.jar}"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class"/>
+                <isfalse value="${platform.fat.jar}"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="application.version.invalid" value="true">
+            <equals arg1="${deployment.number}" arg2="" trim="true"/>
+        </condition>
+        <fail if="application.version.invalid" message="Property deployment.number must not be empty and must contain version in format %d.%d.%d!"/>
+        <condition property="sign.jar.trigger" value="true">
+            <and>
+                <isset property="cdc-platform.trigger"/>
+                <istrue value="${sign.enabled}"/>
+            </and>
+        </condition>
+    </target>
+    <!--ricoh-init-->
+    <target name="ricoh-pre-init" if="cdc-platform.trigger">
+        <condition property="ricoh-platform.trigger">
+            <equals arg1="ricoh" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="ricoh-init" depends="ricoh-pre-init" if="ricoh-platform.trigger">
+        <available property="jcifs" classname="jcifs.smb.SmbFile" classpath="${libs.RicohAntTools.classpath}"/>
+        <condition property="no.vendor.name" value="true">
+            <equals arg1="${application.vendor}" arg2="" trim="true"/>
+        </condition>
+        <condition property="ricoh.dalp.install.mode" value="auto" else="manual">
+            <istrue value="${ricoh.dalp.install.mode.auto}"/>
+        </condition>
+        <condition property="ricoh.dalp.display-mode.type" value="COLOR" else="MONO">
+            <istrue value="${ricoh.dalp.display-mode.color}"/>
+        </condition>
+        <property name="xml.dir" value="${build.dir}/dalp"/>
+        <property name="xlet.dalp" value="${application.name}.dalp"/>
+        <property name="xlet.dalp.name-only" value="${application.name}.dalp"/>
+        <property name="deploy.dir" value="${dist.dir}/deploy"/>
+        <property name="rideploy.zip" value="${dist.dir}/${application.name}.zip"/>
+        <property name="ricoh.dalp.is-managed" value="true"/>
+        <property name="ricoh.dalp.information.is-icon-used" value="true"/>
+        <property name="ricoh.platform.target.version" value="2.0"/>
+        <property name="ricoh.dalp.version" value="${deployment.number}"/>
+        <property name="ricoh.dalp.application-desc.visible" value="true"/>
+        <property name="ricoh.dalp.install.destination" value="hdd"/>
+        <property name="ricoh.dalp.install.work-dir" value="hdd"/>
+        <property name="ricoh.dalp.information.abbreviation" value="RICOH"/>
+        <taskdef name="taskIf" classname="ricoh.ant.ConditionalTask" classpath="${libs.ricoh-ant-utils.classpath}"/>
+        <taskdef name="dalp" classname="org.netbeans.modules.j2me.cdc.project.ricoh.DalpBuilder" classpath="${libs.ricoh-ant-utils.classpath}"/>
+        <property name="dalp.dist" value="${build.dir}/dalp/${application.name}.dalp"/>
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="${dist.jar}"/>
+            <include name="${application.name}.dalp"/>
+            <include name="lib/*"/>
+        </patternset>
+    </target>
+    <!--semc-init-->
+    <target name="semc-pre-init" if="cdc-platform.trigger">
+        <condition property="semc-platform.trigger">
+            <equals arg1="semc" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="semc-init" depends="semc-pre-init" if="semc-platform.trigger">
+        <condition property="semc.icon.invalid" value="true">
+            <or>
+                <contains string="${semc.application.icon}" substring="$${"/>
+                <equals arg1="${semc.application.icon}" arg2="" trim="true"/>
+            </or>
+        </condition>
+        <condition property="no.certificateorkey" value="true">
+            <or>
+                <isset property="no.application.uid"/>
+                <equals arg1="${semc.certificate.path}" arg2="" trim="true"/>
+                <contains string="${semc.certificate.path}" substring="$${semc.certificate.path"/>
+                <equals arg1="${semc.private.key.path}" arg2="" trim="true"/>
+                <contains string="${semc.private.key.path}" substring="$${semc.private.key.path"/>
+            </or>
+        </condition>
+        <property name="j9.dist" location="${build.dir}/j9/${semc.application.uid}.j9"/>
+        <taskdef resource="org/netbeans/modules/j2me/cdc/project/defs.properties">
+            <classpath>
+                <pathelement path="${libs.cdc-ant-utils.classpath}"/>
+            </classpath>
+        </taskdef>
+        <taskdef resource="org/netbeans/modules/j2me/cdc/project/semc/defs.properties">
+            <classpath>
+                <pathelement path="${libs.semc-ant-utils.classpath}"/>
+            </classpath>
+        </taskdef>
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="*.sis"/>
+            <include name="*.SIS"/>
+        </patternset>
+    </target>
+    <!--savaje-init-->
+    <target name="savaje-pre-init" if="cdc-platform.trigger">
+        <condition property="savaje-platform.trigger">
+            <equals arg1="savaje" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="savaje-init" depends="savaje-pre-init" if="savaje-platform.trigger">
+        <property name="savaje.application.uid" value="TBD"/>
+        <condition property="savaje.bundle.base.invalid" value="true">
+            <or>
+                <equals arg1="${savaje.bundle.base}" arg2="" trim="true"/>
+                <contains string="${savaje.bundle.base}" substring="$${savaje.bundle.base"/>
+            </or>
+        </condition>
+        <condition property="savaje.unsupported.main" value="true">
+            <or>
+                <equals arg1="${main.class.applet}" arg2="true"/>
+            </or>
+        </condition>
+        <condition property="savaje.icon.invalid" value="true">
+            <or>
+                <isset property="no.application.uid"/>
+                <contains string="${savaje.application.icon}" substring="$${"/>
+                <equals arg1="${savaje.application.icon}" arg2="" trim="true"/>
+            </or>
+        </condition>
+        <property name="jnlp.dist" value="${build.dir}/jnlp/bundle.jnlp"/>
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="bundle.jnlp"/>
+            <include name="bundle.policy"/>
+            <include name="lib/*"/>
+        </patternset>
+    </target>
+    <!--sjmc-init-->
+    <target name="sjmc-pre-init" if="cdc-platform.trigger">
+        <condition property="sjmc-platform.trigger">
+            <equals arg1="sjmc" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="sjmc-init" depends="sjmc-pre-init" if="sjmc-platform.trigger"/>
+    <!--ojec-init-->
+    <target name="ojec-pre-init" if="cdc-platform.trigger">
+        <condition property="ojec-platform.trigger">
+            <equals arg1="ojec" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="ojec-init" depends="ojec-pre-init" if="ojec-platform.trigger"/>
+    <!--cdc-hi-init-->
+    <target name="cdc-hi-pre-init" if="cdc-platform.trigger">
+        <condition property="cdc-hi-platform.trigger">
+            <equals arg1="cdc-hi" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="cdc-hi-init" depends="cdc-hi-pre-init" if="cdc-hi-platform.trigger"/>
+    <!--nokiaS80-init-->
+    <target name="nokiaS80-pre-init" if="cdc-platform.trigger">
+        <condition property="nokiaS80-platform.trigger">
+            <equals arg1="nokiaS80" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="nokiaS80-init" depends="nokiaS80-pre-init" if="nokiaS80-platform.trigger">
+        <property name="j9.dist" location="${build.dir}/j9/NOKIA.j9"/>
+        <property name="manifest.build.file" location="${build.dir}/manifest.mf"/>
+        <condition property="nokia.icon.invalid">
+            <or>
+                <contains string="${nokiaS80.application.icon}" substring="$${"/>
+                <equals arg1="${nokiaS80.application.icon}" arg2="" trim="true"/>
+            </or>
+        </condition>
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="${dist.jar}"/>
+        </patternset>
+    </target>
+    <!--nsicom-init-->
+    <target name="nsicom-pre-init" if="cdc-platform.trigger">
+        <condition property="nsicom-platform.trigger">
+            <equals arg1="nsicom" arg2="${platform.type}" casesensitive="false"/>
+        </condition>
+    </target>
+    <target name="nsicom-init" depends="nsicom-pre-init" if="nsicom-platform.trigger">
+        <property name="deployment.dir" location="${dist.dir}"/>
+        <patternset id="deployment.patternset">
+            <include name="${dist.jar}"/>
+        </patternset>
+    </target>
+    <!--init-->
+    <target name="pre-init"/>
+    <target name="post-init"/>
+    <target name="init" depends="pre-init,load-properties,basic-init,cldc-init,cdc-init,ricoh-init,semc-init,savaje-init,sjmc-init,ojec-init,cdc-hi-init,nokiaS80-init,nsicom-init,post-init"/>
+    <!--conditional clean-->
+    <target name="conditional-clean-init">
+        <uptodate property="no.clean.before.build" targetfile="${build.dir}/.timestamp">
+            <srcfiles dir="nbproject">
+                <include name="project.properties"/>
+                <include name="build-impl.xml"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+    <target name="conditional-clean" depends="init,conditional-clean-init" unless="no.clean.before.build" description="Clean project in case its meta information has changed.">
+        <antcall target="do-clean" inheritall="true" inheritrefs="true"/>
+    </target>
+    <!--deps-jar-->
+    <target name="deps-jar" depends="conditional-clean" unless="no.deps"/>
+    <!--preprocess-->
+    <target name="pre-preprocess"/>
+    <target name="do-preprocess" unless="no.preprocess">
+        <fail unless="preprocessed.dir">Must set preprocessed.dir</fail>
+        <property name="abilities" value=""/>
+        <property name="debug.level" value="debug"/>
+        <mkdir dir="${preprocessed.dir}"/>
+        <echo message="ignore me" file="${build.dir}/.timestamp"/>
+        <nb-prep destdir="${preprocessed.dir}" preprocessfor="${config.active.name},${abilities},DebugLevel=${debug.level}" encoding="${javac.encoding}">
+            <fileset dir="${buildsystem.baton}" defaultexcludes="${filter.use.standard}" excludes="${filter.excludes.evaluated}"/>
+        </nb-prep>
+        <copy todir="${preprocessed.dir}">
+            <fileset dir="${buildsystem.baton}" defaultexcludes="${filter.use.standard}" excludes="${filter.excludes.evaluated},${build.classes.excludes}"/>
+        </copy>
+        <nb-overrideproperty name="buildsystem.baton" value="${preprocessed.dir}"/>
+    </target>
+    <target name="post-preprocess"/>
+    <target name="preprocess" depends="deps-jar,pre-preprocess,do-preprocess,post-preprocess" description="Preprocess project sources."/>
+    <!--compile-->
+    <target name="pre-compile"/>
+    <target name="do-compile">
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <mkdir dir="${build.classes.dir}"/>
+        <javac includeantruntime="false" source="${javac.source}" target="${javac.target}" deprecation="${javac.deprecation}" optimize="${javac.optimize}" debug="${javac.debug}" destdir="${build.classes.dir}" srcdir="${buildsystem.baton}" bootclasspath="${platform.bootclasspath}" encoding="${javac.encoding}">
+            <classpath>
+                <path path="${libs.classpath}"/>
+            </classpath>
+        </javac>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${buildsystem.baton}" defaultexcludes="${filter.use.standard}" excludes="${filter.excludes.evaluated},${build.classes.excludes}"/>
+        </copy>
+        <nb-overrideproperty name="buildsystem.baton" value="${build.classes.dir}"/>
+    </target>
+    <target name="extract-libs" description="Extracts all bundled libraries.">
+        <mkdir dir="${build.classes.dir}"/>
+        <nb-extract dir="${build.classes.dir}" excludeManifest="true" classpath="${libs.classpath}" excludeclasspath="${extra.classpath}"/>
+    </target>
+    <target name="post-compile"/>
+    <target name="compile" depends="preprocess,pre-compile,extract-libs,do-compile,post-compile" description="Compile project classes."/>
+    <!--compile-single-->
+    <target name="pre-compile-single"/>
+    <target name="do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <mkdir dir="${build.classes.dir}"/>
+        <javac includeantruntime="false" source="${javac.source}" target="${javac.target}" deprecation="${javac.deprecation}" optimize="${javac.optimize}" debug="${javac.debug}" srcdir="${buildsystem.baton}" destdir="${build.classes.dir}" bootclasspath="${platform.bootclasspath}" includes="${javac.includes}" encoding="${javac.encoding}">
+            <classpath>
+                <path path="${libs.classpath}"/>
+            </classpath>
+        </javac>
+    </target>
+    <target name="post-compile-single"/>
+    <target name="compile-single" depends="preprocess,pre-compile-single,do-compile-single,post-compile-single" description="Compile selected project classes."/>
+    <!--proguard-->
+    <target name="proguard-init" description="Up-to-date check before obfuscation.">
+        <property name="obfuscation.level" value="0"/>
+        <condition property="no.obfusc">
+            <or>
+                <equals arg1="${obfuscation.level}" arg2="0"/>
+                <uptodate targetfile="${obfuscator.destjar}">
+                    <srcfiles dir="${buildsystem.baton}"/>
+                </uptodate>
+            </or>
+        </condition>
+        <uptodate property="obfuscation.up-to-date" targetfile="${obfuscator.destjar}">
+            <srcfiles dir="${buildsystem.baton}"/>
+        </uptodate>
+    </target>
+    <target name="skip-obfuscation" depends="proguard-init" if="obfuscation.up-to-date">
+        <fail unless="obfuscated.classes.dir">Must set obfuscated.classes.dir</fail>
+        <nb-overrideproperty name="buildsystem.baton" value="${obfuscated.classes.dir}"/>
+    </target>
+    <target name="proguard" depends="skip-obfuscation" description="Obfuscate project classes." unless="no.obfusc">
+        <fail unless="obfuscated.classes.dir">Must set obfuscated.classes.dir</fail>
+        <fail unless="obfuscator.srcjar">Must set obfuscator.srcjar</fail>
+        <fail unless="obfuscator.destjar">Must set obfuscator.destjar</fail>
+        <property name="obfuscator.classpath" value=""/>
+        <dirname file="${obfuscator.srcjar}" property="obfuscator.srcjar.dir"/>
+        <dirname file="${obfuscator.destjar}" property="obfuscator.destjar.dir"/>
+        <mkdir dir="${obfuscator.srcjar.dir}"/>
+        <mkdir dir="${obfuscator.destjar.dir}"/>
+        <jar jarfile="${obfuscator.srcjar}" basedir="${buildsystem.baton}"/>
+        <property name="obfuscation.custom" value=""/>
+        <nb-obfuscate srcjar="${obfuscator.srcjar}" destjar="${obfuscator.destjar}" obfuscatorclasspath="${obfuscator.classpath}" classpath="${platform.bootclasspath}:${extra.classpath}" obfuscationLevel="${obfuscation.level}" extraScript="${obfuscation.custom}"/>
+        <mkdir dir="${obfuscated.classes.dir}"/>
+        <unjar src="${obfuscator.destjar}" dest="${obfuscated.classes.dir}"/>
+        <nb-overrideproperty name="buildsystem.baton" value="${obfuscated.classes.dir}"/>
+    </target>
+    <!--obfuscate-->
+    <target name="pre-obfuscate"/>
+    <target name="post-obfuscate"/>
+    <target name="obfuscate" depends="compile,pre-obfuscate,proguard,post-obfuscate" description="Obfuscate project classes."/>
+    <!--lwuit-build-->
+    <import file="lwuit.xml" optional="true"/>
+    <target name="-lwuit-check">
+        <condition property="lwuit.allowed">
+            <and>
+                <available file="nbproject/lwuit.xml"/>
+                <isset property="is.mesdk_lwuit"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-pre-lwuit-build" depends="-lwuit-check" if="lwuit.allowed"/>
+    <target name="-lwuit-build" depends="-lwuit-check" if="lwuit.allowed">
+        <antcall target="lwuit_build"/>
+    </target>
+    <target name="-post-lwuit-build" depends="-lwuit-check" if="lwuit.allowed"/>
+    <target name="lwuit-build" depends="-lwuit-check,-pre-lwuit-build, -lwuit-build, -post-lwuit-build" if="lwuit.allowed"/>
+    <!--preverify-->
+    <target name="pre-preverify"/>
+    <target name="do-preverify" if="cldc-platform.trigger">
+        <fail unless="preverify.classes.dir">Must set preverify.classes.dir</fail>
+        <mkdir dir="${preverify.sources.dir}"/>
+        <copy todir="${preverify.sources.dir}">
+            <fileset dir="${buildsystem.baton}" includes="**/*.class"/>
+        </copy>
+        <mkdir dir="${preverify.classes.dir}"/>
+        <nb-preverify srcdir="${preverify.sources.dir}" destdir="${preverify.classes.dir}" classpath="${platform.bootclasspath}:${extra.classpath}" configuration="${platform.configuration}" platformhome="${platform.home}" platformtype="${platform.type}" commandline="${platform.preverifycommandline}"/>
+        <copy todir="${preverify.classes.dir}">
+            <fileset dir="${buildsystem.baton}" defaultexcludes="${filter.use.standard}" excludes="${filter.excludes.evaluated},${build.classes.excludes}"/>
+        </copy>
+        <nb-overrideproperty name="buildsystem.baton" value="${preverify.classes.dir}"/>
+    </target>
+    <target name="post-preverify"/>
+    <target name="preverify" depends="obfuscate,lwuit-build,pre-preverify,do-preverify,post-preverify" description="Preverify project classes."/>
+    <!--set-password-->
+    <target name="set-password-init">
+        <property name="sign.enabled" value="false"/>
+        <condition property="skip-sign-keystore-password-input">
+            <or>
+                <isfalse value="${sign.enabled}"/>
+                <and>
+                    <isset property="sign.keystore"/>
+                    <isset property="sign.keystore.password"/>
+                    <not>
+                        <equals arg1="${sign.keystore}" arg2="" trim="true"/>
+                    </not>
+                    <not>
+                        <equals arg1="${sign.keystore.password}" arg2="" trim="true"/>
+                    </not>
+                </and>
+            </or>
+        </condition>
+        <condition property="skip-sign-alias-password-input">
+            <or>
+                <isfalse value="${sign.enabled}"/>
+                <and>
+                    <isset property="sign.keystore"/>
+                    <isset property="sign.alias"/>
+                    <isset property="sign.alias.password"/>
+                    <not>
+                        <equals arg1="${sign.keystore}" arg2="" trim="true"/>
+                    </not>
+                    <not>
+                        <equals arg1="${sign.alias}" arg2="" trim="true"/>
+                    </not>
+                    <not>
+                        <equals arg1="${sign.alias.password}" arg2="" trim="true"/>
+                    </not>
+                </and>
+            </or>
+        </condition>
+    </target>
+    <target name="set-keystore-password" if="netbeans.home" unless="skip-sign-keystore-password-input">
+        <nb-enter-password keystore="${sign.keystore}" passwordproperty="sign.keystore.password"/>
+    </target>
+    <target name="set-alias-password" if="netbeans.home" unless="skip-sign-alias-password-input">
+        <nb-enter-password keystore="${sign.keystore}" keyalias="${sign.alias}" passwordproperty="sign.alias.password"/>
+    </target>
+    <target name="set-password" depends="set-password-init,set-keystore-password,set-alias-password"/>
+    <!--create JAD-->
+    <target name="add-configuration" unless="contains.manifest.configuration">
+        <nb-output file="${dist.dir}/${dist.jad}" encoding="UTF-8" append="true">MicroEdition-Configuration: ${platform.configuration}
+</nb-output>
+        <nb-output file="${manifest.build.file}" encoding="UTF-8" append="true">MicroEdition-Configuration: ${platform.configuration}
+</nb-output>
+    </target>
+    <target name="add-profile" unless="contains.manifest.profile">
+        <nb-output file="${dist.dir}/${dist.jad}" encoding="UTF-8" append="true">MicroEdition-Profile: ${platform.profile}
+</nb-output>
+        <nb-output file="${manifest.build.file}" encoding="UTF-8" append="true">MicroEdition-Profile: ${platform.profile}
+</nb-output>
+    </target>
+    <target name="create-jad" if="cldc-platform.trigger">
+        <fail unless="dist.jad">Must set dist.jad</fail>
+        <mkdir dir="${build.dir}"/>
+        <dirname file="${dist.dir}/${dist.jad}" property="dist.jad.dir"/>
+        <mkdir dir="${dist.jad.dir}"/>
+        <condition property="evaluated.manifest.apipermissions" value="${manifest.apipermissions}">
+            <not>
+                <equals arg1="${platform.profile}" arg2="MIDP-1.0"/>
+            </not>
+        </condition>
+        <condition property="evaluated.manifest.pushregistry" value="${manifest.pushregistry}">
+            <not>
+                <equals arg1="${platform.profile}" arg2="MIDP-1.0"/>
+            </not>
+        </condition>
+        <condition property="contains.manifest.configuration">
+            <contains substring="MicroEdition-Configuration: " string="${manifest.others}"/>
+        </condition>
+        <condition property="contains.manifest.profile">
+            <contains substring="MicroEdition-Profile: " string="${manifest.others}"/>
+        </condition>
+        <property value="" name="evaluated.manifest.apipermissions"/>
+        <property value="" name="evaluated.manifest.pushregistry"/>
+        <property name="manifest.jad" value=""/>
+        <property name="manifest.manifest" value=""/>
+        <nb-output file="${dist.dir}/${dist.jad}" encoding="UTF-8">${manifest.midlets}${evaluated.manifest.apipermissions}${evaluated.manifest.pushregistry}${manifest.others}${manifest.jad}</nb-output>
+        <nb-output file="${manifest.build.file}" encoding="UTF-8">${manifest.midlets}${evaluated.manifest.apipermissions}${evaluated.manifest.pushregistry}${manifest.others}${manifest.manifest}</nb-output>
+        <antcall target="add-configuration" inheritall="true" inheritrefs="true"/>
+        <antcall target="add-profile" inheritall="true" inheritrefs="true"/>
+        <property name="manifest.available" value="true"/>
+    </target>
+    <!--do-extra-libs-->
+    <target name="do-extra-libs" if="extra.classpath">
+        <property name="dist.lib.dir" value="${dist.dir}/lib"/>
+        <mkdir dir="${dist.lib.dir}"/>
+        <copy todir="${dist.lib.dir}">
+            <path path="${extra.classpath}"/>
+            <flattenmapper/>
+        </copy>
+    </target>
+    <!--nokiaS80-manifest-->
+    <target name="nokiaS80-prepare-j9" if="nokiaS80-platform.trigger">
+        <fail message="Main class is not set!">
+            <condition>
+                <equals arg1="${main.class}" arg2="" trim="true"/>
+            </condition>
+        </fail>
+        <mkdir dir="${build.dir}/j9"/>
+        <taskdef name="j9builder" classname="org.netbeans.modules.j2me.cdc.project.J9Builder" classpath="${libs.cdc-ant-utils.classpath}"/>
+        <j9builder jvmargs="${run.jvmargs}" mainclass="${main.class}" args="${application.args}" home="${platform.home}" dist="${j9.dist}" id="NOKIA" platform="${platform.type}" xlet="${main.class.xlet}" applet="${main.class.applet}" jarname="${dist.jar}"/>
+        <copy file="${manifest.file}" tofile="${manifest.build.file}" failonerror="false"/>
+        <property name="manifest.available" value="true"/>
+        <loadfile property="nokia.manifest.j9" srcFile="${j9.dist}"/>
+    </target>
+    <target name="nokiaS80-prepare-manifest" depends="nokiaS80-prepare-j9" if="nokiaS80-platform.trigger" unless="nokia.icon.invalid">
+        <pathconvert property="logo.icon.name" pathsep=" ">
+            <path path="${nokiaS80.application.icon}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="*"/>
+            </chainedmapper>
+        </pathconvert>
+        <copy file="${nokiaS80.application.icon}" todir="${buildsystem.baton}"/>
+        <manifest file="${manifest.build.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+            <attribute name="PproApp-Name" value="${application.name}"/>
+            <attribute name="PproApp-Vendor" value="${application.vendor}"/>
+            <attribute name="PproApp-Version" value="${deployment.number}"/>
+            <attribute name="PproApp-Icon" value="${logo.icon.name}"/>
+            <attribute name="x-ibm-pp-j9" value="${nokia.manifest.j9}"/>
+        </manifest>
+    </target>
+    <target name="nokiaS80-prepare-manifest-no-icon" depends="nokiaS80-prepare-j9" if="nokia.icon.invalid">
+        <manifest file="${manifest.build.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+            <attribute name="PproApp-Name" value="${application.name}"/>
+            <attribute name="PproApp-Vendor" value="${application.vendor}"/>
+            <attribute name="PproApp-Version" value="${deployment.number}"/>
+            <attribute name="x-ibm-pp-j9" value="${nokia.manifest.j9}"/>
+        </manifest>
+    </target>
+    <target name="nokiaS80-create-manifest" depends="nokiaS80-prepare-j9,nokiaS80-prepare-manifest,nokiaS80-prepare-manifest-no-icon" if="nokiaS80-platform.trigger"/>
+    <!--jad-jsr211-properties-->
+    <target name="jad-jsr211-properties.check">
+        <condition property="jad-jsr211-properties.allowed">
+            <and>
+                <isset property="cldc-platform.trigger"/>
+                <isset property="netbeans.home"/>
+                <isset property="is.mesdk_jsr211"/>
+            </and>
+        </condition>
+    </target>
+    <target name="jad-jsr211-properties" description="Updates JAD and manifest with JSR211 properties." depends="jad-jsr211-properties.check" if="jad-jsr211-properties.allowed">
+        <jadjsr211properties jadfile="${dist.dir}/${dist.jad}" manifestfile="${build.dir}/${manifest.file}"/>
+    </target>
+    <!--semc-build-j9-->
+    <target name="semc-build-j9" if="semc-platform.trigger">
+        <epocpathsetter home="${platform.home}"/>
+        <property name="semc.application.caps" value=""/>
+        <mkdir dir="${platform.home}/epoc32/winscw/c/private/${semc.application.uid}"/>
+        <mkdir dir="${build.dir}/j9"/>
+        <fail message="Main class is not set!">
+            <condition>
+                <equals arg1="${main.class}" arg2="" trim="true"/>
+            </condition>
+        </fail>
+        <j9builder jvmargs="${run.jvmargs}" mainclass="${main.class}" args="${application.args}" home="${platform.home}" dist="${j9.dist}" id="${semc.application.uid}" platform="${platform.type}" xlet="${main.class.xlet}" applet="${main.class.applet}" jarname="${dist.jar}"/>
+    </target>
+    <!--do-jar-->
+    <target name="do-jar" if="manifest.available">
+        <dirname file="${dist.dir}/${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <property name="manifest.build.file" location="${manifest.file}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.dir}/${dist.jar}" manifest="${manifest.build.file}" manifestencoding="UTF-8">
+            <fileset dir="${buildsystem.baton}"/>
+        </jar>
+    </target>
+    <!--nsicom-create-manifest-->
+    <target name="nsicom-create-manifest" if="nsicom-platform.trigger">
+        <jar jarfile="${dist.dir}/${dist.jar}" compress="${jar.compress}" update="true">
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+            </manifest>
+        </jar>
+    </target>
+    <!--do-jar-no-manifest-->
+    <target name="do-jar-no-manifest" unless="manifest.available">
+        <dirname file="${dist.dir}/${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.dir}/${dist.jar}">
+            <fileset dir="${buildsystem.baton}"/>
+        </jar>
+    </target>
+    <!--update-jad-->
+    <target name="update-jad" if="cldc-platform.trigger">
+        <nb-jad jadfile="${dist.dir}/${dist.jad}" jarfile="${dist.dir}/${dist.jar}" url="${dist.jar}" sign="${sign.enabled}" keystore="${sign.keystore}" keystorepassword="${sign.keystore.password}" alias="${sign.alias}" aliaspassword="${sign.alias.password}" encoding="UTF-8"/>
+    </target>
+    <target name="sign-jar" if="sign.jar.trigger">
+        <signjar jar="${dist.dir}/${dist.jar}" alias="${sign.alias}" keystore="${sign.keystore}" storepass="${sign.keystore.password}" keypass="${sign.alias.password}"/>
+    </target>
+    <!--ricoh-init-dalp-->
+    <target name="ricoh-init-dalp" if="ricoh-platform.trigger">
+        <property name="ricoh.application.telephone" value=""/>
+        <property name="ricoh.application.fax" value=""/>
+        <property name="ricoh.application.email" value=""/>
+        <condition property="no.unmanaged.dalp">
+            <and>
+                <isfalse value="${ricoh.dalp.is-managed}"/>
+                <not>
+                    <available file="./${application.name}.dalp"/>
+                </not>
+            </and>
+        </condition>
+        <fail if="no.unmanaged.dalp" message="Dalp file ${application.name}.dalp is required in project directory when DALP management is set to off."/>
+        <condition property="no.vendor.name" value="true">
+            <equals arg1="${application.vendor}" arg2="" trim="true"/>
+        </condition>
+        <condition property="ricoh.icon.invalid" value="true">
+            <or>
+                <contains string="${ricoh.application.icon}" substring="$${"/>
+                <equals arg1="${ricoh.application.icon}" arg2="" trim="true"/>
+            </or>
+        </condition>
+        <mkdir dir="${dist.dir}/lib"/>
+    </target>
+    <!--ricoh-add-app-icon-->
+    <target name="ricoh-add-app-icon" depends="ricoh-init-dalp" if="ricoh-platform.trigger" unless="ricoh.icon.invalid">
+        <pathconvert property="icon.name" pathsep=" ">
+            <path path="${ricoh.application.icon}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="*"/>
+            </chainedmapper>
+        </pathconvert>
+        <jar jarfile="${dist.jar}" compress="${jar.compress}" update="true">
+            <fileset file="${ricoh.application.icon}"/>
+        </jar>
+    </target>
+    <!--ricoh-build-dalp-with-icon-->
+    <target name="ricoh-build-dalp-with-icon" depends="ricoh-add-app-icon" if="ricoh-platform.trigger" unless="ricoh.icon.invalid">
+        <mkdir dir="${build.dir}/dalp/"/>
+        <taskIf if="ricoh.dalp.is-managed" value="true">
+            <dalp file="${dalp.dist}" iconname="${icon.name}">
+                <fileset dir="${dist.dir}/lib"/>
+            </dalp>
+            <echo message="Managed dalp file ${dalp.dist} created w/ icon"/>
+        </taskIf>
+        <taskIf if="ricoh.dalp.is-managed" value="false">
+            <copy tofile="${dalp.dist}">
+                <fileset file="./${application.name}.dalp"/>
+            </copy>
+            <echo message="Non-managed dalp file ${dalp.dist} w/ icon imported"/>
+        </taskIf>
+    </target>
+    <!--ricoh-build-dalp-without-icon-->
+    <target name="ricoh-build-dalp-without-icon" if="ricoh.icon.invalid">
+        <mkdir dir="${build.dir}/dalp/"/>
+        <taskIf if="ricoh.dalp.is-managed" value="true">
+            <dalp file="${dalp.dist}">
+                <fileset dir="${dist.dir}/lib"/>
+            </dalp>
+            <echo message="Managed dalp file ${dalp.dist} created w/o icon"/>
+        </taskIf>
+        <taskIf if="ricoh.dalp.is-managed" value="false">
+            <copy tofile="${dalp.dist}">
+                <fileset file="./${application.name}.dalp"/>
+            </copy>
+            <echo message="Non-managed dalp file ${dalp.dist} w/o icon imported"/>
+        </taskIf>
+    </target>
+    <target name="ricoh-build-dalp" depends="ricoh-build-dalp-with-icon,ricoh-build-dalp-without-icon" if="ricoh-platform.trigger">
+        <copy todir="${dist.dir}" file="${dalp.dist}" overwrite="true"/>
+    </target>
+    <!--savaje-build-jnlp-->
+    <target name="savaje-prepare-icon" if="savaje-platform.trigger" unless="savaje.icon.invalid">
+        <pathconvert property="savaje.application.icon.name" pathsep=" ">
+            <path path="${savaje.application.icon}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="*"/>
+            </chainedmapper>
+        </pathconvert>
+        <mkdir dir="${dist.dir}/lib"/>
+        <copy tofile="${dist.dir}/lib/${savaje.application.icon.name}" file="${savaje.application.icon}" overwrite="true" failonerror="false"/>
+    </target>
+    <target name="savaje-build-jnlp" depends="savaje-prepare-icon" if="savaje-platform.trigger">
+        <mkdir dir="${build.dir}/jnlp/"/>
+        <taskdef resource="org/netbeans/modules/j2me/cdc/project/savaje/defs.properties">
+            <classpath>
+                <pathelement path="${libs.savaje-ant-utils.classpath}"/>
+            </classpath>
+        </taskdef>
+        <jnlp dir="${build.dir}/jnlp/" file="bundle.jnlp" codebase="WTK_AGUI" distjar="lib/${dist.jar.name}" applicationicon="lib/${savaje.application.icon.name}" smallicon="${savaje.application.icon.small}" focusedicon="${savaje.application.icon.focused}" applicationtitle="${application.name}" applicationvendor="${application.vendor}" applicationDescription="${application.description}" applicationArgs="${application.args}" mainClass="${main.class}" debug="${savaje.bundle.debug}" debugport="${savaje.bundle.debug.port}">
+            <fileset dir="${dist.dir}/lib"/>
+        </jnlp>
+        <policy file="${build.dir}/jnlp/bundle.policy" codebase="WTK_AGUI"/>
+        <copy tofile="${dist.dir}/lib/classes.jar" file="${dist.dir}/${dist.jar}" overwrite="true"/>
+        <copy todir="${dist.dir}" file="${build.dir}/jnlp/bundle.jnlp" overwrite="true"/>
+        <copy tofile="${dist.dir}/bundle.policy" file="${build.dir}/jnlp/bundle.policy" overwrite="true"/>
+        <copy todir="${dist.dir}/lib" overwrite="true" failonerror="false">
+            <fileset dir="${resources.dir}"/>
+        </copy>
+    </target>
+    <!--jar-->
+    <target name="pre-jar"/>
+    <target name="post-jar"/>
+    <target name="jar" depends="preverify,pre-jar,set-password,create-jad,do-extra-libs,nokiaS80-create-manifest,jad-jsr211-properties,semc-build-j9,do-jar,nsicom-create-manifest,do-jar-no-manifest,update-jad,sign-jar,ricoh-build-dalp,savaje-build-jnlp,post-jar" description="Build jar and application descriptor."/>
+    <!--override-jad-->
+    <target name="override-jad" if="override.jarurl.trigger">
+        <property name="deployment.jarurl" value="${dist.jar}"/>
+        <nb-jad jadfile="${dist.dir}/${dist.jad}" jarfile="${dist.dir}/${dist.jar}" url="${deployment.jarurl}" sign="${sign.enabled}" keystore="${sign.keystore}" keystorepassword="${sign.keystore.password}" alias="${sign.alias}" aliaspassword="${sign.alias.password}" encoding="UTF-8"/>
+    </target>
+    <!--semc-make-sis-->
+    <target name="-semc-sis-init" if="semc-platform.trigger" description="Init necessary properties for SEMC platform">
+        <property name="pprolauncher.dir" value="${platform.home}/epoc32/tools/ppro-custom-launcher/output/arm/PProLauncher${semc.application.uid}"/>
+    </target>
+    <target name="semc-ppro-arm" if="semc-platform.trigger" description="Builds neccessary files for semc device">
+        <exec executable="${platform.home}/epoc32/tools/create-ppro-app.bat" dir="${platform.home}/epoc32/tools/">
+            <arg value="arm"/>
+            <arg value="${application.name}"/>
+            <arg value="${semc.application.uid}"/>
+            <arg value="${j9.dist}"/>
+            <arg value="${semc.application.caps}"/>
+            <env key="SDKDRIVE" value="${sdkdrive}"/>
+            <env key="EPOCROOT" value="${epocroot}"/>
+            <env key="Path" value="${epocpath}"/>
+        </exec>
+    </target>
+    <target name="semc-make-sis-icon" if="semc-platform.trigger" unless="semc.icon.invalid">
+        <copy file="${semc.application.icon}" tofile="${pprolauncher.dir}/${semc.application.uid}.mbm" failonerror="false"/>
+    </target>
+    <target name="semc-make-sis" depends="semc-ppro-arm,semc-make-sis-icon" if="semc-platform.trigger" unless="no.application.uid" description="Builds SIS file for device">
+        <property name="dll.dir" location="dll"/>
+        <mkdir dir="${dll.dir}"/>
+        <copy todir="${pprolauncher.dir}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </copy>
+        <copy todir="${pprolauncher.dir}">
+            <fileset dir="${dll.dir}">
+                <include name="**/*.dll"/>
+            </fileset>
+        </copy>
+        <copy todir="${pprolauncher.dir}" failonerror="false">
+            <fileset dir="${resources.dir}"/>
+        </copy>
+        <pkgmake workdir="${pprolauncher.dir}" id="${semc.application.uid}" appname="${application.name}" appicon="${semc.application.uid}.mbm" vendor="${application.vendor}" version="${deployment.number}" logo="${logo.image}" logoinstallonly="${logo.image.installonly}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+            <fileset dir="${dll.dir}">
+                <include name="**/*.dll"/>
+            </fileset>
+            <fileset dir="${resources.dir}"/>
+        </pkgmake>
+        <exec executable="${platform.home}/epoc32/tools/makesis" dir="${pprolauncher.dir}">
+            <arg value="-d${pprolauncher.dir}"/>
+            <arg value="PProLauncher${semc.application.uid}.pkg"/>
+            <arg value="${application.name}.sis"/>
+            <env key="SDKDRIVE" value="${sdkdrive}"/>
+            <env key="EPOCROOT" value="${epocroot}"/>
+            <env key="Path" value="${epocpath}"/>
+        </exec>
+        <copy todir="${dist.dir}">
+            <fileset dir="${pprolauncher.dir}">
+                <include name="**/*.SIS"/>
+                <include name="**/*.sis"/>
+            </fileset>
+        </copy>
+    </target>
+    <target name="semc-sign-sis" if="semc-platform.trigger" depends="semc-make-sis" unless="no.certificateorkey" description="Sign SIS file">
+        <exec executable="${platform.home}/epoc32/tools/signsis" dir="${pprolauncher.dir}">
+            <arg value="-s"/>
+            <arg value="${pprolauncher.dir}/${application.name}.sis"/>
+            <arg value="${pprolauncher.dir}/${application.name}-SIGNED.sis"/>
+            <arg value="${semc.certificate.path}"/>
+            <arg value="${semc.private.key.path}"/>
+            <arg value="${semc.private.key.password}"/>
+            <env key="SDKDRIVE" value="${sdkdrive}"/>
+            <env key="EPOCROOT" value="${epocroot}"/>
+            <env key="Path" value="${epocpath}"/>
+        </exec>
+        <copy todir="${dist.dir}">
+            <fileset dir="${pprolauncher.dir}">
+                <include name="**/*.SIS"/>
+                <include name="**/*.sis"/>
+            </fileset>
+        </copy>
+    </target>
+    <target name="semc-no-sign-sis" depends="semc-make-sis" if="no.certificateorkey" unless="no.application.uid" description="Prints out only info when SIS is not signed ">
+        <echo message="Signed SIS was not created! Set up path to certificate and private key in project properties!"/>
+    </target>
+    <target name="-pre-semc-sis" if="semc-platform.trigger" description="Customizable target called before SIS file is built"/>
+    <target name="semc-sis" if="semc-platform.trigger" depends="-semc-sis-init, -pre-semc-sis, semc-sign-sis,semc-no-sign-sis, -post-semc-sis" unless="no.application.uid"/>
+    <target name="-post-semc-sis" if="semc-platform.trigger" description="Customizable target called after SIS file is built"/>
+    <!--increment-app-version-->
+    <target name="increment-app-version" if="app-version.autoincrement.trigger">
+        <propertyfile file="nbproject/private/private.properties">
+            <entry key="deployment.counter" type="int" operation="+" default="2" pattern="0"/>
+            <entry key="deployment.number" value="000000${deployment.counter}"/>
+        </propertyfile>
+        <property name="deployment.number.pattern" value="\2\3.\5\6.\8\9"/>
+        <replaceregexp byline="true" file="nbproject/private/private.properties" match="^deployment.number=[0-9]*(0|([1-9]))([0-9])(0|([1-9]))([0-9])(0|([1-9]))([0-9])$" replace="deployment.number=${deployment.number.pattern}"/>
+    </target>
+    <!--build-->
+    <target name="pre-build"/>
+    <target name="post-build"/>
+    <target name="build" depends="jar,pre-build,override-jad,semc-sis,increment-app-version,post-build" description="Builds final distribution of the application."/>
+    <!--open-netmon-->
+    <target name="netmon.check">
+        <condition property="netmon.allowed">
+            <and>
+                <not>
+                    <isset property="bdj-platform.trigger"/>
+                </not>
+                <isset property="netbeans.home"/>
+                <isset property="is.mesdk_netmon"/>
+            </and>
+        </condition>
+    </target>
+    <target name="open-netmon" description="Open network monitor" depends="netmon.check" if="netmon.allowed">
+        <opennetmon device="${platform.device}"/>
+    </target>
+    <!--cldc-run-->
+    <target name="cldc-run" if="cldc-platform.trigger">
+        <nb-run jadfile="${dist.dir}/${dist.jad}" jarfile="${dist.dir}/${dist.jar}" jadurl="${dist.jad.url}" device="${platform.device}" platformhome="${platform.home}" platformtype="${platform.type}" execmethod="${run.method}" securitydomain="${evaluated.run.security.domain}" commandline="${platform.runcommandline}" classpath="${platform.bootclasspath}:${dist.dir}/${dist.jar}" cmdoptions="${run.cmd.options}"/>
+    </target>
+    <!--ricoh-run-->
+    <target name="ricoh-run" if="ricoh-platform.trigger">
+        <copy todir="${platform.home}/mnt/sd3/sdk/dsdk/dist/${ricoh.application.uid}" overwrite="true">
+            <fileset dir="${dist.dir}">
+                <patternset refid="deployment.patternset"/>
+            </fileset>
+            <flattenmapper/>
+        </copy>
+        <ant antfile="${platform.home}/startemulator.xml" target="start_emulator" dir="${platform.home}">
+            <property name="emulator.skin" value="WVGA.xml"/>
+            <property name="emulator.autolaunchid" value="${ricoh.application.uid}"/>
+        </ant>
+    </target>
+    <!--semc-run-and-debug-prepare-targets-->
+    <target name="semc-icon-assembly" if="semc-platform.trigger" unless="semc.icon.invalid">
+        <copy file="${semc.application.icon}" tofile="${platform.home}/epoc32/release/winscw/udeb/z/Resource/Apps/${semc.application.uid}.mbm" failonerror="false"/>
+        <iconassembly home="${platform.home}" uid="${semc.application.uid}" count="${application.icon.count}"/>
+    </target>
+    <target name="semc-ppro-emulator" if="semc-platform.trigger" description="Builds neccessary files for semc emulator">
+        <exec executable="${platform.home}/epoc32/tools/create-ppro-app.bat" dir="${platform.home}/epoc32/tools/">
+            <arg value="win32"/>
+            <arg value="${application.name}"/>
+            <arg value="${semc.application.uid}"/>
+            <arg value="${j9.dist}"/>
+            <arg value="${semc.application.caps}"/>
+            <env key="SDKDRIVE" value="${sdkdrive}"/>
+            <env key="EPOCROOT" value="${epocroot}"/>
+            <env key="Path" value="${epocpath}"/>
+        </exec>
+    </target>
+    <target name="semc-do-run" if="semc-platform.trigger" description="Prepare log folders, copy necessary files">
+        <copy todir="${platform.home}/epoc32/winscw/C/private/${semc.application.uid}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </copy>
+        <mkdir dir="${platform.home}/epoc32/winscw/c/logs/j9vm"/>
+        <epocinipath file="${platform.home}/epoc32/data/epoc.ini"/>
+        <exec executable="${platform.home}/epoc32/release/winscw/udeb/epoc.exe">
+            <env key="SDKDRIVE" value="${sdkdrive}"/>
+            <env key="EPOCROOT" value="${epocroot}"/>
+            <env key="Path" value="${epocpath}"/>
+        </exec>
+    </target>
+    <!--semc-run-->
+    <target name="semc-run" depends="semc-icon-assembly,semc-ppro-emulator,semc-do-run" if="semc-platform.trigger"/>
+    <!--savaje-run-->
+    <target name="savaje-run" if="savaje-platform.trigger">
+        <sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </sunEmulatorExec>
+    </target>
+    <!--sjmc-run-->
+    <target name="sjmc-run" if="sjmc-platform.trigger">
+        <taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
+        <sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </sjmcEmulatorExec>
+    </target>
+    <!--ojec-run-->
+    <target name="ojec-run" if="ojec-platform.trigger">
+        <taskdef name="ojecEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.ojec.OJECToolkitEmulatorExecTask" classpath="${libs.ojec-ant-utils.classpath}"/>
+        <ojecEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </ojecEmulatorExec>
+    </target>
+    <!--nokiaS80-run-->
+    <target name="nokiaS80-run" if="nokiaS80-platform.trigger">
+        <mkdir dir="${platform.home}/epoc32/wins/c/PP_Applications"/>
+        <mkdir dir="${platform.home}/epoc32/wins/c/logs/j9vm"/>
+        <taskdef name="nokiaexec" classname="org.netbeans.modules.j2me.cdc.project.nokiaS80.NokiaEmulatorExecTask" classpath="${libs.nokiaS80-ant-utils.classpath}"/>
+        <nokiaexec jvmargs="${run.jvmargs}" mainclass="${main.class}" args="${application.args}" home="${platform.home}" device="${platform.device}" xlet="${main.class.xlet}" applet="${main.class.applet}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </nokiaexec>
+    </target>
+    <!--nsicom-run-->
+    <target name="nsicom-run" if="nsicom-platform.trigger">
+        <nsicomExecDeploy home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.jvmargs}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" verbose="${nsicom.application.runverbose}" hostip="${nsicom.application.monitorhost}" runondevice="${nsicom.application.runremote}" remotevmlocation="${nsicom.remotevm.location}" remoteDataLocation="${nsicom.remoteapp.location}">
+            <fileset dir="${dist.dir}">
+                <exclude name="javadoc/**"/>
+            </fileset>
+        </nsicomExecDeploy>
+    </target>
+    <!--cdc-hi-run-->
+    <target name="-pre-cdc-hi-run" if="cdc-hi-platform.trigger"/>
+    <target name="-cdc-hi-run" if="cdc-hi-platform.trigger">
+        <fail message="Main class is not set!">
+            <condition>
+                <equals arg1="${main.class}" arg2=""/>
+            </condition>
+        </fail>
+        <exec executable="${platform.home}/bin/emulator">
+            <arg value="-cp"/>
+            <arg value="${basedir}/${dist.dir}/${dist.jar}"/>
+            <arg value="-Xdevice:${platform.device}"/>
+            <arg value="${run.cmd.options}"/>
+            <arg value="-Xmain:${main.class}"/>
+            <arg value="${application.args}"/>
+        </exec>
+    </target>
+    <target name="-post-cdc-hi-run" if="cdc-hi-platform.trigger"/>
+    <target name="cdc-hi-run" if="cdc-hi-platform.trigger" depends="-pre-cdc-hi-run, -cdc-hi-run, -post-cdc-hi-run"/>
+    <!--open-profiler-->
+    <target name="profiler.check">
+        <condition property="profiler.allowed">
+            <and>
+                <not>
+                    <isset property="bdj-platform.trigger"/>
+                </not>
+                <isset property="netbeans.home"/>
+                <isset property="is.mesdk_profiler"/>
+            </and>
+        </condition>
+    </target>
+    <target name="open-profiler" description="Open profiler snapshot" depends="profiler.check" if="profiler.allowed">
+        <openprofiler device="${platform.device}"/>
+    </target>
+    <!--run-->
+    <target name="pre-run"/>
+    <target name="run" depends="jar,pre-run,open-netmon,cldc-run,ricoh-run,semc-run,savaje-run,sjmc-run,ojec-run,nokiaS80-run,nsicom-run,cdc-hi-run,open-profiler" description="Run MIDlet suite."/>
+    <target name="run-no-build" depends="init,pre-run,open-netmon,cldc-run,ricoh-run,semc-run,savaje-run,sjmc-run,ojec-run,nokiaS80-run,nsicom-run,cdc-hi-run,open-profiler" description="Quick Run already built MIDlet suite."/>
+    <!--cldc-debug-->
+    <target name="cldc-debug" if="cldc-platform.trigger">
+        <parallel>
+            <nb-run debug="true" debugsuspend="true" debugserver="true" debuggeraddressproperty="jpda.port" platformtype="${platform.type}" platformhome="${platform.home}" device="${platform.device}" jadfile="${dist.dir}/${dist.jad}" jadurl="${dist.jad.url}" jarfile="${dist.dir}/${dist.jar}" execmethod="${run.method}" securitydomain="${evaluated.run.security.domain}" commandline="${platform.debugcommandline}" classpath="${platform.bootclasspath}:${dist.dir}/${dist.jar}" cmdoptions="${run.cmd.options}"/>
+            <sequential>
+                <sleep seconds="5"/>
+                <antcall target="nbdebug"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--ricoh-debug-->
+    <target name="ricoh-debug" if="ricoh-platform.trigger">
+        <copy todir="${platform.home}/mnt/sd3/sdk/dsdk/dist/${ricoh.application.uid}" overwrite="true">
+            <fileset dir="${dist.dir}">
+                <patternset refid="deployment.patternset"/>
+            </fileset>
+            <flattenmapper/>
+        </copy>
+        <parallel>
+            <ant antfile="${platform.home}/startemulator_debug.xml" target="debug_emulator" dir="${platform.home}">
+                <property name="emulator.skin" value="WVGA.xml"/>
+                <property name="emulator.autolaunchid" value="${ricoh.application.uid}"/>
+            </ant>
+            <sequential>
+                <sleep seconds="5"/>
+                <property name="jpda.port" value="8000"/>
+                <property name="debug.period" value="3000"/>
+                <antcall target="nbdebug" inheritall="true" inheritrefs="true"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--semc-debug-->
+    <!--semc-build-j9-debug-->
+    <target name="semc-build-j9-debug" if="semc-platform.trigger">
+        <fail message="Main class is not set!">
+            <condition>
+                <equals arg1="${main.class}" arg2=""/>
+            </condition>
+        </fail>
+        <j9builder jvmargs="${run.jvmargs} -Xrunjdwp:server=n,address=${jpda.port}" mainclass="${main.class}" args="${application.args}" platform="${platform.type}" home="${platform.home}" dist="${j9.dist}" id="${semc.application.uid}" xlet="${main.class.xlet}" applet="${main.class.applet}" jarname="${dist.jar}"/>
+    </target>
+    <target name="semc-debug-start" if="semc-platform.trigger">
+        <nbjpdastart transport="dt_socket" addressproperty="jpda.port" name="${main.class}">
+            <classpath>
+                <path path="${build.classes.dir}"/>
+            </classpath>
+            <bootclasspath>
+                <path path="${platform.bootclasspath}"/>
+            </bootclasspath>
+        </nbjpdastart>
+    </target>
+    <target name="semc-debug" depends="semc-debug-start,semc-build-j9-debug,semc-icon-assembly,semc-ppro-emulator,semc-do-run" if="semc-platform.trigger"/>
+    <!--savaje-debug-->
+    <target name="savaje-debug" if="savaje-platform.trigger">
+        <parallel>
+            <sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
+                <fileset dir="${dist.dir}">
+                    <exclude name="javadoc/**"/>
+                </fileset>
+            </sunEmulatorExec>
+            <sequential>
+                <sleep seconds="5"/>
+                <antcall target="nbdebug"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--sjmc-debug-->
+    <target name="sjmc-debug" if="sjmc-platform.trigger">
+        <taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
+        <parallel>
+            <sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
+                <fileset dir="${dist.dir}">
+                    <exclude name="javadoc/**"/>
+                </fileset>
+            </sjmcEmulatorExec>
+            <sequential>
+                <sleep seconds="1"/>
+                <antcall target="nbdebug"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--ojec-debug-->
+    <target name="ojec-debug" if="ojec-platform.trigger">
+        <taskdef name="ojecEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.ojec.OJECToolkitEmulatorExecTask" classpath="${libs.ojec-ant-utils.classpath}"/>
+        <parallel>
+            <ojecEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
+                <fileset dir="${dist.dir}">
+                    <exclude name="javadoc/**"/>
+                </fileset>
+            </ojecEmulatorExec>
+            <sequential>
+                <sleep seconds="1"/>
+                <antcall target="nbdebug"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--cdc-hi-debug-->
+    <target name="-pre-cdc-hi-debug" if="cdc-hi-platform.trigger"/>
+    <target name="-cdc-hi-debug" if="cdc-hi-platform.trigger">
+        <taskdef name="freePortRetriever" classname="org.netbeans.modules.j2me.cdc.project.savaje.FreePortRetriever" classpath="${libs.savaje-ant-utils.classpath}"/>
+        <freePortRetriever debuggerPortProperty="active.debug.port"/>
+        <parallel>
+            <exec executable="${platform.home}/bin/emulator">
+                <arg value="-cp"/>
+                <arg value="${basedir}/${dist.dir}/${dist.jar}"/>
+                <arg value="-Xdevice:${platform.device}"/>
+                <arg value="-Xmain:${main.class}"/>
+                <arg value="-Xrunjdwp:transport=dt_socket,address=${active.debug.port},server=y,suspend=y"/>
+                <arg value="-Xdebug"/>
+            </exec>
+            <property name="debug.delay" value="500"/>
+            <nb-mobility-debug address="${active.debug.port}" name="${app.codename}" delay="${debug.delay}" timeout="${debug.timeout}" period="2000"/>
+        </parallel>
+    </target>
+    <target name="-post-cdc-hi-debug" if="cdc-hi-platform.trigger"/>
+    <target name="cdc-hi-debug" if="cdc-hi-platform.trigger" depends="-pre-cdc-hi-debug, -cdc-hi-debug, -post-cdc-hi-debug"/>
+    <!--nokiaS80-debug-->
+    <target name="nokiaS80-debug" if="nokiaS80-platform.trigger">
+        <taskdef name="j9builder" classname="org.netbeans.modules.j2me.cdc.project.J9Builder" classpath="${libs.cdc-ant-utils.classpath}"/>
+        <j9builder jvmargs="${run.jvmargs} -Xrunjdwp:server=n,address=${jpda.port}" mainclass="${main.class}" args="${application.args}" platform="${platform.type}" home="${platform.home}" dist="${j9.dist}" id="NOKIA" xlet="${main.class.xlet}" applet="${main.class.applet}" jarname="${dist.jar}"/>
+        <mkdir dir="${platform.home}/epoc32/wins/c/logs/j9vm"/>
+        <taskdef name="nokiaexec" classname="org.netbeans.modules.j2me.cdc.project.nokiaS80.NokiaEmulatorExecTask" classpath="${libs.nokiaS80-ant-utils.classpath}"/>
+        <parallel>
+            <nokiaexec debug="true" debuggeraddressproperty="jpda.port" jvmargs="${run.jvmargs}" mainclass="${main.class}" args="${application.args}" home="${platform.home}" device="${platform.device}" xlet="${main.class.xlet}" applet="${main.class.applet}">
+                <fileset dir="${dist.dir}">
+                    <exclude name="javadoc/**"/>
+                </fileset>
+            </nokiaexec>
+            <sequential>
+                <sleep seconds="10"/>
+                <antcall target="nbdebug"/>
+            </sequential>
+        </parallel>
+    </target>
+    <!--nsicom-debug-->
+    <target name="nsicom-debug" if="nsicom-platform.trigger">
+        <fail message="Debugging is not supported in this NSIcom VM version. Use monitoring facility instead!"/>
+    </target>
+    <!--debug-->
+    <target name="remove-timestamp">
+        <delete file="$/.timestamp"/>
+    </target>
+    <target name="pre-debug"/>
+    <target name="debug" description="Debug project." depends="clean,jar,remove-timestamp,pre-debug,cldc-debug,ricoh-debug,semc-debug,savaje-debug,sjmc-debug,ojec-debug,cdc-hi-debug,nokiaS80-debug,nsicom-debug"/>
+    <target name="nbdebug" description="Start NetBeans debugger" if="netbeans.home">
+        <property name="debug.delay" value="5000"/>
+        <nb-mobility-debug address="${jpda.port}" name="${app.codename}" delay="${debug.delay}" timeout="${debug.timeout}" period="2000"/>
+    </target>
+    <target name="debug-run-base" depends="cldc-debug-run,cdc-hi-debug-run"/>
+    <target name="-pre-cldc-debug-run" if="cldc-platform.trigger"/>
+    <target name="-cldc-debug-run" depends="init,jar" if="cldc-platform.trigger">
+        <echo> Starting emulator with port number ${active.debug.port} </echo>
+        <exec executable="${platform.home}/bin/emulator">
+            <arg value="-Xdescriptor:${basedir}/${dist.dir}/${dist.jad}"/>
+            <arg value="-Xdevice:${platform.device}"/>
+            <arg value="-Xdebug"/>
+            <arg value="-Xrunjdwp:transport=dt_socket,address=${active.debug.port},server=y,suspend=y"/>
+        </exec>
+    </target>
+    <target name="-post-cldc-debug-run" if="cldc-platform.trigger"/>
+    <target name="cldc-debug-run" if="cldc-platform.trigger" depends="-pre-cldc-debug-run, -cldc-debug-run, -post-cldc-debug-run"/>
+    <target name="-pre-cdc-hi-debug-run" if="cdc-hi-platform.trigger"/>
+    <target name="-cdc-hi-debug-run" depends="init,jar" if="cdc-hi-platform.trigger">
+        <fail message="Main class is not set!">
+            <condition>
+                <equals arg1="${main.class}" arg2=""/>
+            </condition>
+        </fail>
+        <echo> Starting emulator with port number ${active.debug.port} </echo>
+        <exec executable="${platform.home}/bin/emulator">
+            <arg value="-cp"/>
+            <arg value="${basedir}/${dist.dir}/${dist.jar}"/>
+            <arg value="-Xdevice:${platform.device}"/>
+            <arg value="-Xmain:${main.class}"/>
+            <arg value="-Xdebug"/>
+            <arg value="-Xrunjdwp:transport=dt_socket,address=${active.debug.port},server=y,suspend=y"/>
+        </exec>
+    </target>
+    <target name="-post-cdc-hi-debug-run" if="cdc-hi-platform.trigger"/>
+    <target name="cdc-hi-debug-run" if="cdc-hi-platform.trigger" depends="-pre-cdc-hi-debug-run, -cdc-hi-debug-run, -post-cdc-hi-debug-run"/>
+    <!--javadoc-->
+    <target name="browse-javadoc" if="netbeans.home" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target name="javadoc" depends="preprocess">
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc source="${javac.source}" destdir="${dist.javadoc.dir}" bootclasspath="${platform.bootclasspath}" notree="${javadoc.notree}" use="${javadoc.use}" nonavbar="${javadoc.nonavbar}" noindex="${javadoc.noindex}" splitindex="${javadoc.splitindex}" author="${javadoc.author}" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}" private="${javadoc.private}" encoding="${javac.encoding}" docencoding="${javac.encoding}" charset="${javac.encoding}">
+            <classpath>
+                <path path="${libs.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <pathelement location="${buildsystem.baton}"/>
+            </sourcepath>
+        </javadoc>
+        <antcall target="browse-javadoc"/>
+    </target>
+    <!--clean and build-->
+    <target name="rebuild" depends="clean,build" description="Rebuild the application."/>
+    <target name="clean-timestamp">
+        <delete file="${build.dir}/.timestamp"/>
+    </target>
+    <target name="clean-preprocessed">
+        <delete dir="${preprocessed.dir}"/>
+    </target>
+    <target name="clean-classes">
+        <delete dir="${build.classes.dir}"/>
+    </target>
+    <target name="clean-obfuscated">
+        <delete file="${obfuscator.srcjar}"/>
+        <delete file="${obfuscator.destjar}"/>
+        <delete dir="${obfuscated.classes.dir}"/>
+    </target>
+    <target name="clean-preverified">
+        <delete dir="${preverify.sources.dir}"/>
+        <delete dir="${preverify.classes.dir}"/>
+    </target>
+    <target name="clean-manifest" if="manifest.build.file">
+        <delete file="${manifest.build.file}"/>
+    </target>
+    <target name="clean-jar">
+        <delete file="${dist.dir}/${dist.jar}"/>
+    </target>
+    <target name="clean-jad">
+        <delete file="${dist.dir}/${dist.jad}"/>
+    </target>
+    <target name="clean-javadoc">
+        <delete dir="${dist.javadoc.dir}"/>
+    </target>
+    <target name="clean-j9" if="j9.dist">
+        <delete file="${j9.dist}"/>
+    </target>
+    <target name="clean-ricoh" if="ricoh-platform.trigger">
+        <delete dir="${platform.home}/mnt/sd3/sdk/dsdk/dist/${ricoh.application.uid}"/>
+        <delete dir="${build.dir}/dalp"/>
+        <delete file="${dist.dir}/${application.name}.dalp"/>
+        <delete dir="${dist.dir}/lib"/>
+    </target>
+    <target name="clean-semc" if="semc-platform.trigger">
+        <delete dir="${dist.dir}" includes="*.sis,*.SIS"/>
+        <delete dir="${platform.home}/epoc32/tools/ppro-custom-launcher/output/win32/PProLauncher${semc.application.uid}"/>
+        <delete dir="${platform.home}/epoc32/tools/ppro-custom-launcher/output/arm/PProLauncher${semc.application.uid}"/>
+        <delete file="${platform.home}/epoc32/release/winscw/udeb/PProLauncher${semc.application.uid}.exe"/>
+        <delete file="${platform.home}/epoc32/release/winscw/udeb/z/Resource/Apps/PProLauncher${semc.application.uid}.rsc"/>
+        <delete file="${platform.home}/epoc32/release/winscw/udeb/z/private/10003a3f/apps/PProLauncher${semc.application.uid}_reg.rsc"/>
+        <delete file="${platform.home}/epoc32/release/winscw/udeb/z/Resource/Apps/PProLauncher${semc.application.uid}_loc.R01"/>
+        <delete file="${platform.home}/epoc32/release/winscw/udeb/z/Resource/Apps/${semc.application.uid}.mbm"/>
+        <delete file="${platform.home}/epoc32/data/Z/private/10003a3f/apps/PProLauncher${semc.application.uid}_reg.rsc"/>
+        <delete file="${platform.home}/epoc32/data/Z/Resource/Apps/PProLauncher${semc.application.uid}.rsc"/>
+        <delete file="${platform.home}/epoc32/data/Z/Resource/Apps/PProLauncher${semc.application.uid}_loc.R01"/>
+        <delete dir="${platform.home}/epoc32/winscw/C/private/${semc.application.uid}"/>
+    </target>
+    <target name="clean-savaje" if="savaje-platform.trigger">
+        <delete dir="${build.dir}/jnlp"/>
+        <delete file="${dist.dir}/bundle.jnlp"/>
+        <delete file="${dist.dir}/bundle.policy"/>
+        <delete dir="${dist.dir}/lib"/>
+    </target>
+    <target name="clean-sjmc" if="sjmc-platform.trigger">
+        <delete dir="${dist.dir}/lib"/>
+    </target>
+    <target name="clean-ojec" if="ojec-platform.trigger">
+        <delete dir="${dist.dir}/lib"/>
+    </target>
+    <!--clean-->
+    <target name="pre-clean"/>
+    <target name="post-clean"/>
+    <target name="-clean-configuration">
+        <condition property="can.clean.config.completely">
+            <not>
+                <equals arg1="${config.active}" arg2="" trim="true"/>
+            </not>
+        </condition>
+    </target>
+    <target name="-clean-configuration-root" depends="-clean-configuration" if="can.clean.config.completely">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+        <available property="dist.dir.exists" file="dist"/>
+        <condition property="dist.dir.empty">
+            <and>
+                <isset property="dist.dir.exists"/>
+                <resourcecount count="0">
+                    <fileset dir="dist"/>
+                </resourcecount>
+            </and>
+        </condition>
+    </target>
+    <target name="-clean-default-configuration-root" depends="-clean-configuration" unless="can.clean.config.completely">
+        <tempfile deleteonexit="true" property="tmp.exclude" prefix="convert"/>
+        <echo file="${tmp.exclude}">${all.configurations}</echo>
+        <replaceregexp file="${tmp.exclude}" match="(.)(,|$)" replace="\1/**\2" flags="g"/>
+        <loadfile srcfile="${tmp.exclude}" property="exclude.pattern"/>
+        <delete file="${tmp.exclude}"/>
+        <delete quiet="true">
+            <fileset dir="${build.dir}" excludes="${exclude.pattern}"/>
+        </delete>
+        <delete quiet="true">
+            <fileset dir="${dist.dir}" excludes="${exclude.pattern}"/>
+        </delete>
+        <delete quiet="true">
+            <fileset dir="${dist.dir}/lib"/>
+        </delete>
+        <available property="dist.dir.exists" file="dist"/>
+        <condition property="dist.dir.empty">
+            <and>
+                <isset property="dist.dir.exists"/>
+                <resourcecount count="0">
+                    <fileset dir="dist"/>
+                </resourcecount>
+            </and>
+        </condition>
+    </target>
+    <target name="-clean-completely" if="dist.dir.empty">
+        <delete dir="build" quiet="true"/>
+        <delete dir="dist" quiet="true"/>
+    </target>
+    <target name="do-clean" depends="pre-clean,clean-timestamp,clean-preprocessed,clean-classes,clean-obfuscated,clean-preverified,clean-manifest,clean-jar,clean-jad,clean-javadoc,clean-j9,clean-ricoh,clean-semc,clean-savaje,clean-sjmc,clean-ojec,-clean-default-configuration-root,-clean-configuration-root,-clean-completely,post-clean"/>
+    <target name="clean" depends="conditional-clean" if="no.clean.before.build" description="Clean build products.">
+        <antcall target="do-clean" inheritall="true" inheritrefs="true"/>
+    </target>
+    <!--deploy-->
+    <target name="pre-deploy"/>
+    <target name="do-deploy" if="deployment.method" unless="skip.deployment">
+        <fail unless="deployment.scriptfile">Property deployment.${deployment.method}.scriptfile not set. The property should point to an Ant script providing ${deployment.method} deployment.</fail>
+        <ant antfile="${deployment.scriptfile}" inheritall="true" inheritrefs="true"/>
+        <antcall target="post-deploy" inheritall="true" inheritrefs="true"/>
+    </target>
+    <target name="post-deploy"/>
+    <target name="deploy" depends="build,pre-deploy,do-deploy,post-deploy"/>
+    <!--for-all-configs targets-->
+    <target name="for-all-configs" depends="load-properties">
+        <fail unless="libs.ant-contrib.classpath">Classpath to Ant Contrib library (libs.ant-contrib.classpath property) is not set.</fail>
+        <property name="selected.configurations" value="${all.configurations}"/>
+        <taskdef resource="net/sf/antcontrib/antlib.xml">
+            <classpath>
+                <pathelement path="${libs.ant-contrib.classpath}"/>
+            </classpath>
+        </taskdef>
+        <for list="${selected.configurations}" param="cfg" keepgoing="true" trim="true">
+            <sequential>
+                <echo>Active project configuration: @{cfg}</echo>
+                <antcall target="${target.to.call}" inheritall="false" inheritrefs="false">
+                    <param name="config.active" value="@{cfg}"/>
+                    <propertyset>
+                        <propertyref name="no.deps"/>
+                    </propertyset>
+                </antcall>
+                <property name="no.deps" value="true"/>
+            </sequential>
+        </for>
+    </target>
+    <target name="jar-all">
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="jar"/>
+        </antcall>
+    </target>
+    <target name="build-all">
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="build"/>
+        </antcall>
+    </target>
+    <target name="javadoc-all">
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="javadoc"/>
+        </antcall>
+    </target>
+    <target name="deploy-all">
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="deploy"/>
+        </antcall>
+    </target>
+    <target name="rebuild-all">
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="rebuild"/>
+        </antcall>
+    </target>
+    <target name="clean-all">
+        <property file="nbproject/project.properties"/>
+        <fail unless="build.root.dir">Property build.root.dir is not set. By default its value should be \"build\".</fail>
+        <fail unless="dist.root.dir">Property dist.root.dir is not set. By default its value should be \"dist\".</fail>
+        <antcall target="for-all-configs">
+            <param name="target.to.call" value="clean"/>
+        </antcall>
+    </target>
+</project>

File nbproject/genfiles.properties

+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+build.xml.data.CRC32=31cbc7cd
+build.xml.script.CRC32=b1669726
+build.xml.stylesheet.CRC32=9c6a911d
+nbproject/build-impl.xml.data.CRC32=31cbc7cd
+nbproject/build-impl.xml.script.CRC32=4ae22da1
+nbproject/build-impl.xml.stylesheet.CRC32=7a0aeb65

File nbproject/private/private.properties

+#Fri, 18 Feb 2011 23:33:41 -0300
+app-version.autoincrement=true
+config.active=
+deployment.counter=64
+deployment.number=0.0.63
+javadoc.preview=true
+netbeans.user=/home/yaochunlin/.netbeans/7.0

File nbproject/private/private.xml

+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
+        <file>file:/home/yaochunlin/NetBeansProjects/trunk/src/TokenGenerator/TokenGen.java</file>
+        <file>file:/home/yaochunlin/NetBeansProjects/trunk/src/TokenGenerator/StockDB.java</file>
+        <file>file:/home/yaochunlin/NetBeansProjects/trunk/src/TokenGenerator/Main.java</file>
+    </open-files>
+</project-private>

File nbproject/project.properties

+abilities=MMAPI=1.1,JSR82=1.1,JSR280=1.0,JSR226=1.0,MIDP=2.1,JSR229=1.1,SATSA=1.0,CLDC=1.1,JSR177=1.0,JSR179=1.0,J2MEWS=1.0,WMA=2.0,JSR172=1.0,JSR256=1.0,OBEX=1.0,ColorScreen=,JSR238=1.0,JSR239=1.0,JSR211=1.0,JSR234=1.0,ScreenWidth=240,JSR75=1.0,JSR184=1.1,ScreenHeight=320,ScreenColorDepth=16,JSR180=1.1.0
+all.configurations=\ 
+application.args=
+application.description=
+application.description.detail=
+application.name=gauth
+application.vendor=Vendor
+build.classes.dir=${build.dir}/compiled
+build.classes.excludes=**/*.java,**/*.form,**/*.class,**/.nbintdb,**/*.mvd,**/*.wsclient,**/*.vmd
+build.dir=build/${config.active}
+build.root.dir=build
+debug.level=debug
+debugger.timeout=
+deployment.copy.target=deploy
+deployment.instance=default
+deployment.jarurl=${dist.jar}
+deployment.method=Copy
+deployment.override.jarurl=false
+dist.dir=dist/${config.active}
+dist.jad=gauth.jad
+dist.jar=gauth.jar
+dist.javadoc.dir=${dist.dir}/doc
+dist.root.dir=dist
+extra.classpath=
+file.reference.builtin.ks=${netbeans.user}/config/j2me/builtin.ks
+file.reference.cldc_classes.zip=lib/cldc_classes.zip
+file.reference.cldc_crypto.zip=lib/cldc_crypto.zip
+filter.exclude.tests=false
+filter.excludes=
+filter.more.excludes=**/overview.html,**/package.html
+filter.use.standard=true
+jar.compress=false
+javac.debug=true
+javac.deprecation=false
+javac.encoding=UTF-8
+javac.optimize=false
+javac.source=1.3
+javac.target=1.3
+javadoc.author=false
+javadoc.encoding=
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+libs.classpath=${libs.NetBeans MIDP Components.classpath}:${file.reference.cldc_classes.zip}:${file.reference.cldc_crypto.zip}:${libs.NetBeans MIDP Components PDA.classpath}
+main.class=
+main.class.class=applet
+manifest.apipermissions=
+manifest.file=manifest.mf
+manifest.is.liblet=false
+manifest.jad=
+manifest.manifest=
+manifest.midlets=MIDlet-1: Sware Token Generator,/vass.png,TokenGenerator.Main\n
+manifest.others=MIDlet-Vendor: Vendor\nMIDlet-Name: Sware Token Generator\nMIDlet-Version: 1.0\n
+manifest.pushregistry=
+name=Google Auth Mobile Token Generator
+no.dependencies=false
+nokiaS80.application.icon=
+nsicom.application.monitorhost=
+nsicom.application.runremote=
+nsicom.application.runverbose=
+nsicom.remoteapp.location=\\My Documents\\NetBeans Applications
+nsicom.remotevm.location=\\Windows\\creme\\bin\\CrEme.exe
+obfuscated.classes.dir=${build.dir}/obfuscated
+obfuscation.custom=
+obfuscation.level=9
+obfuscator.destjar=${build.dir}/obfuscated.jar
+obfuscator.srcjar=${build.dir}/before-obfuscation.jar
+platform.active=Sun_Java_TM__Wireless_Toolkit_2_5_2_01_for_CLDC
+platform.active.description=Sun Java(TM) Wireless Toolkit 2.5.2_01 for CLDC
+platform.apis=JSR234-1.0,J2ME-WS-1.0,JSR239-1.0,JSR184-1.1,JSR238-1.0,MMAPI-1.1,JSR226-1.0,JSR211-1.0,JSR75-1.0,WMA-2.0
+platform.bootclasspath=${platform.home}/lib/jsr226.jar:${platform.home}/lib/jsr238.jar:${platform.home}/lib/jsr211.jar:${platform.home}/lib/jsr184.jar:${platform.home}/lib/jsr239.jar:${platform.home}/lib/jsr75.jar:${platform.home}/lib/mmapi.jar:${platform.home}/lib/j2me-ws.jar:${platform.home}/lib/wma20.jar:${platform.home}/lib/jsr234.jar:${platform.home}/lib/cldcapi10.jar:${platform.home}/lib/midpapi20.jar
+platform.configuration=CLDC-1.0
+platform.device=DefaultColorPhone
+platform.fat.jar=true
+platform.profile=MIDP-2.0
+platform.trigger=CLDC
+platform.type=UEI-1.0.1
+preprocessed.dir=${build.dir}/preprocessed
+preverify.classes.dir=${build.dir}/preverified
+preverify.sources.dir=${build.dir}/preverifysrc
+resources.dir=resources
+ricoh.application.email=
+ricoh.application.fax=
+ricoh.application.icon=
+ricoh.application.target-jar=
+ricoh.application.telephone=
+ricoh.application.uid=21786358
+ricoh.application.version=
+ricoh.dalp.application-desc.auto-run=false
+ricoh.dalp.application-desc.energy-save=
+ricoh.dalp.application-desc.exec-auth=
+ricoh.dalp.application-desc.visible=true
+ricoh.dalp.argument=
+ricoh.dalp.codebase=
+ricoh.dalp.display-mode.color=true
+ricoh.dalp.display-mode.is-4line-support=false
+ricoh.dalp.display-mode.is-hvga-support=true
+ricoh.dalp.display-mode.is-vga-support=false
+ricoh.dalp.display-mode.is-wvga-support=false
+ricoh.dalp.information.abbreviation=
+ricoh.dalp.information.icon.basepath=
+ricoh.dalp.information.icon.location=
+ricoh.dalp.information.is-icon-used=true
+ricoh.dalp.install.destination=hdd
+ricoh.dalp.install.mode.auto=true
+ricoh.dalp.install.work-dir=hdd
+ricoh.dalp.is-managed=true
+ricoh.dalp.resources.dsdk.version=2.0
+ricoh.dalp.resources.jar.basepath=
+ricoh.dalp.resources.jar.version=
+ricoh.dalp.version=
+ricoh.icon.invert=false
+ricoh.platform.target.version=
+run.cmd.options=
+run.jvmargs=
+run.method=STANDARD
+run.security.domain=minimum
+run.use.security.domain=false
+savaje.application.icon=
+savaje.application.icon.focused=
+savaje.application.icon.small=
+savaje.application.uid=TBD
+savaje.bundle.base=
+savaje.bundle.debug=false
+savaje.bundle.debug.port=
+semc.application.caps=
+semc.application.icon=
+semc.application.icon.count=
+semc.application.icon.splash=
+semc.application.icon.splash.installonly=false
+semc.application.uid=E0015373
+semc.certificate.path=
+semc.private.key.password=
+semc.private.key.path=
+sign.alias=minimal
+sign.enabled=false
+sign.keystore=${file.reference.builtin.ks}
+src.dir=src
+use.emptyapis=true
+use.preprocessor=true

File nbproject/project.xml

+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.kjava.j2meproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2me-project">
+            <name>Google Auth Token Generator</name>
+            <minimum-ant-version>1.6</minimum-ant-version>
+        </data>
+        <references xmlns="http://www.netbeans.org/ns/ant-project-references/2"/>
+    </configuration>
+</project>

File src/TokenGenerator/Base32.java

+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package TokenGenerator;
+
+/**
+ *
+ * @author bruj0
+ */
+
+public class Base32
+{
+    private static final String base32Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
+    private static final int[] base32Lookup = {
+        0xFF, 0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+        0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+        0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
+        0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+        0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+        0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+        0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
+        0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+        0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+    };
+
+    /**
+     * Encodes byte array to Base32 String.
+     *
+     * @param bytes
+     *            Bytes to encode.
+     * @return Encoded byte array <code>bytes</code> as a String.
+     *
+     */
+    static public String encode(final byte[] bytes)
+    {
+        int i = 0, index = 0, digit = 0;
+        int currByte, nextByte;
+        StringBuffer base32 = new StringBuffer((bytes.length + 7) * 8 / 5);
+
+        while (i < bytes.length)
+        {
+            currByte = (bytes[i] >= 0) ? bytes[i] : (bytes[i] + 256); // unsign
+
+            /* Is the current digit going to span a byte boundary? */
+            if (index > 3)
+            {
+                if ((i + 1) < bytes.length)
+                {
+                    nextByte = (bytes[i + 1] >= 0) ? bytes[i + 1] : (bytes[i + 1] + 256);
+                }
+                else
+                {
+                    nextByte = 0;
+                }
+
+                digit = currByte & (0xFF >> index);
+                index = (index + 5) % 8;
+                digit <<= index;
+                digit |= nextByte >> (8 - index);
+                i++;
+            }
+            else
+            {
+                digit = (currByte >> (8 - (index + 5))) & 0x1F;
+                index = (index + 5) % 8;
+                if (index == 0)
+                    i++;
+            }
+            base32.append(base32Chars.charAt(digit));
+        }
+
+        return base32.toString();
+    }
+
+    /**
+     * Decodes the given Base32 String to a raw byte array.
+     *
+     * @param base32
+     * @return Decoded <code>base32</code> String as a raw byte array.
+     */
+    static public byte[] decode(final String base32)
+    {
+        int i, index, lookup, offset, digit;
+        byte[] bytes = new byte[base32.length() * 5 / 8];
+
+        for (i = 0, index = 0, offset = 0; i < base32.length(); i++)
+        {
+            lookup = base32.charAt(i) - '0';
+
+            /* Skip chars outside the lookup table */
+            if (lookup < 0 || lookup >= base32Lookup.length)
+            {
+                continue;
+            }
+
+            digit = base32Lookup[lookup];
+
+            /* If this digit is not in the table, ignore it */
+            if (digit == 0xFF)
+            {
+                continue;
+            }
+
+            if (index <= 3)
+            {
+                index = (index + 5) % 8;
+                if (index == 0)
+                {
+                    bytes[offset] |= digit;
+                    offset++;
+                    if (offset >= bytes.length)
+                        break;
+                }
+                else
+                {
+                    bytes[offset] |= digit << (8 - index);
+                }
+            }
+            else
+            {
+                index = (index + 5) % 8;
+                bytes[offset] |= (digit >>> index);
+                offset++;
+
+                if (offset >= bytes.length)
+                {
+                    break;
+                }
+                bytes[offset] |= digit << (8 - index);
+            }
+        }
+        return bytes;
+    }
+}

File src/TokenGenerator/Main.java

+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package TokenGenerator;
+import java.util.*;
+
+
+import javax.microedition.midlet.*;
+import javax.microedition.lcdui.*;
+import javax.microedition.rms.*;
+import java.io.*;
+
+
+/**
+ * @author bruj0
+ */
+public class Main extends MIDlet implements CommandListener {
+
+    private boolean midletPaused = false;
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Fields ">//GEN-BEGIN:|fields|0|
+    private Command CancelCommand;
+    private Command OKCommand;
+    private Command exitCommand;
+    private Command itemCommand;
+    private Command exitCommand1;
+    private Command okCommand;
+    private Command itemCommand1;
+    private Form passForm;
+    private StringItem tokenStringItem;
+    private Form addForm;
+    private TextField secretTextfield;
+    private TextField accountNameTextField;
+    private List accountList;
+    //</editor-fold>//GEN-END:|fields|0|
+    private StockDB db = null;
+
+
+
+    /**
+     * The HelloMIDlet constructor.
+     */
+    public Main() {
+        
+
+    }
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Methods ">//GEN-BEGIN:|methods|0|
+    //</editor-fold>//GEN-END:|methods|0|
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Method: initialize ">//GEN-BEGIN:|0-initialize|0|0-preInitialize
+    /**
+     * Initializes the application.
+     * It is called only once when the MIDlet is started. The method is called before the <code>startMIDlet</code> method.
+     */
+    private void initialize() {//GEN-END:|0-initialize|0|0-preInitialize
+        // write pre-initialize user code here
+
+            timer = new Timer();
+            timerTaskOne = new MyTimerTask();
+            timer.schedule(timerTaskOne, 0, 1000);
+            db = new StockDB("TokenKey");
+            TokenKey = db.readRecord(1);
+            TokenGen = new TokenGen(TokenKey);
+            tokenStringItem = new StringItem("\u5BC6\u7801:", "");//GEN-BEGIN:|0-initialize|1|0-postInitialize
+            tokenStringItem.setLayout(StringItem.LAYOUT_CENTER | StringItem.LAYOUT_VCENTER);//GEN-END:|0-initialize|1|0-postInitialize
+        // write post-initialize user code here
+    }//GEN-BEGIN:|0-initialize|2|
+    //</editor-fold>//GEN-END:|0-initialize|2|
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Method: startMIDlet ">//GEN-BEGIN:|3-startMIDlet|0|3-preAction
+    /**
+     * Performs an action assigned to the Mobile Device - MIDlet Started point.
+     */
+    public void startMIDlet() {//GEN-END:|3-startMIDlet|0|3-preAction
+        // write pre-action user code here
+        switchDisplayable(null, getAccountList());//GEN-LINE:|3-startMIDlet|1|3-postAction
+        // write post-action user code here
+    }//GEN-BEGIN:|3-startMIDlet|2|
+    //</editor-fold>//GEN-END:|3-startMIDlet|2|
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Method: resumeMIDlet ">//GEN-BEGIN:|4-resumeMIDlet|0|4-preAction
+    /**
+     * Performs an action assigned to the Mobile Device - MIDlet Resumed point.
+     */
+    public void resumeMIDlet() {//GEN-END:|4-resumeMIDlet|0|4-preAction
+        // write pre-action user code here
+//GEN-LINE:|4-resumeMIDlet|1|4-postAction
+        // write post-action user code here
+    }//GEN-BEGIN:|4-resumeMIDlet|2|
+    //</editor-fold>//GEN-END:|4-resumeMIDlet|2|
+
+    //<editor-fold defaultstate="collapsed" desc=" Generated Method: switchDisplayable ">//GEN-BEGIN:|5-switchDisplayable|0|5-preSwitch
+    /**
+     * Switches a current displayable in a display. The <code>display</code> instance is taken from <code>getDisplay</code> method. This method is used by all actions in the design for switching displayable.