Index: uppsrc/Esc/EscStdLib.cpp
===================================================================
--- uppsrc/Esc/EscStdLib.cpp	(revision 5909)
+++ uppsrc/Esc/EscStdLib.cpp	(working copy)
@@ -43,8 +43,11 @@
 
 void ESC_to_number(EscEscape& e)
 {
-	if(e[0].IsArray())
-		e = ScanDouble((String)e[0]);
+	if(e[0].IsArray()) {
+		double d = ScanDouble((String)e[0]);
+		if(!IsNull(d))
+			e = d;
+	}
 }
 
 void ESC_rand(EscEscape& e)
@@ -240,6 +243,18 @@
 	e = v;
 }
 
+void ESC_ToLower(EscEscape& e)
+{
+	String s = e[0];
+	e = ToLower(s);
+}
+
+void ESC_ToUpper(EscEscape& e)
+{
+	String s = e[0];
+	e = ToUpper(s);
+}
+
 void StdLib(ArrayMap<String, EscValue>& global)
 {
 	Escape(global, "is_number(value)", ESC_is_number);
@@ -257,6 +272,9 @@
 	Escape(global, "sort(array)", ESC_sort);
 	Escape(global, "order(array)", ESC_order);
 
+	Escape(global, "ToUpper(value)", ESC_ToUpper);
+	Escape(global, "ToLower(value)", ESC_ToLower);
+
 	Escape(global, "len(x)", ESC_count);
 	Escape(global, "mid(array, pos, count)", ESC_mid);
 	Escape(global, "exists(map, key)", ESC_exists);
Index: uppsrc/ide/Macro.cpp
===================================================================
--- uppsrc/ide/Macro.cpp	(revision 5909)
+++ uppsrc/ide/Macro.cpp	(working copy)
@@ -34,16 +34,32 @@
 	out.Escape("MovePageDown(...)", THISBACK(MacroMovePageDown));
 	out.Escape("MoveTextBegin(...)", THISBACK(MacroMoveTextBegin));
 	out.Escape("MoveTextEnd(...)", THISBACK(MacroMoveTextEnd));
+
+	out.Escape("EditFile(...)", THISBACK(MacroEditFile));
+	out.Escape("SaveCurrentFile()", THISBACK(MacroSaveCurrentFile));
+	out.Escape("CloseFile()",THISBACK(MacroCloseFile));
+	out.Escape("FileName()", THISBACK(MacroFileName));
+
 	out.Escape("Input(...)", THISBACK(MacroInput));
+	out.Escape("ClearConsole()", THISBACK(MacroClearConsole));
+	out.Escape("Echo(...)", THISBACK(MacroEcho));
+
 	out.Escape("Build(...)", THISBACK(MacroBuild));
 	out.Escape("BuildProject(...)", THISBACK(MacroBuildProject));
 	out.Escape("Execute(cmdline)", THISBACK(MacroExecute));
 	out.Escape("Launch(cmdline)", THISBACK(MacroLaunch));
-	out.Escape("ClearConsole()", THISBACK(MacroClearConsole));
-	out.Escape("EditFile(...)", THISBACK(MacroEditFile));
-	out.Escape("SaveCurrentFile()", THISBACK(MacroSaveCurrentFile));
-	out.Escape("ProjectDir()", THISBACK(MacroProjectDir));
-	out.Escape("FileName()", THISBACK(MacroFileName));
+
+	out.Escape("MainPackage()",THISBACK(MacroMainPackage));
+	out.Escape("ActivePackage()",THISBACK(MacroActivePackage));
+	out.Escape("PackageDir(...)",THISBACK(MacroPackageDir));
+	out.Escape("ProjectDir()", THISBACK(MacroPackageDir)); // BW compatibility
+	out.Escape("Assembly()",THISBACK(MacroAssembly));
+	out.Escape("BuildMethod()",THISBACK(MacroBuildMethod));
+	out.Escape("BuildMode()",THISBACK(MacroBuildMode));
+	out.Escape("Flags()",THISBACK(MacroFlags));
+	out.Escape("PackageFiles(...)",THISBACK(MacroPackageFiles));
+	out.Escape("AllPackages()",THISBACK(MacroAllPackages));
+
 	return out;
 }
 
@@ -419,12 +435,99 @@
 	SaveFile();
 }
 
-void Ide::MacroProjectDir(EscEscape& e)
+void Ide::MacroFileName(EscEscape& e)
 {
-	e = GetFileFolder(PackagePathA(GetActivePackage()));
+	e = editfile;
 }
 
-void Ide::MacroFileName(EscEscape& e)
+void Ide::MacroMainPackage(EscEscape& e)
 {
-	e = editfile;
+	e = GetMain();
 }
+
+void Ide::MacroActivePackage(EscEscape& e)
+{
+	e = GetActivePackage();
+}
+
+void Ide::MacroPackageDir(EscEscape& e)
+{
+	String pkg;
+	if(e.GetCount() == 0)
+		pkg = GetActivePackage();
+	else
+		pkg = e[0];
+	String pp = PackagePathA(pkg);
+	if(!FileExists(pp))
+		e.ThrowError("PackageDir: Package not found.");
+	e = GetFileFolder(pp);
+}
+
+void Ide::MacroAssembly(EscEscape& e)
+{
+	e = GetVarsName();
+}
+
+void Ide::MacroBuildMethod(EscEscape& e)
+{
+	e = method;
+}
+
+void Ide::MacroBuildMode(EscEscape& e)
+{
+	e = double(targetmode);
+}
+
+void Ide::MacroFlags(EscEscape& e)
+{
+	Vector<String> v = Split(mainconfigparam," ");
+	EscValue ret;
+	for(int i = 0; i < v.GetCount(); i++){
+		ret.ArrayAdd(v[i]);
+	}
+	e = ret;
+}
+
+void Ide::MacroEcho(EscEscape& e)
+{
+	ShowConsole();
+	for(int i = 0; i < e.GetCount(); i++){
+		PutConsole(String(e[i]));
+	}
+}
+
+void Ide::MacroCloseFile(EscEscape& e)
+{
+	int n = tabs.GetCursor();
+	if(n>=0)
+		tabs.Close(n,true);
+}
+
+void Ide::MacroPackageFiles(EscEscape& e)
+{
+	String pp;
+	Package pkg;
+	if(e.GetCount()==0)
+		pp = GetActivePackagePath();
+	else
+		pp = PackagePathA(String(e[0]));
+	if(!FileExists(pp))
+		e.ThrowError("PackageFiles: Package not found.");
+	pkg.Load(pp);
+	EscValue ret;
+	for(int i = 0; i < pkg.file.GetCount(); i++){
+		ret.ArrayAdd(pkg.file[i]);
+	}
+	e = ret;
+}
+
+void Ide::MacroAllPackages(EscEscape& e)
+{
+	EscValue ret;
+	for(int i = 0; i < package.GetCount(); i++){
+		String p = package.Get(i).name;
+		if(!IsAux(p))
+			ret.ArrayAdd(p);
+	}
+	e = ret;
+}
Index: uppsrc/ide/ide.h
===================================================================
--- uppsrc/ide/ide.h	(revision 5909)
+++ uppsrc/ide/ide.h	(working copy)
@@ -1108,8 +1108,18 @@
 		void  MacroClearConsole(EscEscape& e);
 		void  MacroEditFile(EscEscape& e);
 		void  MacroSaveCurrentFile(EscEscape& e);
-		void  MacroProjectDir(EscEscape& e);
 		void  MacroFileName(EscEscape& e);
+		void  MacroMainPackage(EscEscape& e);
+		void  MacroActivePackage(EscEscape& e);
+		void  MacroPackageDir(EscEscape& e);
+		void  MacroAssembly(EscEscape& e);
+		void  MacroBuildMethod(EscEscape& e);
+		void  MacroBuildMode(EscEscape& e);
+		void  MacroFlags(EscEscape& e);
+		void  MacroEcho(EscEscape& e);
+		void  MacroCloseFile(EscEscape& e);
+		void  MacroPackageFiles(EscEscape& e);
+		void  MacroAllPackages(EscEscape& e);
 
 	typedef   Ide CLASSNAME;
 
Index: uppsrc/ide/app.tpp/esc$en-us.tpp
===================================================================
--- uppsrc/ide/app.tpp/esc$en-us.tpp	(revision 5909)
+++ uppsrc/ide/app.tpp/esc$en-us.tpp	(working copy)
@@ -1,23 +1,519 @@
-TITLE("Esc scripting language")
-COMPRESSED
-120,156,173,59,139,146,218,70,182,191,210,153,108,98,176,129,65,192,188,192,201,58,59,113,238,78,85,226,164,226,36,187,85,148,54,18,162,1,173,133,68,212,210,12,115,237,220,111,191,231,209,221,106,73,48,158,241,174,147,170,209,163,207,163,207,251,156,22,115,241,151,191,12,123,195,207,135,31,249,55,253,86,174,194,50,41,252,249,226,114,60,123,254,194,59,27,2,164,135,144,23,151,231,19,111,114,49,153,156,141,198,23,103,147,201,104,56,153,120,30,92,123,103,23,231,23,23,211,34,46,18,9,112,222,120,60,11,25,216,187,0,224,17,0,143,189,177,55,244,206,71,0,62,26,142,135,163,137,55,58,243,46,47,39,222,197,217,229,248,234,252,124,170,202,133,134,79,198,35,111,86,140,38,231,179,235,87,103,51,15,16,140,123,227,207,71,195,171,225,232,252,226,106,50,242,38,231,240,159,55,190,186,242,198,151,151,195,179,9,176,232,141,167,81,182,4,224,247,191,255,249,197,235,55,253,95,223,138,185,26,206,158,255,124,41,94,171,72,168,40,143,119,69,156,174,69,
-18,166,235,50,92,203,47,125,124,47,244,31,92,19,43,161,226,237,46,145,7,86,139,56,45,100,186,148,75,177,202,114,33,183,11,185,92,226,251,56,21,191,38,69,188,13,11,25,188,8,94,136,112,183,75,226,40,44,226,44,85,131,58,137,155,2,41,20,247,59,153,72,165,122,226,54,76,74,41,178,60,150,128,122,89,81,186,139,139,141,97,4,169,230,171,48,66,82,244,252,26,169,156,254,74,180,112,191,3,141,246,86,230,247,6,232,94,22,226,143,50,46,36,172,192,7,112,97,144,187,44,121,51,241,27,177,128,44,41,124,50,154,137,219,44,94,42,189,232,155,36,1,38,243,56,92,0,195,98,19,222,74,122,173,25,95,72,144,132,20,161,82,241,58,5,254,195,244,94,100,197,70,230,252,126,32,126,195,181,136,27,64,81,178,233,26,120,163,119,14,19,99,38,89,151,84,152,46,133,220,239,114,16,19,200,81,68,97,10,212,68,33,85,161,229,143,32,41,188,21,37,162,21,243,87,29,111,116,57,24,14,70,103,103,93,144,70,240,59,46,240,197,170,76,35,212,
-196,64,111,46,45,65,111,185,217,222,27,186,67,225,173,146,44,36,109,239,50,16,184,94,38,58,81,150,3,11,187,44,37,77,23,153,184,230,237,44,179,18,36,210,29,136,215,251,16,229,171,68,182,50,64,9,136,61,15,19,53,173,239,209,51,127,7,224,45,238,181,12,250,87,231,252,224,213,4,54,114,38,134,123,120,220,255,208,255,224,159,158,138,141,220,135,75,25,129,125,37,245,69,176,70,152,69,89,84,52,95,47,192,213,134,248,191,89,179,136,211,48,191,175,45,10,158,237,131,103,248,158,87,68,155,48,15,35,224,158,236,170,237,29,170,220,237,178,188,80,104,84,91,208,202,117,208,79,226,119,96,192,59,216,48,217,59,169,70,203,129,244,172,140,224,195,60,15,239,173,89,209,13,60,67,227,95,202,28,116,154,131,198,179,173,8,163,8,149,170,228,31,165,76,35,150,43,155,20,50,192,40,69,39,101,59,96,156,224,33,81,82,130,95,130,58,8,177,89,134,232,213,14,68,183,138,97,241,33,59,9,230,129,239,139,5,108,250,157,44,26,10,51,34,130,37,
-44,33,150,145,220,238,138,123,166,172,149,24,204,133,215,19,163,158,24,247,196,164,39,0,196,111,96,192,247,193,28,87,4,62,172,17,140,17,177,17,30,16,103,90,132,49,72,207,221,87,29,199,201,223,101,146,100,193,137,195,8,248,55,108,20,34,7,218,37,176,249,236,239,193,51,160,243,76,242,159,164,246,39,11,158,29,100,11,153,18,193,115,17,38,171,144,248,34,212,214,241,148,241,188,82,33,95,74,220,1,27,117,195,208,62,4,122,130,160,182,5,118,80,33,2,84,102,54,199,8,114,89,64,152,187,5,44,11,136,82,5,104,59,204,151,214,61,65,4,101,90,52,162,229,55,100,11,168,53,139,25,168,24,165,43,177,203,179,219,120,169,49,150,11,142,216,45,13,11,84,49,91,104,150,55,124,50,12,230,67,35,22,188,241,2,95,4,95,137,113,157,143,239,226,92,21,134,7,203,130,168,98,131,66,13,196,144,26,246,45,234,128,222,111,108,235,141,92,131,179,220,74,134,208,118,26,130,118,239,40,132,46,197,82,98,60,133,116,82,237,123,149,131,111,160,76,
-33,1,89,14,166,109,107,238,123,184,91,144,77,18,30,96,185,119,0,96,132,0,180,122,81,194,202,20,72,20,209,160,37,38,194,92,223,7,80,169,217,96,11,134,116,218,9,129,78,95,180,160,255,177,145,169,150,89,172,216,188,48,118,224,30,243,160,207,249,165,67,118,130,6,144,177,69,229,241,122,83,64,30,89,74,220,83,99,51,95,249,221,94,133,17,226,9,36,210,104,35,193,181,151,3,241,29,224,78,52,94,88,5,193,58,75,131,126,90,83,69,37,120,101,69,183,67,201,32,105,160,103,109,186,167,45,0,37,176,223,133,84,19,80,106,174,114,35,153,68,148,75,212,98,177,137,45,194,134,45,4,39,175,49,158,4,39,71,204,7,149,115,140,43,82,26,218,139,235,162,64,53,92,46,43,195,129,123,203,118,195,248,247,136,30,205,29,242,213,246,41,170,221,27,213,238,187,199,16,252,76,210,175,98,2,134,132,90,56,200,22,24,241,128,97,208,11,164,29,88,109,34,180,130,226,73,54,147,39,193,6,243,93,6,69,19,209,110,154,147,35,36,166,67,104,200,
-74,78,25,194,175,132,2,102,149,23,182,158,130,5,128,215,63,164,33,222,44,45,159,130,231,61,137,40,122,42,24,62,1,63,68,91,47,104,24,198,79,97,206,225,142,197,97,197,182,221,130,176,151,71,133,99,57,204,242,214,203,233,19,29,216,2,138,169,208,174,140,143,186,77,52,96,130,7,33,123,117,69,53,57,154,30,212,227,163,120,26,30,49,2,138,41,90,96,24,84,77,210,170,28,191,94,207,237,64,200,53,199,166,192,33,119,73,24,201,101,195,2,21,26,122,112,2,69,215,36,56,153,213,50,169,130,196,49,21,20,33,121,209,254,159,123,88,195,185,148,50,85,154,221,33,44,60,7,224,58,207,111,33,39,66,181,104,51,148,85,53,181,17,218,163,221,218,201,21,133,39,176,223,192,171,81,29,43,84,20,208,129,72,182,205,226,206,160,232,29,192,129,217,159,43,54,253,84,151,111,88,20,152,58,164,66,12,210,129,152,102,236,93,47,133,230,71,170,102,206,96,220,47,64,32,204,234,147,245,44,12,168,221,100,3,7,212,216,7,225,94,190,52,210,49,87,
-35,123,53,254,111,176,81,73,221,94,53,240,98,177,74,41,93,161,139,115,43,162,155,189,67,153,204,150,129,90,105,88,17,57,221,15,132,17,136,159,170,140,54,96,28,74,66,12,52,214,66,125,85,154,9,185,90,201,168,48,181,246,54,220,25,107,249,1,46,77,125,41,222,201,123,147,90,119,33,20,53,232,27,176,111,168,203,212,64,188,201,114,104,49,170,66,74,29,76,70,214,173,208,44,185,86,7,106,6,75,195,103,224,77,48,71,162,228,23,205,190,79,183,151,26,20,119,136,152,138,77,88,16,149,52,43,170,206,18,61,53,142,202,36,204,57,113,59,77,104,163,41,29,136,95,48,221,222,129,60,25,26,29,157,94,235,84,136,68,128,39,227,102,32,27,212,66,206,145,34,151,91,168,41,177,226,4,174,238,171,178,11,128,30,220,90,171,127,165,196,140,237,170,131,12,212,181,144,150,157,131,244,17,2,13,2,25,68,245,99,15,164,37,163,101,123,109,56,136,87,29,211,230,118,42,110,186,160,168,247,98,48,24,136,224,207,134,172,21,237,132,26,34,208,179,220,
-71,114,135,134,214,19,119,24,54,67,183,177,135,216,35,67,176,15,211,224,167,54,132,30,50,10,168,167,104,0,97,242,184,22,52,119,74,21,231,54,163,26,137,205,4,196,71,42,214,140,252,56,223,214,45,166,90,133,81,180,174,8,99,224,92,65,171,204,154,166,174,188,112,248,1,137,2,74,234,176,8,33,211,230,101,84,148,57,90,251,47,25,160,122,167,107,179,127,103,11,33,67,21,203,188,103,229,3,110,59,128,190,49,1,199,85,247,224,62,196,129,110,128,91,201,97,207,75,43,158,159,88,78,5,39,4,31,156,184,251,110,237,211,84,150,104,57,180,219,69,187,191,13,222,7,127,82,67,219,114,70,122,99,27,88,45,71,122,14,169,9,219,191,224,100,234,65,102,13,78,22,178,192,155,17,220,140,134,211,224,100,50,132,250,148,205,137,215,143,40,57,64,89,0,57,109,200,47,17,243,182,206,162,137,58,78,55,169,227,83,18,110,23,203,208,132,168,239,249,14,83,11,89,60,244,45,123,25,149,5,206,156,40,144,242,144,139,151,185,189,125,12,110,149,45,203,
-232,88,115,255,202,175,38,26,77,97,188,130,226,21,183,2,109,105,153,167,188,163,253,236,128,211,152,16,146,56,228,209,194,204,84,172,165,92,168,10,87,49,129,132,182,189,61,56,89,152,174,178,140,234,133,163,188,232,18,130,16,194,158,215,73,182,0,203,180,61,51,192,215,185,189,89,25,54,195,124,93,114,221,141,109,178,4,17,153,22,165,33,163,47,29,25,145,31,59,53,109,156,238,202,34,232,103,101,1,127,43,148,29,158,199,152,123,163,139,29,181,143,201,125,183,81,201,206,159,215,40,98,104,242,195,194,109,102,185,252,210,216,147,24,187,26,78,157,86,198,169,157,49,84,84,11,178,127,109,50,3,113,147,114,234,192,4,217,195,30,40,70,25,129,184,32,117,132,91,9,219,99,70,161,117,194,24,1,118,57,199,241,203,250,214,175,200,32,47,56,221,163,116,220,168,103,166,170,220,106,109,193,22,72,95,84,18,194,10,136,145,157,152,59,156,245,109,23,31,115,213,179,190,13,230,113,224,183,173,234,167,138,37,116,20,202,96,75,158,184,27,251,86,18,249,46,
-120,184,209,106,116,27,214,60,93,64,94,212,150,68,60,29,77,2,38,236,37,241,74,218,144,23,38,192,74,202,141,48,236,101,139,114,176,70,198,214,76,151,96,75,225,109,24,39,40,171,6,7,159,163,49,63,228,82,222,44,246,206,134,179,31,175,112,226,108,230,201,212,188,66,148,144,251,66,213,249,252,205,106,30,4,69,181,1,6,130,85,134,118,33,174,65,235,113,26,197,52,119,237,160,82,81,233,32,50,200,164,184,137,30,247,84,108,239,97,178,219,132,16,209,226,200,25,111,66,38,110,200,244,119,223,182,210,38,110,29,130,84,173,17,138,6,212,115,229,166,241,35,215,203,152,170,128,50,86,27,44,198,55,185,212,243,118,148,115,53,92,55,130,48,177,172,225,54,76,166,241,116,234,120,239,225,241,37,224,55,3,195,36,139,26,51,226,129,243,54,78,113,216,18,201,122,136,114,22,112,244,169,111,239,123,68,233,236,193,153,184,70,232,160,198,138,122,38,118,53,150,2,239,88,247,108,51,140,150,73,21,218,20,250,51,243,227,128,84,45,136,206,19,78,194,233,
-64,209,160,156,201,217,109,205,128,186,40,106,92,125,183,201,148,172,199,242,24,205,235,54,123,39,151,61,26,70,112,89,6,126,80,229,21,158,156,55,52,255,153,143,207,151,199,70,139,192,192,128,157,113,230,60,121,3,26,214,158,202,62,186,199,99,28,138,245,77,181,209,218,78,119,86,77,124,25,165,46,132,60,135,144,87,167,212,194,241,25,45,154,57,120,60,7,209,225,8,177,203,179,53,68,169,173,204,131,103,170,30,47,104,72,104,202,71,221,167,146,253,70,16,70,80,94,218,148,177,111,185,227,49,31,200,215,73,162,84,86,39,53,219,33,235,214,175,137,177,194,132,118,116,254,184,232,89,3,165,149,218,156,172,207,116,104,228,12,128,116,156,208,37,235,194,182,194,206,172,27,218,193,18,7,194,149,190,51,91,167,62,4,204,118,45,11,203,42,198,67,102,21,242,5,130,57,249,98,133,131,225,30,230,175,20,56,192,153,98,5,6,85,103,151,55,106,25,215,8,132,95,219,52,132,87,48,253,123,66,0,129,2,188,192,162,209,8,244,102,13,253,129,248,113,133,
-243,143,28,19,221,163,195,4,152,53,99,119,38,133,149,187,104,65,30,174,83,180,176,220,83,16,144,71,98,11,18,218,148,188,69,69,175,180,172,192,145,236,182,233,53,215,33,168,79,135,132,7,1,178,94,28,90,59,60,197,237,210,60,199,61,140,168,13,117,178,117,204,22,132,1,160,71,61,68,79,252,175,204,51,83,46,160,36,208,233,179,92,55,216,148,16,104,133,29,199,85,193,196,95,65,77,45,129,106,207,61,195,100,154,62,116,14,230,224,244,212,86,91,169,78,72,116,52,136,250,68,83,136,163,119,224,45,88,174,45,227,91,106,239,237,96,135,200,83,15,6,49,9,115,88,150,199,197,125,79,63,207,118,219,12,74,31,156,165,210,73,43,97,133,197,155,120,189,193,174,208,172,119,116,36,222,191,159,76,206,47,167,103,103,227,209,198,155,189,234,140,188,243,46,157,121,139,31,53,85,127,58,229,7,215,217,150,118,12,15,254,245,106,196,7,227,215,96,40,84,182,251,193,28,175,32,134,250,208,207,25,16,219,114,8,168,171,230,252,122,96,222,158,94,35,32,
-66,13,124,238,147,12,216,91,220,93,72,131,15,70,29,156,192,37,175,193,14,199,162,208,244,73,55,154,3,154,130,187,60,240,129,158,153,34,3,31,187,76,113,53,50,55,171,31,194,199,195,213,30,61,231,41,112,11,55,207,108,237,88,150,183,170,135,178,7,199,199,31,167,55,197,75,40,110,143,17,115,207,202,12,49,40,215,8,132,14,75,142,80,232,185,219,96,51,104,172,152,30,220,168,163,17,179,16,122,187,121,181,210,84,45,31,223,217,17,186,142,172,31,166,91,201,182,57,84,30,52,169,115,12,244,59,76,103,173,252,174,69,124,67,9,155,16,235,85,142,115,201,66,235,141,128,6,78,87,68,29,188,57,39,212,141,7,152,104,143,162,196,66,70,25,215,154,58,110,225,188,198,33,192,77,41,90,94,135,7,95,49,70,240,219,56,4,102,193,7,96,37,150,26,62,213,150,207,129,139,100,229,119,93,111,97,60,184,153,142,143,156,225,21,84,17,194,55,4,31,216,93,143,11,17,120,96,217,243,81,176,53,94,245,38,255,35,62,65,244,244,164,98,133,9,224,
-130,98,60,62,245,206,204,118,144,125,172,93,252,36,232,87,227,227,234,85,63,232,87,175,28,124,81,206,134,127,186,148,230,210,126,56,161,103,76,68,108,216,164,213,247,27,184,126,165,162,108,27,167,165,114,229,76,139,255,175,185,248,111,49,116,178,119,177,50,31,196,208,73,79,3,234,51,159,200,91,152,239,117,134,129,98,100,0,245,22,149,50,28,15,109,214,80,130,178,70,79,12,57,105,32,133,102,124,168,164,128,66,169,185,143,243,10,69,105,8,255,4,137,32,232,199,70,86,130,14,168,224,137,21,153,251,181,137,43,180,154,134,200,177,144,10,54,98,126,67,71,124,107,223,178,123,26,250,63,83,7,231,248,45,173,243,121,246,15,217,23,109,136,217,214,163,255,166,194,26,216,27,186,248,1,250,220,216,126,35,229,106,193,129,59,109,129,125,11,249,84,29,7,248,162,77,39,91,150,73,246,160,96,94,52,183,126,237,30,156,216,253,63,188,195,23,45,202,223,232,241,195,17,86,33,196,55,33,222,150,139,2,251,56,13,84,103,24,116,92,241,252,242,229,163,120,
-134,154,37,163,8,162,97,33,134,220,99,10,166,222,178,122,12,184,170,243,49,176,107,5,186,121,104,179,72,189,201,250,38,94,65,189,44,87,197,145,237,126,253,245,17,24,58,4,105,111,215,37,247,144,225,126,253,208,203,151,208,16,61,4,91,189,118,75,164,29,84,230,10,66,39,39,16,253,190,173,125,71,27,90,25,150,70,245,234,235,227,175,136,185,163,112,246,229,113,206,92,179,172,201,142,244,200,70,246,21,226,169,71,180,215,127,148,97,2,53,100,107,67,21,216,103,109,168,155,84,186,112,199,116,21,124,217,146,232,223,184,113,134,66,252,152,39,252,235,24,204,62,203,143,193,124,56,6,83,7,113,68,241,37,242,118,56,184,35,111,88,34,80,47,87,141,4,116,88,87,80,20,164,203,234,49,246,165,18,239,48,14,246,196,191,75,128,81,239,226,221,78,46,143,144,254,128,236,30,38,13,236,30,160,140,173,198,127,70,152,82,203,95,125,231,102,170,111,220,144,97,7,164,85,131,5,157,101,10,157,104,42,177,108,64,129,54,123,47,203,65,173,176,209,209,67,
-91,93,115,183,60,66,55,249,182,102,117,181,184,70,67,211,134,221,219,2,178,90,139,20,170,107,125,250,234,55,248,169,69,231,3,158,94,199,107,14,188,191,114,111,94,24,239,127,0,117,255,211,80,247,31,129,250,249,167,161,126,254,113,212,167,159,132,249,244,227,136,191,248,36,196,95,84,136,255,108,12,171,245,136,224,109,1,22,71,133,98,189,243,61,27,66,231,59,185,106,118,190,118,249,71,90,223,89,21,21,233,68,76,25,184,102,253,86,57,129,239,192,56,78,115,83,224,196,72,29,240,14,192,16,188,23,186,57,210,92,205,244,96,190,22,220,233,144,178,205,129,46,76,227,85,199,143,140,199,114,223,224,171,3,219,172,124,250,211,80,213,42,120,9,1,240,209,100,184,253,106,208,186,219,196,137,124,12,231,223,103,217,110,80,41,142,134,69,50,199,209,155,25,245,96,99,206,231,215,212,181,106,132,190,137,151,205,93,46,179,214,174,64,21,204,15,119,200,6,67,247,113,76,100,102,240,72,179,62,254,74,136,107,225,39,177,7,76,224,97,17,79,58,226,106,48,
-97,0,248,222,22,254,126,183,166,145,254,135,3,178,211,30,102,62,14,152,107,204,51,243,64,111,186,182,103,48,74,243,186,255,97,94,51,206,218,243,138,17,251,188,178,91,103,47,38,3,248,116,172,102,199,2,79,231,158,16,186,248,248,128,173,246,232,165,158,27,216,42,168,107,153,195,127,238,90,108,170,28,38,234,60,180,71,30,71,183,131,99,172,71,108,230,6,191,251,47,248,140,39,43,215,27,51,1,235,57,95,162,208,49,133,59,255,33,199,105,126,211,162,191,160,112,247,226,218,208,34,151,225,187,42,22,93,135,165,194,143,67,247,113,97,38,206,169,204,105,154,152,128,81,99,167,175,128,76,180,57,30,22,248,125,199,183,137,252,160,159,254,16,194,34,238,49,180,128,240,43,160,36,209,231,111,54,78,227,92,2,71,159,122,15,21,162,30,13,154,161,99,199,185,42,159,1,19,104,125,50,170,191,213,3,182,233,185,57,25,229,1,187,253,10,10,247,171,10,165,191,152,214,75,148,115,32,12,203,101,76,147,220,45,242,77,7,19,8,231,2,48,142,30,4,12,
-73,53,22,174,114,37,77,0,40,15,93,211,84,134,203,2,197,247,238,122,141,183,90,167,127,72,101,20,208,92,255,57,226,166,121,140,51,230,170,14,111,205,74,80,210,55,54,151,86,35,28,62,72,154,183,225,102,46,137,193,167,208,24,60,145,200,244,83,136,76,31,67,164,86,21,120,179,49,134,104,254,241,64,18,47,114,253,139,22,91,21,140,38,23,87,211,139,179,145,215,168,10,190,211,39,139,31,41,10,240,139,42,174,71,104,27,123,39,63,152,161,136,135,134,56,199,119,116,32,174,203,151,163,19,32,196,72,113,234,209,8,245,39,230,15,224,131,160,242,104,108,52,223,124,0,23,125,63,246,56,100,124,194,114,12,23,134,228,231,182,76,108,227,210,193,192,12,142,114,44,121,232,24,234,14,116,169,232,88,198,197,87,100,193,239,170,200,193,31,143,112,167,249,10,205,183,168,118,38,71,31,145,19,100,245,172,62,105,210,232,143,40,26,10,156,91,153,83,100,209,168,59,140,174,107,226,50,3,214,226,4,167,164,6,166,27,22,158,240,173,240,114,45,140,161,153,
-184,195,146,125,221,142,204,18,175,181,36,53,166,97,150,84,159,197,184,63,144,161,115,208,218,39,44,14,6,50,135,3,240,213,71,152,4,78,103,229,7,50,83,237,240,3,115,89,199,230,199,150,194,89,118,252,49,163,50,7,240,29,58,160,165,159,77,170,42,226,135,252,195,177,249,115,77,197,119,190,28,176,214,70,191,19,73,237,7,111,181,161,53,131,61,134,25,125,170,247,72,118,144,245,39,51,131,63,101,235,180,89,208,191,112,211,66,7,73,243,79,84,134,131,193,120,116,113,126,81,195,128,31,133,43,217,113,106,169,54,58,94,179,172,198,65,181,41,126,150,23,15,130,43,250,142,241,48,48,9,229,163,208,188,236,208,15,191,14,34,189,81,223,66,25,240,128,138,40,216,160,82,236,207,225,130,147,101,120,31,156,224,55,137,91,120,182,9,78,40,121,7,39,247,50,204,225,6,181,115,52,32,221,168,95,226,237,83,233,241,216,69,147,132,58,165,144,124,189,201,202,156,175,30,230,104,43,233,51,160,163,76,253,143,44,222,222,51,99,109,134,162,50,207,233,27,
-194,152,109,208,58,225,127,141,175,118,143,237,255,63,157,39,25,44,
-
+topic "Esc scripting language";
+[ $$0,0#00000000000000000000000000000000:Default]
+[b83;*+150 $$1,0#07864147445237544204411237157677:title]
+[b133;a83;*+117 $$2,0#31310162474203024125188417583966:subtitle]
+[l321;t246;C@5;1 $$3,3#20902679421464641399138805415013:code]
+[{_}%EN-US 
+[s0; [*R8 Esc scripting language]&]
+[s0; &]
+[s0; Esc is simple scripting language intended for embedding in Ultimate`+`+ 
+applications.&]
+[s0; &]
+[s0; It is typeless, value oriented language with simple interfacing 
+with C`+`+/U`+`+ code. It is very simple yet quite complete language.&]
+[s0; &]
+[s1; Value types&]
+[s2; voids&]
+[s0; All variables have void value before assigned any other value. 
+Void type has single value&]
+[s0; &]
+[s3; void&]
+[s0; &]
+[s0; and expression can be tested for voidness using [@(128.0.255) is`_void] 
+function.&]
+[s2; numbers&]
+[s0; Number is floating point number (corresponding to C type double). 
+Examples of number literals:&]
+[s0; &]
+[s3; 1&]
+[s3; 1.123&]
+[s3; 1.123e`-96&]
+[s3; 0x123-|-|[@4 // hexadecimal]&]
+[s3; 0123 -|-|[@4 // octal]&]
+[s3; 0b10100100-|-|[@4 // binary]&]
+[s3; `'x`'-|-|-|[@4 // character code]&]
+[s0; &]
+[s0; Esc supports common C`-like operations for number values.&]
+[s2; arrays&]
+[s0; Arrays are ordered random access sequences of other Esc values 
+(nested arrays included). Array values are specified using [@(128.0.255) `[`]] 
+brackets:&]
+[s0; &]
+[s3; `[`]-|-|-|-|[@4 // empty array]&]
+[s3; `[ 1, 2, 3, 4, 5 `]&]
+[s3; `[ 1, `[2, 3`], 4 `]-|-|[@4 // array contains nested array]&]
+[s3; `"Hello`"-|-|-|[@4 // equivalent to `[`'H`', `'e`', `'l`', `'l`', 
+`'o`'`]]&]
+[s3; `[ 1, 2, 3 `* alfa `]-|[@4 // expressions can be used as well]&]
+[s0; &]
+[s0; Number of elements in the array can be retrieved by standard 
+function count.&]
+[s0; &]
+[s0; Accessing elements of arrays is provided by subscript [@(128.0.255) `[ 
+`]] operator:&]
+[s0; &]
+[s3; a`[0`]&]
+[s3; a`[1`] `= 3&]
+[s0; &]
+[s0; First element of array corresponds to index [@(128.0.255) `[0`]].&]
+[s0; &]
+[s0; Negative indexes are allowed and designate elements from the 
+end of array: [@(128.0.255) `[`-1`]] is last element of array, [@(128.0.255) `[`-2`]] 
+last but one etc.&]
+[s0; &]
+[s3; a`[`-1`]&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; a`[count(a) `- 1`]&]
+[s0; &]
+[s0; When index is used for the r`-value (standing on the right side 
+of [@(128.0.255) `=]), index is range checked. For l`-value, if 
+non`-negative index designates element past the of the array, 
+array is expanded with void values to create this element.&]
+[s0; &]
+[s0; `"Empty`" index [@(128.0.255) `[`]] designates element past last 
+and can be used to add elements to the array:&]
+[s0; &]
+[s3; x`[`] `= item&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; x`[count(x)`] `= item&]
+[s0; &]
+[s0; Range of element in array can be obtained or changed using slices:&]
+[s0; &]
+[s3; array`[pos, count`]&]
+[s0; &]
+[s0; designates array slice of [/ count] elements starting with [/ pos] 
+element.&]
+[s0; &]
+[s3; x`[start:end`]&]
+[s0; &]
+[s0; designates array slice of [/ end `- start] elements starting with 
+[/ start] .&]
+[s0; &]
+[s0; Parts of slices can be ommited&]
+[s0; &]
+[s3; array`[pos,`]&]
+[s0; or&]
+[s3; array`[pos:`]&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; array`[pos : count(array)`]&]
+[s0; &]
+[s0; and&]
+[s0; &]
+[s3; array`[,count`]&]
+[s0; or&]
+[s3; array`[:count`]&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; array`[0, count`]&]
+[s0; &]
+[s0; When slices are used as l`-value, corresponding part of the 
+array is replaced:&]
+[s0; &]
+[s3; s `= `"1234`";&]
+[s3; s`[1: `-1`] `= `"xXx`";-|[@4 // s is now `"1xXx4`"]&]
+[s0; &]
+[s0; Several operators can be applied to arrays&]
+[s0; &]
+[s3; array1 `+ array2&]
+[s0; &]
+[s0; concatenates two arrays,&]
+[s0; &]
+[s3; array `* number&]
+[s3; number `* array&]
+[s0; &]
+[s0; repeats array number times.&]
+[s0; &]
+[s3; array `+`= array1&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; array `= array `+ array1&]
+[s0; &]
+[s0; also&]
+[s0; &]
+[s3; array << array1 << array2 << array3&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; array `= array `+ array1 `+ array2 `+ array3&]
+[s0; &]
+[s0; Esc allows [/ void] value on the right side of array concatenation 
+expression `- in such cases, operator has no effect.&]
+[s2; maps&]
+[s0; Maps contain key`-value pairs as entries. Normal subscripts 
+[@(128.0.255) `[`]] are used to access map entries:&]
+[s0; &]
+[s3; map`[key`] `= value&]
+[s0; &]
+[s0; All entries in map that are not assigned particular non`-void 
+value have void value. This way assigning void to the map key 
+can be considered as removing entry from the map&]
+[s0; &]
+[s3; map`[key`] `= void&]
+[s0; &]
+[s0;  and testing entry for being void can be considered as test 
+of key presence in map:&]
+[s0;C &]
+[s3; if(is`_void(map`[key`])) `{ ... `}&]
+[s0; &]
+[s0; As the special exception, when a void value appears before an 
+l`-value [@(128.0.255) `[`]], it is changed to the empty map:&]
+[s0; &]
+[s3; x `= void; // x is void&]
+[s3; x`[key`] `= value; // x is now map&]
+[s0; &]
+[s0; Maps are also used to create compound data structures. To make 
+this job easier, special [/ .field] syntax is supported:&]
+[s0; &]
+[s3; x.field `= value;&]
+[s0; &]
+[s0; is equivalent to&]
+[s0; &]
+[s3; x`[`"field`"`] `= value;&]
+[s0; &]
+[s0; Map values can also be specified using `{`} braces:&]
+[s0; &]
+[s3; `{`} // empty map&]
+[s3; `{ `"alfa`":10, `"beta`":20, 20:`"40`" `}&]
+[s3; `{ 2 `* a : `"100`" `} // map values can contain expressions&]
+[s2; lambdas&]
+[s0; Lambdas represent executable Esc code. Lambda values are introduced 
+using [@(128.0.255) `@] character:&]
+[s0; &]
+[s3; `@(x) `{ return 2 `* x; `}&]
+[s0; &]
+[s0; Assigning lambda value to variable is equivalent to defining 
+a function:&]
+[s0; &]
+[s3; :foo `= `@(x) `{ return 2 `* x; `};-|[@4 // defines global function 
+foo]&]
+[s0; &]
+[s0; If lambda argument is preceded with [@(128.0.255) `&] character, 
+it designates input`-output argument (other arguments are input 
+only).&]
+[s0; &]
+[s0; [*@(128.0.255) ... ]at the end of the argument list allows variable 
+number of arguments to be present. In that case, additional parameters 
+are passed in [/ argv] variable of type array.&]
+[s0; &]
+[s3; :sum `= `@(...) `{ s `= 0; for(i in argv) s `+`= argv`[i`]; `}&]
+[s0; &]
+[s0; Parameters can have default values separated by [@(128.0.255) `=]:&]
+[s0; &]
+[s3; :bar `= `@(x `= 0) `{ ... `}&]
+[s0; &]
+[s0; To make life easier, alternative form of function definition 
+is available:&]
+[s0; &]
+[s3; #:foo(x) `{ return 2 `* x; `}&]
+[s1;i150;O9; Variables and contexts&]
+[s0; &]
+[s0; Variable names in Esc follow C principles (are case sensitive, 
+start with alphabetic character or [@(128.0.255) `_] and can contain 
+alphabetic characters, [@(128.0.255) `_] and numbers).&]
+[s0; &]
+[s0; Esc distinguishes three types of variables contexts using [*@(128.0.255) .] 
+and [*@(128.0.255) :] characters:&]
+[s0; &]
+[s3; var-|-|[@4 // local]&]
+[s3; .var-|-|[@4 // instance]&]
+[s3; :var-|-|[@4 // global]&]
+[s0; &]
+[s0; Local variables are specific to function, global variables are 
+shared among all functions. Instance variables &]
+[s0; represent map values (keys designate variable names) of map 
+whose lambda value is invoked, or can be forced using binary 
+[@(128.0.255) !] bind operator:&]
+[s0; &]
+[s3; var.x `= 0;&]
+[s3; var.Next `= `@() `{ .x`+`+; `};&]
+[s3; var.Next();-|-|-|[@4 // var.x is now 1 ]&]
+[s3; var1.x `= 0;&]
+[s3; var.Next()! var1;-|-|[@4 // var1.x is now 1]&]
+[s0; &]
+[s0; To make programmer`'s life easier, one exception applies concerning 
+context `- when invoking lambda from local variable and lambda 
+is not present in it, instance and global contexts (in this order) 
+are tried as well:&]
+[s0; &]
+[s3; beta(x)&]
+[s3; &]
+[s0; Tries to get lambda form local [/ beta] variable first, then (if 
+no lambda found) from instance [/ beta ]variable and finally (if 
+still no lambda) from global [/ beta]. Of course, [*@(128.0.255) .] 
+and [*@(128.0.255) :] can still be used to designate context:&]
+[s0; &]
+[s3; :beta(x)-|-|-|-|[@4 // calls global beta even if local or instance 
+beta is present]&]
+[s0; &]
+[s1; Expressions&]
+[s0; &]
+[s0; When expressions are used as logical values, void, zero number 
+and map or array with zero elements represent [/ false], other 
+values are [/ true.]&]
+[s0;/ &]
+[s0; In following table, thick lines divide operators with the same 
+priority, with topmost items having the highest priority:&]
+[s0; &]
+[ {{4468:5532h1;@(216) [s0; Operator]
+:: [s0; Comments]
+::^@2 [s0; [/C map][*C `[][/C key][*C `]]]
+:: [s0; Map value at [/ key].]
+:: [s0; [/C map][*C .][/C field]]
+:: [s0; Same as [/ map]`[`"[/ field]`"`].]
+:: [s0; [/C array][*C `[][/C index][*C `]]]
+:: [s0; Array element at position [/ index].]
+:: [s0; [/C array][*C `[][/C start][*C , ][/C count][*C `]]]
+:: [s0; Array slice starting at [/ start] of [/ count] elements.]
+:: [s0; [/C array][*C `[][/C start][*C :][/C end][*C `]]]
+:: [s0; Array slice of elements [/ start .. end] `- 1]
+:: [s0; [/C array][*C `[,][/C count][*C `]]&]
+[s0; [/C array][*C `[:][/C count][*C `]]]
+:: [s0; Same as [/ array]`[0, [/ count]`].&]
+[s0; ]
+:: [s0; [/C array][*C `[][/C start][*C :`]]&]
+[s0; [/C array][*C `[][/C start][*C ,`]]]
+:: [s0; Same as [/ array]`[[/ start] : count(array)`]. ]
+:: [s0; [/C lambda][*C (][/C args][*C )]]
+:: [s0; Invokes [/ lambda] with the set of [/ args]. If lambda is subscript 
+of the map, map becomes instance for [/ lambda] execution (accessible 
+via [* .][/ name] or [* self]).]
+:: [s0; [/C lambda][*C (][/C args][*C ) ! ][/C instance]]
+:: [s0; Invokes [/ lambda], using[/  instance] as instance for lambda execution 
+(accessible via [* .][/ name] or [* self]).]
+:: [s0; [*C self]]
+:: [s0; Instance.]
+::t33/15 [s0; [*C `+`+][/C l`-number]&]
+[s0; [*C `-`-][/C l`-number]]
+:: [s0; Increments/decrements number l`-value.]
+::t0/15 [s0; [*C `-][/C number]]
+:: [s0; Unary minus.]
+:: [s0; [*C `~][/C number]]
+:: [s0; Bit`-wise complement.]
+:: [s0; [*C !][/C value]]
+:: [s0; Logical not. 1 when value represents false, 0 otherwise.]
+:: [s0; [/C l`-number][*C `-`-]&]
+[s0; [/C l`-number][*C `+`+]]
+:: [s0; Post`-increment / post`-decrement of number l`-value.]
+::t33/15 [s0; [/C array][*C  `* ][/C number]&]
+[s0; [/C number][*C  `* ][/C array]]
+:: [s0; Returns [/ array][*/  ]repeated [/ number] times.]
+::t0/15 [s0; [/C number][*C  `* ][/C number]]
+:: [s0; Multiplication.]
+:: [s0; [/C number][*C  / ][/C number]]
+:: [s0; Division.]
+:: [s0; [/C number][*C  % ][/C number]]
+:: [s0; Modulo.]
+::t33/15 [s0; [/C array][*C  `+ ][/C array]]
+:: [s0; Concatenates [/ array]s.]
+::t0/15 [s0; [/C number][*C  `+ ][/C number]]
+:: [s0; Addition.]
+:: [s0; [/C number][*C  `- ][/C number]]
+:: [s0; Subtraction.]
+::t33/15 [s0; [/C l`-array][*C  << ][/C array]]
+:: [s0; Concatenates [/ array ]to [/ l`-array], yielding [/ l`-array ]as l`-value 
+result.]
+::t0/15 [s0; [/C number][*C  << ][/C number]]
+:: [s0; Shift left.]
+:: [s0; [/C number][*C  >> ][/C number]]
+:: [s0; Shift right.]
+::t33/15 [s0; [/C number][*C  < ][/C number]&]
+[s0; [/C number][*C  > ][/C number]&]
+[s0; [/C number][*C  <`= ][/C number]&]
+[s0; [/C number][*C  >`= ][/C number]]
+:: [s0; Comparison of [/ number]s.]
+::t0/15 [s0; [/C array][*C  < ][/C array]&]
+[s0; [/C array][*C  > ][/C array]&]
+[s0; [/C array][*C  <`= ][/C array]&]
+[s0; [/C array][*C  >`= ][/C array]]
+:: [s0; Comparison of [/ array]s.]
+::t33/15 [s0; [/C value][*C  `=`= ][/C value]]
+:: [s0; Equality.]
+::t0/15 [s0; [/C value][*C  !`= ][/C value]]
+:: [s0; Inequality.]
+::t33/15 [s0; [/C number][*C  `& ][/C number]]
+:: [s0; Binary and.]
+:: [s0; [/C number][*C  `^ ][/C number]]
+:: [s0; Binary xor.]
+:: [s0; [/C number][*C  `| ][/C number]]
+:: [s0; Binary or.]
+:: [s0; [/C value][*C  `&`& ][/C value]]
+:: [s0; Logical and. If first value is false, second value is not evaluated, 
+just skipped.]
+:: [s0; [/C value][*C  `|`| ][/C value]]
+:: [s0; Logical or. If first value is true, second value is not evaluated, 
+just skipped.]
+:: [s0; [/C value ][*C ?][/C  value ][*C :][/C  value]]
+:: [s0; Conditional expression. Only necessary expressions are evaluated.]
+:: [s0; [/C l`-value][*C  `= ][/C value]]
+:: [s0; Assignment.]
+::t0/15 [s0; [/C l`-array][*C  `+`= ][/C array]]
+:: [s0; Same as [C l`-array `= l`-array `+ array].]
+:: [s0; [/C l`-number][*C  `+`= ][/C number]]
+:: [s0; Same as [C l`-number `= l`-number `+ number].]
+:: [s0; [/C l`-number][*C  `-`= ][/C number]]
+:: [s0; Same as [C l`-number `= l`-number `- number].]
+:: [s0; [/C l`-number][*C  `*`= ][/C number]]
+:: [s0; Same as [C l`-number `= l`-number `* number].]
+:: [s0; [/C l`-number][*C  /`= ][/C number]]
+:: [s0; Same as [C l`-number `= l`-number / number].]
+:: [s0; [/C l`-number][*C  %`= ][/C number]]
+:: [s0; Same as [C l`-number `= l`-number % number].]}}&]
+[s0; &]
+[s0; &]
+[s1; Statements&]
+[s0; &]
+[ {{4508:5492h1;@(216) [s0; Statement]
+:: [s0; Comments]
+::^@2 [s0; [*C ;]]
+:: [s0; Empty statement.]
+:: [s0; [/C expression][*C ;]]
+:: [s0; Expression. It gets evaluated.]
+:: [s0; [*C `{ ][/C statement][*C ; ... `}]]
+:: [s0; Compound statement.]
+:: [s0; [*C if(][/C condition][*C ) ][/C statement]]
+:: [s0; Conditional statement.]
+:: [s0; [*C if(][/C condition][*C ) ][/C statement]&]
+[s0; [*C else ][/C statement]]
+:: [s0; Conditional statement with ]
+:: [s0; [*C while(][/C condition][*C ) ][/C statement]]
+:: [s0; Loop. Statement is performed as long as the [/ condition] is true.]
+:: [s0; [*C do ][/C statement]&]
+[s0; [*C while(][/C condition][*C )]]
+:: [s0; Loop. Statement is performed once and then is repeated as long 
+as the [/ condition] is true.]
+:: [s0; [*C for(][/C init][*C , ][/C condition][*C , ][/C increment][*C )]&]
+[s0; [*C -|][/C statement]]
+:: [s0; Same as&]
+[s0; [/C init][C ;]&]
+[s0; [C while(][/C condition][C ) `{]&]
+[s0; [C -|][/C statement][C ;]&]
+[s0; [C -|][/C increment][C ;]&]
+[s0; [C `}]]
+:: [s0; [*C for(][/C l`-value][*C  in ][/C array][*C )]&]
+[s0; [*C -|][/C statement]]
+:: [s0; Same as&]
+[s0; [C for(][/C l`-value][C  `= 0; ][/C l`-value][C  < count(][/C array][C );]&]
+[s0; [C     ][/C l`-value][C `+`+)]&]
+[s0; [C -|][/C statement]&]
+[s0; ]
+:: [s0; [*C for(][/C l`-value][*C  in ][/C map][*C )]&]
+[s0; [*C -|][/C statement]]
+:: [s0; Iterates through [/ map], assigning keys of elements with non`-void 
+value to the [/ l`-value].]
+:: [s0; [*C break;]]
+:: [s0; Causes exit from innermost loop or switch statement.]
+:: [s0; [*C switch(][/C value][*C ) ][/C statement]]
+:: [s0; Matches [/ value] to all case statements inside the [/ statement], 
+continues at the case with the same value, or with default if 
+no such case exists and default is present. If neither matching 
+case and default exists, does nothing.]
+:: [s0; [*C case ][/C value][*C :]]
+:: [s0; Switch case.]
+:: [s0; [*C default:]]
+:: [s0; Default switch case.]
+:: [s0; [*C #][/C name][*C (][/C args][*C ) `{ ... `}]]
+:: [s0; Same as [/C name][C  `= `@(][/C args][C ) `{ ... `};]]
+:: [s0; [*C #.][/C name][*C (][/C args][*C ) `{ ... `}]]
+:: [s0; Same as [C .][/C name][C  `= `@(][/C args][C ) `{ ... `};]]
+:: [s0; [*C #:][/C name][*C (][/C args][*C ) `{ ... `}]]
+:: [s0; Same as [C :][/C name][C  `= `@(][/C args][C ) `{ ... `};]]}}&]
+[s0; &]
+[s1; [3 Standard library]&]
+[s0; &]
+[ {{3528:6472h1;@(216) [s0; Function]
+:: [s0; Comments]
+::^@2 [s0; [*C is`_number(][/C x][*C )]]
+:: [s0; Returns 1 if [/ x] is a number, 0 otherwise.]
+:: [s0; [*C is`_array(][/C x][*C )]]
+:: [s0; Returns 1 if [/ x] is a array, 0 otherwise.]
+:: [s0; [*C is`_map(][/C x][*C )]]
+:: [s0; Returns 1 if [/ x] is a map, 0 otherwise.]
+:: [s0; [*C is`_void(][/C x][*C )]]
+:: [s0; Returns 1 if [/ x] is void, 0 otherwise.]
+:: [s0; [*C int(][/C number][*C )]]
+:: [s0; Returns the [/ number] rounded towards zero.]
+:: [s0; [*C to`_string(][/C x][*C )]]
+:: [s0; Return [/ x] as array representing string representation.]
+:: [s0; [*C to`_number(][/C x][*C )]]
+:: [s0; Converts an array (string) to the number. Returns void if the 
+string doesn`'t start with a number.]
+:: [s0; [*C count(][/C x][*C )]]
+:: [s0; If [/ x ]is void, returns 0.&]
+[s0; If x is a number, returns 1.&]
+[s0; If x is an array, returns number of elements of this array.&]
+[s0; If x is an map, returns number of entries in this map with non`-void 
+values.]
+:: [s0; [*C keys(][/C map][*C )]]
+:: [s0; Returns array of keys of map (ordering is the same as for [* values] 
+function, otherwise is unspecified).]
+:: [s0; [*C values(][/C map][*C )]]
+:: [s0; Returns array of values of map (ordering is the same as for 
+[* keys] function, otherwise is unspecified).]
+:: [s0; [*C rand()]]
+:: [s0; Returns random number in range 0..32767.]
+:: [s0; [*C reverse(][/C array][*C )]]
+:: [s0; Returns reversed [/ array].]
+:: [s0; [*C sort(][/C array][*C )]]
+:: [s0; Returns sorted [/ array].]
+:: [s0; [*C order(][/C array][*C )]]
+:: [s0; Returns sort order of elements in the [/ array].]
+:: [s0; [*C IsDate(][/C map][*C )]]
+:: [s0; Returns 1 if map contains `"day`", `"month`" and `"year`" keys, 
+0 otherwise.]
+:: [s0; [*C IsTime(][/C map][*C )]]
+:: [s0; Returns 1 if map contains `"second`", `"minute`", `"hour`", 
+`"day`", `"month`" and `"year`" members, 0 otherwise.]
+:: [s0; [*C GetSysTime()]]
+:: [s0; Returns current time as map with `"second`", `"minute`", `"hour`", 
+`"day`", `"month`" and `"year`" members.]
+:: [s0; [*C sin(][/C x][*C )]]
+:: [s0; Returns sin of the argument.]
+:: [s0; [*C cos(][/C x][*C )]]
+:: [s0; Returns cos of the argument.]
+:: [s0; [*C ToLower(][/C string][*C )]]
+:: [s0; Returns lowercased string.]
+:: [s0; [*C ToUpper(][/C string][*C )]]
+:: [s0; Returns uppercased string.]
+:: [s0; [*C OpenFileIn(][/C string][*C )]]
+:: [s0; Opens file given as parameter for reading and returns FileIn 
+object.]
+:: [s0; [*C OpenFileOut(][/C string][*C )]]
+:: [s0; Opens file given as parameter for writing and returns FileOut 
+object.]
+:: [s0; [*C OpenFileAppend(][/C string][*C )]]
+:: [s0; Opens file given as parameter for appending and returns FileOut 
+object.]}}&]
+[s0; &]
+[ {{1385:2687:5928h1;@(216) [s0; Object]
+:: [s0; Method]
+:: [s0; Comments]
+::^@2|3 [s0; [*C FileIn]]
+:: [s0; [*C IsEof()]]
+::= [s0; Returns true when the end of file is reached.]
+:: [s0;%- ]
+::^ [s0; [*C Read()]]
+::= [s0; Returns one byte from the file.]
+:: [s0;%- ]
+::^ [s0; [*C ReadLine()]]
+::= [s0; Returns string containing all text till next newline character.]
+:: [s0;%- ]
+::^ [s0; [*C Close()]]
+::= [s0; Closes file.]
+::^|2 [s0; [*C FileOut]]
+:: [s0; [*C Put(][/C int][*C )]]
+::= [s0; Writes one byte to the file.]
+:: [s0;%- ]
+::^ [s0; [*C PutLine(][/C string][*C )]]
+::= [s0; Writes the string to the file and adds a newline character.]
+:: [s0;%- ]
+::^ [s0; [*C Close()]]
+::= [s0; Closes the file.]}}&]
+[s0; ]]
\ No newline at end of file
Index: uppsrc/ide/app.tpp/esc$en-us.tppi
===================================================================
--- uppsrc/ide/app.tpp/esc$en-us.tppi	(revision 5909)
+++ uppsrc/ide/app.tpp/esc$en-us.tppi	(working copy)
@@ -1,23 +1,24 @@
 TITLE("Esc scripting language")
 COMPRESSED
-120,156,173,59,139,146,218,70,182,191,210,153,108,98,176,129,65,192,188,192,201,58,59,113,238,78,85,226,164,226,36,187,85,148,54,18,162,1,173,133,68,212,210,12,115,237,220,111,191,231,209,221,106,73,48,158,241,174,147,170,209,163,207,163,207,251,156,22,115,241,151,191,12,123,195,207,135,31,249,55,253,86,174,194,50,41,252,249,226,114,60,123,254,194,59,27,2,164,135,144,23,151,231,19,111,114,49,153,156,141,198,23,103,147,201,104,56,153,120,30,92,123,103,23,231,23,23,211,34,46,18,9,112,222,120,60,11,25,216,187,0,224,17,0,143,189,177,55,244,206,71,0,62,26,142,135,163,137,55,58,243,46,47,39,222,197,217,229,248,234,252,124,170,202,133,134,79,198,35,111,86,140,38,231,179,235,87,103,51,15,16,140,123,227,207,71,195,171,225,232,252,226,106,50,242,38,231,240,159,55,190,186,242,198,151,151,195,179,9,176,232,141,167,81,182,4,224,247,191,255,249,197,235,55,253,95,223,138,185,26,206,158,255,124,41,94,171,72,168,40,143,119,69,156,174,69,
-18,166,235,50,92,203,47,125,124,47,244,31,92,19,43,161,226,237,46,145,7,86,139,56,45,100,186,148,75,177,202,114,33,183,11,185,92,226,251,56,21,191,38,69,188,13,11,25,188,8,94,136,112,183,75,226,40,44,226,44,85,131,58,137,155,2,41,20,247,59,153,72,165,122,226,54,76,74,41,178,60,150,128,122,89,81,186,139,139,141,97,4,169,230,171,48,66,82,244,252,26,169,156,254,74,180,112,191,3,141,246,86,230,247,6,232,94,22,226,143,50,46,36,172,192,7,112,97,144,187,44,121,51,241,27,177,128,44,41,124,50,154,137,219,44,94,42,189,232,155,36,1,38,243,56,92,0,195,98,19,222,74,122,173,25,95,72,144,132,20,161,82,241,58,5,254,195,244,94,100,197,70,230,252,126,32,126,195,181,136,27,64,81,178,233,26,120,163,119,14,19,99,38,89,151,84,152,46,133,220,239,114,16,19,200,81,68,97,10,212,68,33,85,161,229,143,32,41,188,21,37,162,21,243,87,29,111,116,57,24,14,70,103,103,93,144,70,240,59,46,240,197,170,76,35,212,
-196,64,111,46,45,65,111,185,217,222,27,186,67,225,173,146,44,36,109,239,50,16,184,94,38,58,81,150,3,11,187,44,37,77,23,153,184,230,237,44,179,18,36,210,29,136,215,251,16,229,171,68,182,50,64,9,136,61,15,19,53,173,239,209,51,127,7,224,45,238,181,12,250,87,231,252,224,213,4,54,114,38,134,123,120,220,255,208,255,224,159,158,138,141,220,135,75,25,129,125,37,245,69,176,70,152,69,89,84,52,95,47,192,213,134,248,191,89,179,136,211,48,191,175,45,10,158,237,131,103,248,158,87,68,155,48,15,35,224,158,236,170,237,29,170,220,237,178,188,80,104,84,91,208,202,117,208,79,226,119,96,192,59,216,48,217,59,169,70,203,129,244,172,140,224,195,60,15,239,173,89,209,13,60,67,227,95,202,28,116,154,131,198,179,173,8,163,8,149,170,228,31,165,76,35,150,43,155,20,50,192,40,69,39,101,59,96,156,224,33,81,82,130,95,130,58,8,177,89,134,232,213,14,68,183,138,97,241,33,59,9,230,129,239,139,5,108,250,157,44,26,10,51,34,130,37,
-44,33,150,145,220,238,138,123,166,172,149,24,204,133,215,19,163,158,24,247,196,164,39,0,196,111,96,192,247,193,28,87,4,62,172,17,140,17,177,17,30,16,103,90,132,49,72,207,221,87,29,199,201,223,101,146,100,193,137,195,8,248,55,108,20,34,7,218,37,176,249,236,239,193,51,160,243,76,242,159,164,246,39,11,158,29,100,11,153,18,193,115,17,38,171,144,248,34,212,214,241,148,241,188,82,33,95,74,220,1,27,117,195,208,62,4,122,130,160,182,5,118,80,33,2,84,102,54,199,8,114,89,64,152,187,5,44,11,136,82,5,104,59,204,151,214,61,65,4,101,90,52,162,229,55,100,11,168,53,139,25,168,24,165,43,177,203,179,219,120,169,49,150,11,142,216,45,13,11,84,49,91,104,150,55,124,50,12,230,67,35,22,188,241,2,95,4,95,137,113,157,143,239,226,92,21,134,7,203,130,168,98,131,66,13,196,144,26,246,45,234,128,222,111,108,235,141,92,131,179,220,74,134,208,118,26,130,118,239,40,132,46,197,82,98,60,133,116,82,237,123,149,131,111,160,76,
-33,1,89,14,166,109,107,238,123,184,91,144,77,18,30,96,185,119,0,96,132,0,180,122,81,194,202,20,72,20,209,160,37,38,194,92,223,7,80,169,217,96,11,134,116,218,9,129,78,95,180,160,255,177,145,169,150,89,172,216,188,48,118,224,30,243,160,207,249,165,67,118,130,6,144,177,69,229,241,122,83,64,30,89,74,220,83,99,51,95,249,221,94,133,17,226,9,36,210,104,35,193,181,151,3,241,29,224,78,52,94,88,5,193,58,75,131,126,90,83,69,37,120,101,69,183,67,201,32,105,160,103,109,186,167,45,0,37,176,223,133,84,19,80,106,174,114,35,153,68,148,75,212,98,177,137,45,194,134,45,4,39,175,49,158,4,39,71,204,7,149,115,140,43,82,26,218,139,235,162,64,53,92,46,43,195,129,123,203,118,195,248,247,136,30,205,29,242,213,246,41,170,221,27,213,238,187,199,16,252,76,210,175,98,2,134,132,90,56,200,22,24,241,128,97,208,11,164,29,88,109,34,180,130,226,73,54,147,39,193,6,243,93,6,69,19,209,110,154,147,35,36,166,67,104,200,
-74,78,25,194,175,132,2,102,149,23,182,158,130,5,128,215,63,164,33,222,44,45,159,130,231,61,137,40,122,42,24,62,1,63,68,91,47,104,24,198,79,97,206,225,142,197,97,197,182,221,130,176,151,71,133,99,57,204,242,214,203,233,19,29,216,2,138,169,208,174,140,143,186,77,52,96,130,7,33,123,117,69,53,57,154,30,212,227,163,120,26,30,49,2,138,41,90,96,24,84,77,210,170,28,191,94,207,237,64,200,53,199,166,192,33,119,73,24,201,101,195,2,21,26,122,112,2,69,215,36,56,153,213,50,169,130,196,49,21,20,33,121,209,254,159,123,88,195,185,148,50,85,154,221,33,44,60,7,224,58,207,111,33,39,66,181,104,51,148,85,53,181,17,218,163,221,218,201,21,133,39,176,223,192,171,81,29,43,84,20,208,129,72,182,205,226,206,160,232,29,192,129,217,159,43,54,253,84,151,111,88,20,152,58,164,66,12,210,129,152,102,236,93,47,133,230,71,170,102,206,96,220,47,64,32,204,234,147,245,44,12,168,221,100,3,7,212,216,7,225,94,190,52,210,49,87,
-35,123,53,254,111,176,81,73,221,94,53,240,98,177,74,41,93,161,139,115,43,162,155,189,67,153,204,150,129,90,105,88,17,57,221,15,132,17,136,159,170,140,54,96,28,74,66,12,52,214,66,125,85,154,9,185,90,201,168,48,181,246,54,220,25,107,249,1,46,77,125,41,222,201,123,147,90,119,33,20,53,232,27,176,111,168,203,212,64,188,201,114,104,49,170,66,74,29,76,70,214,173,208,44,185,86,7,106,6,75,195,103,224,77,48,71,162,228,23,205,190,79,183,151,26,20,119,136,152,138,77,88,16,149,52,43,170,206,18,61,53,142,202,36,204,57,113,59,77,104,163,41,29,136,95,48,221,222,129,60,25,26,29,157,94,235,84,136,68,128,39,227,102,32,27,212,66,206,145,34,151,91,168,41,177,226,4,174,238,171,178,11,128,30,220,90,171,127,165,196,140,237,170,131,12,212,181,144,150,157,131,244,17,2,13,2,25,68,245,99,15,164,37,163,101,123,109,56,136,87,29,211,230,118,42,110,186,160,168,247,98,48,24,136,224,207,134,172,21,237,132,26,34,208,179,220,
-71,114,135,134,214,19,119,24,54,67,183,177,135,216,35,67,176,15,211,224,167,54,132,30,50,10,168,167,104,0,97,242,184,22,52,119,74,21,231,54,163,26,137,205,4,196,71,42,214,140,252,56,223,214,45,166,90,133,81,180,174,8,99,224,92,65,171,204,154,166,174,188,112,248,1,137,2,74,234,176,8,33,211,230,101,84,148,57,90,251,47,25,160,122,167,107,179,127,103,11,33,67,21,203,188,103,229,3,110,59,128,190,49,1,199,85,247,224,62,196,129,110,128,91,201,97,207,75,43,158,159,88,78,5,39,4,31,156,184,251,110,237,211,84,150,104,57,180,219,69,187,191,13,222,7,127,82,67,219,114,70,122,99,27,88,45,71,122,14,169,9,219,191,224,100,234,65,102,13,78,22,178,192,155,17,220,140,134,211,224,100,50,132,250,148,205,137,215,143,40,57,64,89,0,57,109,200,47,17,243,182,206,162,137,58,78,55,169,227,83,18,110,23,203,208,132,168,239,249,14,83,11,89,60,244,45,123,25,149,5,206,156,40,144,242,144,139,151,185,189,125,12,110,149,45,203,
-232,88,115,255,202,175,38,26,77,97,188,130,226,21,183,2,109,105,153,167,188,163,253,236,128,211,152,16,146,56,228,209,194,204,84,172,165,92,168,10,87,49,129,132,182,189,61,56,89,152,174,178,140,234,133,163,188,232,18,130,16,194,158,215,73,182,0,203,180,61,51,192,215,185,189,89,25,54,195,124,93,114,221,141,109,178,4,17,153,22,165,33,163,47,29,25,145,31,59,53,109,156,238,202,34,232,103,101,1,127,43,148,29,158,199,152,123,163,139,29,181,143,201,125,183,81,201,206,159,215,40,98,104,242,195,194,109,102,185,252,210,216,147,24,187,26,78,157,86,198,169,157,49,84,84,11,178,127,109,50,3,113,147,114,234,192,4,217,195,30,40,70,25,129,184,32,117,132,91,9,219,99,70,161,117,194,24,1,118,57,199,241,203,250,214,175,200,32,47,56,221,163,116,220,168,103,166,170,220,106,109,193,22,72,95,84,18,194,10,136,145,157,152,59,156,245,109,23,31,115,213,179,190,13,230,113,224,183,173,234,167,138,37,116,20,202,96,75,158,184,27,251,86,18,249,46,
-120,184,209,106,116,27,214,60,93,64,94,212,150,68,60,29,77,2,38,236,37,241,74,218,144,23,38,192,74,202,141,48,236,101,139,114,176,70,198,214,76,151,96,75,225,109,24,39,40,171,6,7,159,163,49,63,228,82,222,44,246,206,134,179,31,175,112,226,108,230,201,212,188,66,148,144,251,66,213,249,252,205,106,30,4,69,181,1,6,130,85,134,118,33,174,65,235,113,26,197,52,119,237,160,82,81,233,32,50,200,164,184,137,30,247,84,108,239,97,178,219,132,16,209,226,200,25,111,66,38,110,200,244,119,223,182,210,38,110,29,130,84,173,17,138,6,212,115,229,166,241,35,215,203,152,170,128,50,86,27,44,198,55,185,212,243,118,148,115,53,92,55,130,48,177,172,225,54,76,166,241,116,234,120,239,225,241,37,224,55,3,195,36,139,26,51,226,129,243,54,78,113,216,18,201,122,136,114,22,112,244,169,111,239,123,68,233,236,193,153,184,70,232,160,198,138,122,38,118,53,150,2,239,88,247,108,51,140,150,73,21,218,20,250,51,243,227,128,84,45,136,206,19,78,194,233,
-64,209,160,156,201,217,109,205,128,186,40,106,92,125,183,201,148,172,199,242,24,205,235,54,123,39,151,61,26,70,112,89,6,126,80,229,21,158,156,55,52,255,153,143,207,151,199,70,139,192,192,128,157,113,230,60,121,3,26,214,158,202,62,186,199,99,28,138,245,77,181,209,218,78,119,86,77,124,25,165,46,132,60,135,144,87,167,212,194,241,25,45,154,57,120,60,7,209,225,8,177,203,179,53,68,169,173,204,131,103,170,30,47,104,72,104,202,71,221,167,146,253,70,16,70,80,94,218,148,177,111,185,227,49,31,200,215,73,162,84,86,39,53,219,33,235,214,175,137,177,194,132,118,116,254,184,232,89,3,165,149,218,156,172,207,116,104,228,12,128,116,156,208,37,235,194,182,194,206,172,27,218,193,18,7,194,149,190,51,91,167,62,4,204,118,45,11,203,42,198,67,102,21,242,5,130,57,249,98,133,131,225,30,230,175,20,56,192,153,98,5,6,85,103,151,55,106,25,215,8,132,95,219,52,132,87,48,253,123,66,0,129,2,188,192,162,209,8,244,102,13,253,129,248,113,133,
-243,143,28,19,221,163,195,4,152,53,99,119,38,133,149,187,104,65,30,174,83,180,176,220,83,16,144,71,98,11,18,218,148,188,69,69,175,180,172,192,145,236,182,233,53,215,33,168,79,135,132,7,1,178,94,28,90,59,60,197,237,210,60,199,61,140,168,13,117,178,117,204,22,132,1,160,71,61,68,79,252,175,204,51,83,46,160,36,208,233,179,92,55,216,148,16,104,133,29,199,85,193,196,95,65,77,45,129,106,207,61,195,100,154,62,116,14,230,224,244,212,86,91,169,78,72,116,52,136,250,68,83,136,163,119,224,45,88,174,45,227,91,106,239,237,96,135,200,83,15,6,49,9,115,88,150,199,197,125,79,63,207,118,219,12,74,31,156,165,210,73,43,97,133,197,155,120,189,193,174,208,172,119,116,36,222,191,159,76,206,47,167,103,103,227,209,198,155,189,234,140,188,243,46,157,121,139,31,53,85,127,58,229,7,215,217,150,118,12,15,254,245,106,196,7,227,215,96,40,84,182,251,193,28,175,32,134,250,208,207,25,16,219,114,8,168,171,230,252,122,96,222,158,94,35,32,
-66,13,124,238,147,12,216,91,220,93,72,131,15,70,29,156,192,37,175,193,14,199,162,208,244,73,55,154,3,154,130,187,60,240,129,158,153,34,3,31,187,76,113,53,50,55,171,31,194,199,195,213,30,61,231,41,112,11,55,207,108,237,88,150,183,170,135,178,7,199,199,31,167,55,197,75,40,110,143,17,115,207,202,12,49,40,215,8,132,14,75,142,80,232,185,219,96,51,104,172,152,30,220,168,163,17,179,16,122,187,121,181,210,84,45,31,223,217,17,186,142,172,31,166,91,201,182,57,84,30,52,169,115,12,244,59,76,103,173,252,174,69,124,67,9,155,16,235,85,142,115,201,66,235,141,128,6,78,87,68,29,188,57,39,212,141,7,152,104,143,162,196,66,70,25,215,154,58,110,225,188,198,33,192,77,41,90,94,135,7,95,49,70,240,219,56,4,102,193,7,96,37,150,26,62,213,150,207,129,139,100,229,119,93,111,97,60,184,153,142,143,156,225,21,84,17,194,55,4,31,216,93,143,11,17,120,96,217,243,81,176,53,94,245,38,255,35,62,65,244,244,164,98,133,9,224,
-130,98,60,62,245,206,204,118,144,125,172,93,252,36,232,87,227,227,234,85,63,232,87,175,28,124,81,206,134,127,186,148,230,210,126,56,161,103,76,68,108,216,164,213,247,27,184,126,165,162,108,27,167,165,114,229,76,139,255,175,185,248,111,49,116,178,119,177,50,31,196,208,73,79,3,234,51,159,200,91,152,239,117,134,129,98,100,0,245,22,149,50,28,15,109,214,80,130,178,70,79,12,57,105,32,133,102,124,168,164,128,66,169,185,143,243,10,69,105,8,255,4,137,32,232,199,70,86,130,14,168,224,137,21,153,251,181,137,43,180,154,134,200,177,144,10,54,98,126,67,71,124,107,223,178,123,26,250,63,83,7,231,248,45,173,243,121,246,15,217,23,109,136,217,214,163,255,166,194,26,216,27,186,248,1,250,220,216,126,35,229,106,193,129,59,109,129,125,11,249,84,29,7,248,162,77,39,91,150,73,246,160,96,94,52,183,126,237,30,156,216,253,63,188,195,23,45,202,223,232,241,195,17,86,33,196,55,33,222,150,139,2,251,56,13,84,103,24,116,92,241,252,242,229,163,120,
-134,154,37,163,8,162,97,33,134,220,99,10,166,222,178,122,12,184,170,243,49,176,107,5,186,121,104,179,72,189,201,250,38,94,65,189,44,87,197,145,237,126,253,245,17,24,58,4,105,111,215,37,247,144,225,126,253,208,203,151,208,16,61,4,91,189,118,75,164,29,84,230,10,66,39,39,16,253,190,173,125,71,27,90,25,150,70,245,234,235,227,175,136,185,163,112,246,229,113,206,92,179,172,201,142,244,200,70,246,21,226,169,71,180,215,127,148,97,2,53,100,107,67,21,216,103,109,168,155,84,186,112,199,116,21,124,217,146,232,223,184,113,134,66,252,152,39,252,235,24,204,62,203,143,193,124,56,6,83,7,113,68,241,37,242,118,56,184,35,111,88,34,80,47,87,141,4,116,88,87,80,20,164,203,234,49,246,165,18,239,48,14,246,196,191,75,128,81,239,226,221,78,46,143,144,254,128,236,30,38,13,236,30,160,140,173,198,127,70,152,82,203,95,125,231,102,170,111,220,144,97,7,164,85,131,5,157,101,10,157,104,42,177,108,64,129,54,123,47,203,65,173,176,209,209,67,
-91,93,115,183,60,66,55,249,182,102,117,181,184,70,67,211,134,221,219,2,178,90,139,20,170,107,125,250,234,55,248,169,69,231,3,158,94,199,107,14,188,191,114,111,94,24,239,127,0,117,255,211,80,247,31,129,250,249,167,161,126,254,113,212,167,159,132,249,244,227,136,191,248,36,196,95,84,136,255,108,12,171,245,136,224,109,1,22,71,133,98,189,243,61,27,66,231,59,185,106,118,190,118,249,71,90,223,89,21,21,233,68,76,25,184,102,253,86,57,129,239,192,56,78,115,83,224,196,72,29,240,14,192,16,188,23,186,57,210,92,205,244,96,190,22,220,233,144,178,205,129,46,76,227,85,199,143,140,199,114,223,224,171,3,219,172,124,250,211,80,213,42,120,9,1,240,209,100,184,253,106,208,186,219,196,137,124,12,231,223,103,217,110,80,41,142,134,69,50,199,209,155,25,245,96,99,206,231,215,212,181,106,132,190,137,151,205,93,46,179,214,174,64,21,204,15,119,200,6,67,247,113,76,100,102,240,72,179,62,254,74,136,107,225,39,177,7,76,224,97,17,79,58,226,106,48,
-97,0,248,222,22,254,126,183,166,145,254,135,3,178,211,30,102,62,14,152,107,204,51,243,64,111,186,182,103,48,74,243,186,255,97,94,51,206,218,243,138,17,251,188,178,91,103,47,38,3,248,116,172,102,199,2,79,231,158,16,186,248,248,128,173,246,232,165,158,27,216,42,168,107,153,195,127,238,90,108,170,28,38,234,60,180,71,30,71,183,131,99,172,71,108,230,6,191,251,47,248,140,39,43,215,27,51,1,235,57,95,162,208,49,133,59,255,33,199,105,126,211,162,191,160,112,247,226,218,208,34,151,225,187,42,22,93,135,165,194,143,67,247,113,97,38,206,169,204,105,154,152,128,81,99,167,175,128,76,180,57,30,22,248,125,199,183,137,252,160,159,254,16,194,34,238,49,180,128,240,43,160,36,209,231,111,54,78,227,92,2,71,159,122,15,21,162,30,13,154,161,99,199,185,42,159,1,19,104,125,50,170,191,213,3,182,233,185,57,25,229,1,187,253,10,10,247,171,10,165,191,152,214,75,148,115,32,12,203,101,76,147,220,45,242,77,7,19,8,231,2,48,142,30,4,12,
-73,53,22,174,114,37,77,0,40,15,93,211,84,134,203,2,197,247,238,122,141,183,90,167,127,72,101,20,208,92,255,57,226,166,121,140,51,230,170,14,111,205,74,80,210,55,54,151,86,35,28,62,72,154,183,225,102,46,137,193,167,208,24,60,145,200,244,83,136,76,31,67,164,86,21,120,179,49,134,104,254,241,64,18,47,114,253,139,22,91,21,140,38,23,87,211,139,179,145,215,168,10,190,211,39,139,31,41,10,240,139,42,174,71,104,27,123,39,63,152,161,136,135,134,56,199,119,116,32,174,203,151,163,19,32,196,72,113,234,209,8,245,39,230,15,224,131,160,242,104,108,52,223,124,0,23,125,63,246,56,100,124,194,114,12,23,134,228,231,182,76,108,227,210,193,192,12,142,114,44,121,232,24,234,14,116,169,232,88,198,197,87,100,193,239,170,200,193,31,143,112,167,249,10,205,183,168,118,38,71,31,145,19,100,245,172,62,105,210,232,143,40,26,10,156,91,153,83,100,209,168,59,140,174,107,226,50,3,214,226,4,167,164,6,166,27,22,158,240,173,240,114,45,140,161,153,
-184,195,146,125,221,142,204,18,175,181,36,53,166,97,150,84,159,197,184,63,144,161,115,208,218,39,44,14,6,50,135,3,240,213,71,152,4,78,103,229,7,50,83,237,240,3,115,89,199,230,199,150,194,89,118,252,49,163,50,7,240,29,58,160,165,159,77,170,42,226,135,252,195,177,249,115,77,197,119,190,28,176,214,70,191,19,73,237,7,111,181,161,53,131,61,134,25,125,170,247,72,118,144,245,39,51,131,63,101,235,180,89,208,191,112,211,66,7,73,243,79,84,134,131,193,120,116,113,126,81,195,128,31,133,43,217,113,106,169,54,58,94,179,172,198,65,181,41,126,150,23,15,130,43,250,142,241,48,48,9,229,163,208,188,236,208,15,191,14,34,189,81,223,66,25,240,128,138,40,216,160,82,236,207,225,130,147,101,120,31,156,224,55,137,91,120,182,9,78,40,121,7,39,247,50,204,225,6,181,115,52,32,221,168,95,226,237,83,233,241,216,69,147,132,58,165,144,124,189,201,202,156,175,30,230,104,43,233,51,160,163,76,253,143,44,222,222,51,99,109,134,162,50,207,233,27,
-194,152,109,208,58,225,127,141,175,118,143,237,255,63,157,39,25,44,
+120,156,173,59,139,114,219,182,178,191,130,56,39,141,236,200,178,168,135,237,200,73,111,122,220,244,30,207,164,73,167,105,122,238,140,134,45,41,17,146,208,80,164,74,80,182,124,146,158,111,191,187,139,7,65,136,146,237,164,105,103,44,145,216,7,246,189,11,104,204,254,241,143,110,187,251,184,123,199,191,209,247,124,22,175,211,50,28,79,206,251,23,71,207,130,97,23,32,3,132,60,59,63,29,4,131,179,193,96,216,235,159,13,7,131,94,119,48,8,2,248,28,12,207,78,207,206,70,165,40,83,14,112,65,191,127,17,43,224,224,12,128,123,0,220,15,250,65,55,56,237,1,120,175,219,239,246,6,65,111,24,156,159,15,130,179,225,121,255,249,233,233,72,174,39,26,62,237,247,130,139,178,55,56,189,184,124,53,188,8,0,65,191,221,127,220,235,62,239,246,78,207,158,15,122,193,224,20,254,11,250,207,159,7,253,243,243,238,112,0,44,6,253,209,52,79,0,248,211,239,127,61,121,253,246,248,195,123,54,150,221,11,54,62,250,249,156,189,150,83,38,167,133,88,149,34,
+155,179,52,206,230,235,120,206,195,111,66,90,162,255,224,34,33,153,20,203,85,202,27,150,51,145,149,60,75,120,194,102,121,193,248,114,194,147,4,223,139,140,125,72,75,177,140,75,30,61,139,158,177,120,181,74,197,52,46,69,158,201,78,157,196,85,137,20,202,219,21,79,185,148,109,118,29,167,107,206,242,66,112,64,157,84,148,110,68,185,48,140,32,213,98,22,79,145,20,61,191,68,42,39,31,136,22,110,185,163,209,94,243,226,214,0,221,242,146,253,185,22,37,135,21,248,0,62,24,228,46,75,193,5,251,149,88,64,150,36,62,233,93,176,235,92,36,82,47,250,46,77,129,201,66,196,19,96,152,45,226,107,78,175,53,227,19,14,146,224,44,150,82,204,51,224,63,206,110,89,94,46,120,161,222,119,216,175,184,22,113,3,40,74,54,155,3,111,244,206,97,162,175,72,214,37,21,103,9,227,155,85,1,98,2,57,178,105,156,1,53,86,114,89,106,249,35,72,6,111,217,26,209,178,241,171,86,208,59,239,116,59,189,225,240,16,164,17,253,142,11,66,54,91,103,83,
+212,68,71,111,46,91,131,222,10,179,189,183,244,13,133,55,75,243,152,180,189,202,65,224,122,25,107,77,243,2,88,88,229,25,105,186,204,217,165,218,78,146,175,65,34,135,29,246,122,19,163,124,37,203,103,6,40,5,177,23,113,42,71,245,61,6,230,111,7,28,198,253,204,163,227,231,167,250,65,119,3,15,142,63,31,127,30,191,26,176,147,19,182,224,155,56,225,83,48,174,52,52,75,96,5,115,150,228,211,210,121,57,1,31,235,226,255,206,138,137,200,226,226,214,44,137,158,110,162,167,248,214,190,159,46,226,34,158,2,211,100,78,13,94,33,215,171,85,94,148,18,141,105,9,218,184,140,142,83,241,17,12,119,5,27,37,59,39,149,232,253,147,126,165,17,120,92,20,241,173,53,39,250,2,207,208,232,19,94,128,46,11,208,116,190,100,241,116,138,202,148,252,207,53,207,166,74,158,202,148,144,1,133,146,181,50,165,127,133,19,60,99,154,174,193,31,65,13,132,216,44,67,244,114,5,82,155,9,88,220,100,31,209,56,10,67,54,129,93,127,228,165,175,40,124,169,
+228,99,37,196,151,171,242,86,145,181,98,28,179,160,205,122,109,214,111,179,65,155,13,89,84,127,19,141,241,93,20,194,91,166,240,105,92,132,5,36,153,149,177,0,193,185,91,178,24,14,254,197,211,52,143,14,234,76,128,67,195,14,33,84,160,33,2,151,79,255,21,61,5,66,79,185,250,147,214,254,228,209,83,216,227,22,179,44,58,98,113,58,139,137,39,131,216,250,153,52,142,182,150,200,147,100,55,192,135,103,16,218,103,64,63,16,196,150,192,13,42,130,129,170,204,206,20,134,130,151,16,214,174,1,205,4,162,82,9,90,142,139,196,186,35,236,127,157,149,94,116,252,142,108,0,181,101,49,3,21,163,108,201,86,69,126,45,18,141,113,61,81,17,122,75,179,12,85,171,44,51,47,60,213,198,209,184,107,245,4,95,130,40,100,209,75,214,175,243,241,131,40,100,105,120,176,44,176,42,22,72,84,128,128,84,176,217,162,14,232,67,111,91,111,249,28,156,228,154,43,8,109,159,49,232,247,134,66,102,194,18,142,241,19,210,71,181,239,89,1,62,129,50,133,132,99,
+57,24,109,91,241,113,128,187,5,217,164,113,3,203,237,6,128,30,2,208,234,201,26,86,102,64,162,156,118,182,196,68,152,235,251,0,42,53,19,220,130,33,157,182,98,160,115,204,182,160,255,189,224,153,150,153,144,202,190,48,102,224,30,139,232,88,229,147,22,217,9,26,64,174,44,170,16,243,69,9,121,35,225,184,39,111,51,47,195,195,118,133,17,226,8,36,206,233,130,131,75,39,29,246,3,224,78,53,94,88,5,193,57,207,162,227,172,166,138,74,240,210,138,110,133,146,65,210,64,207,218,116,91,91,0,74,96,179,138,169,6,160,84,92,229,66,50,137,105,193,81,139,229,66,88,132,158,45,68,7,175,49,148,68,7,59,204,7,149,179,139,43,82,26,218,139,235,163,64,53,78,146,202,112,224,187,101,219,51,254,13,162,71,115,135,252,180,124,136,106,55,70,181,155,195,93,8,126,38,233,87,49,1,67,66,45,28,228,19,12,119,192,48,232,5,242,13,172,54,145,89,66,177,196,253,24,76,176,209,120,149,67,145,68,180,125,115,114,132,164,232,16,26,178,146,19,
+5,17,86,66,1,179,42,74,91,63,193,2,192,27,54,105,72,109,150,150,143,192,243,30,68,20,61,21,12,159,128,247,209,214,11,60,195,248,41,46,84,184,83,226,176,98,91,46,65,216,201,78,225,88,14,243,98,235,229,232,129,14,108,1,217,136,105,87,198,71,135,62,26,48,193,70,200,118,93,81,62,71,163,70,61,222,139,167,238,14,35,160,152,162,5,134,65,213,100,173,202,241,235,245,219,10,132,92,115,108,10,28,124,149,198,83,158,120,22,40,209,208,163,3,40,182,6,209,193,133,121,8,41,99,196,40,54,170,215,155,255,219,192,91,155,73,41,77,101,249,13,2,194,43,128,244,56,126,15,25,17,106,67,155,159,172,162,169,105,208,254,236,86,76,174,32,2,134,221,5,126,234,213,177,66,49,1,253,6,87,150,89,222,24,20,237,6,28,152,255,85,157,166,159,234,162,13,203,2,124,95,71,12,178,129,136,102,172,93,47,133,86,135,75,63,99,40,220,207,64,40,138,213,7,107,153,25,80,187,73,15,7,84,212,141,112,47,94,24,233,152,79,61,251,169,255,
+119,176,81,73,221,126,242,240,98,137,74,9,93,162,131,171,198,67,183,118,77,121,204,86,128,90,105,88,15,57,189,14,4,17,136,158,114,61,93,128,113,72,14,17,208,88,11,117,81,89,206,248,108,198,167,165,169,176,151,241,202,88,203,143,240,209,148,150,236,35,191,53,137,117,21,67,73,131,158,1,251,134,170,76,118,216,219,188,128,158,162,42,163,100,99,42,178,78,133,102,169,42,116,160,102,176,120,30,3,111,162,49,18,37,223,240,187,60,221,76,106,80,220,33,98,42,23,113,73,84,178,188,172,250,72,244,83,49,93,167,113,161,210,182,211,114,122,45,104,135,253,130,201,246,6,228,169,160,209,205,233,181,78,132,72,4,120,50,110,6,178,65,45,20,42,78,20,124,9,21,37,214,155,192,213,109,85,116,1,208,222,173,109,117,171,148,150,177,57,117,144,129,186,38,220,178,211,72,31,33,208,32,144,65,84,63,118,62,90,50,90,182,151,134,3,49,107,153,166,182,85,113,115,8,138,250,196,58,157,14,139,254,242,100,45,105,39,212,6,129,158,249,102,202,87,104,
+104,109,118,131,65,51,118,219,120,136,61,60,6,251,48,237,124,102,3,104,147,81,64,53,69,227,6,147,197,181,160,85,139,84,113,110,243,169,145,216,5,6,72,42,213,140,252,84,182,173,91,76,181,10,195,104,93,17,198,192,85,253,44,115,107,154,186,238,194,81,7,164,9,40,168,227,50,134,60,91,172,167,229,186,64,107,255,37,7,84,31,117,101,246,71,62,97,60,150,130,23,109,43,31,112,219,14,116,139,41,56,174,188,5,247,33,14,116,219,187,149,26,54,106,105,197,243,3,139,169,232,128,224,163,3,119,223,91,251,52,117,37,90,14,237,118,178,221,213,70,159,162,191,168,141,221,114,70,122,99,59,87,45,71,122,14,185,9,27,192,232,96,20,64,94,141,14,38,188,196,47,61,248,210,235,142,162,131,65,23,170,83,101,78,106,125,143,146,3,20,5,144,212,186,234,37,98,94,214,89,52,81,199,105,38,117,124,74,227,229,36,137,77,136,122,163,190,97,106,33,139,135,174,101,195,167,235,18,39,76,20,72,213,72,75,45,115,59,122,1,110,149,39,235,233,174,
+150,254,85,88,13,50,124,97,188,130,210,21,183,2,77,233,186,200,212,142,54,23,13,78,99,66,72,234,144,71,11,51,51,176,45,229,66,77,56,19,4,18,219,230,214,163,62,154,229,57,85,11,59,185,168,10,8,194,6,27,158,167,249,4,204,210,182,203,128,194,171,36,174,102,134,201,184,152,175,85,205,141,45,50,7,1,153,246,196,147,208,55,142,132,200,139,157,122,86,100,171,117,25,29,231,235,18,254,86,40,91,106,6,99,190,27,77,172,168,117,76,111,15,189,42,118,124,84,163,136,129,41,140,75,183,145,85,165,151,198,158,10,236,104,84,226,180,18,206,236,124,161,162,90,146,245,107,131,233,176,171,76,37,14,76,143,109,236,127,4,10,9,228,5,137,35,94,114,216,158,98,20,218,38,140,16,96,149,99,156,187,204,175,195,138,12,242,130,147,60,74,198,94,53,51,146,235,165,214,24,108,129,116,70,229,32,172,128,8,217,18,170,187,153,95,31,226,99,85,243,204,175,163,177,136,194,109,155,250,169,98,9,221,132,242,87,162,6,236,198,186,37,71,190,75,53,
+216,216,106,114,125,107,154,64,86,212,214,68,60,237,76,1,38,232,165,98,198,109,192,139,83,96,37,83,77,48,236,101,137,114,176,86,166,108,153,62,130,45,197,215,177,72,81,86,30,7,143,209,160,247,57,84,112,33,130,97,247,226,221,115,156,46,155,217,49,53,174,16,35,248,166,148,117,62,127,181,154,7,65,81,101,128,97,96,150,163,93,176,75,208,186,200,166,130,102,172,45,84,42,42,29,68,6,121,20,55,209,86,253,148,178,247,56,93,45,98,136,103,98,234,204,52,33,15,123,50,253,61,180,109,180,137,90,77,144,114,107,124,162,1,245,12,217,55,126,228,58,17,84,3,172,133,92,96,41,190,40,184,158,173,163,156,171,65,186,17,132,137,100,158,219,40,50,222,211,145,227,189,126,180,7,204,206,160,48,205,167,213,68,184,83,127,39,50,156,177,76,185,121,61,170,191,86,113,199,11,53,111,16,159,195,189,51,95,157,162,107,26,251,105,155,176,229,45,5,174,177,222,89,230,24,37,211,42,170,73,244,100,197,142,3,82,181,30,58,63,56,137,166,5,197,130,
+116,230,101,215,53,211,57,68,33,227,234,155,69,46,121,61,134,11,52,172,235,252,35,79,218,52,130,80,229,24,120,64,149,79,212,152,220,211,249,163,16,159,39,187,6,138,192,64,71,185,225,133,243,228,45,232,86,251,168,242,206,13,30,214,80,164,247,86,181,14,47,106,51,94,133,79,87,63,1,11,171,229,193,14,58,173,195,71,244,250,162,142,37,112,208,132,205,113,97,85,228,115,136,77,75,94,68,79,101,61,74,208,88,208,148,140,186,55,37,171,157,66,240,64,89,105,3,198,94,229,70,13,246,64,182,78,226,164,82,58,173,217,13,217,180,126,77,156,149,38,160,163,203,139,178,109,109,147,86,106,83,178,158,210,162,33,51,0,210,193,193,33,89,22,182,18,118,76,237,105,6,203,26,8,82,250,155,217,58,245,30,96,178,115,94,90,86,49,10,42,86,33,75,32,152,147,37,102,56,10,110,99,214,202,128,3,156,34,86,96,80,105,30,170,141,90,198,53,2,22,214,54,13,65,21,204,254,150,16,64,120,0,15,176,104,52,2,189,89,67,191,195,222,205,112,226,
+81,96,122,187,119,112,0,147,86,216,157,217,96,229,42,90,144,91,217,68,137,201,59,239,0,97,164,182,8,161,29,241,107,212,242,76,11,10,60,200,238,153,94,171,210,3,149,233,26,91,0,65,177,94,14,122,179,27,247,228,161,54,192,201,231,66,217,14,186,125,155,58,134,54,251,15,47,114,83,30,160,12,208,213,243,66,183,211,148,0,104,133,29,189,85,33,4,4,59,131,26,154,67,243,226,156,79,42,154,240,14,58,5,222,209,140,159,216,2,43,211,57,136,78,254,80,153,104,7,98,250,17,92,5,75,180,68,92,83,63,111,39,57,196,1,53,93,16,140,48,109,229,133,40,111,219,250,121,190,90,230,80,237,224,232,148,14,82,9,43,44,94,136,249,2,219,64,179,222,81,16,251,244,105,48,56,61,31,13,135,253,222,34,184,120,213,234,5,167,135,234,84,251,157,166,26,142,70,234,193,101,190,164,77,195,131,223,94,245,244,209,247,201,37,202,40,28,31,93,66,235,22,226,87,136,159,234,107,24,90,80,219,107,176,152,36,133,107,58,246,173,139,164,67,56,84,
+159,100,23,188,199,221,198,52,249,192,117,216,222,160,184,105,17,182,56,117,84,234,156,203,225,136,230,224,91,60,169,243,60,51,76,6,190,86,185,84,133,201,248,68,131,220,129,87,141,89,241,65,155,209,3,53,20,110,38,164,230,184,118,84,171,228,160,7,181,141,35,229,123,19,31,209,119,40,126,247,82,118,15,211,12,101,168,233,8,142,78,83,118,146,107,111,239,205,212,226,222,202,209,30,41,56,58,84,32,52,115,181,219,142,236,145,214,189,183,189,155,15,95,59,119,240,81,41,194,159,74,119,234,220,168,128,74,56,91,161,34,58,151,244,245,176,34,112,69,53,0,17,208,235,29,183,229,165,86,54,65,118,156,22,139,134,1,230,192,81,119,49,96,236,109,10,65,19,62,205,85,225,170,35,34,142,126,28,2,170,191,69,219,109,169,25,154,192,196,112,45,98,8,226,228,82,84,189,132,84,168,30,1,23,233,44,60,236,220,119,107,236,17,211,110,164,235,186,61,91,109,171,66,7,30,84,203,81,218,53,198,245,142,191,146,105,96,141,158,57,220,40,26,184,166,236,
+247,79,130,97,181,18,139,35,218,68,26,29,171,240,110,109,7,223,30,71,199,222,91,7,235,180,80,110,115,146,112,243,209,222,195,208,67,44,34,217,173,83,84,24,125,116,31,168,0,92,138,108,45,235,123,137,254,219,184,254,159,2,90,230,27,33,205,45,27,58,78,170,1,62,34,56,98,163,2,123,163,179,27,148,64,29,40,242,168,128,82,1,216,102,44,169,242,85,155,117,85,194,66,34,158,77,88,105,88,33,57,14,231,189,69,1,91,232,159,32,15,69,199,194,136,142,209,113,24,60,177,18,116,239,178,184,50,116,213,86,115,106,236,254,92,1,57,140,56,92,216,85,10,208,242,243,51,245,144,142,211,143,143,192,66,67,117,246,0,245,0,218,154,194,162,143,30,60,125,238,160,226,43,235,71,232,184,133,189,153,85,23,166,11,127,210,12,254,61,164,123,185,23,240,201,14,186,121,178,78,243,187,4,248,172,81,52,151,238,193,142,149,207,157,18,120,214,204,201,119,122,80,178,123,11,144,106,26,33,223,175,39,37,118,158,26,216,223,8,88,137,179,151,23,47,238,
+191,23,22,66,145,138,17,202,96,104,179,91,172,28,168,43,174,30,179,208,57,213,3,47,145,160,203,59,132,96,184,216,218,202,66,204,160,246,231,179,114,183,24,190,253,118,31,44,29,230,52,137,161,70,254,62,14,241,237,125,22,189,128,174,239,62,184,188,101,110,101,184,130,110,68,66,40,87,217,77,47,104,178,34,87,139,174,18,27,83,185,97,127,223,18,203,252,94,60,245,69,187,57,119,205,223,147,189,10,177,202,136,95,26,124,94,220,125,253,231,58,78,161,196,110,216,184,3,254,104,7,244,85,198,93,248,61,186,143,190,105,214,196,63,213,128,1,90,151,61,30,248,219,94,216,77,94,236,129,253,188,23,214,7,117,69,246,141,225,121,71,170,66,158,177,30,162,126,184,26,169,232,36,37,161,2,202,146,234,49,246,246,28,191,97,252,110,179,63,214,0,35,63,138,213,138,39,187,89,248,108,216,223,193,2,176,223,192,1,182,110,95,203,0,35,14,254,135,136,187,79,70,206,147,90,28,179,243,230,170,127,133,150,61,131,22,63,227,88,43,161,180,253,214,214,178,
+179,149,198,107,166,219,40,2,117,46,97,170,11,207,116,235,193,151,198,209,77,206,100,75,235,10,2,201,85,159,245,209,118,184,175,204,112,208,111,197,198,26,126,115,171,224,165,251,229,153,1,218,79,226,248,43,72,28,223,143,196,209,87,144,56,186,23,137,147,47,167,112,114,47,2,79,190,156,192,147,138,192,95,222,153,129,158,218,188,47,193,82,169,152,174,79,35,134,221,243,209,112,240,220,159,70,216,229,251,199,17,192,246,133,19,141,233,100,82,26,208,250,102,43,239,9,125,48,199,229,174,74,28,228,201,70,223,194,178,247,19,51,205,166,102,143,112,233,195,146,122,158,161,115,227,38,102,0,66,204,90,186,119,214,158,175,91,47,15,121,99,132,248,58,148,78,27,196,33,210,62,140,162,234,108,107,100,111,22,34,229,15,219,204,155,60,95,117,42,13,211,164,143,23,56,52,53,163,58,28,152,168,219,6,52,48,48,104,77,116,174,111,60,201,247,236,113,55,123,247,228,39,55,211,99,26,216,170,203,93,170,137,120,56,167,120,210,167,91,107,225,13,146,92,214,218,
+166,255,214,205,147,230,215,217,213,241,231,93,178,213,174,234,84,69,138,22,26,188,121,184,75,42,168,179,232,147,179,108,139,140,135,70,191,119,24,173,191,119,61,162,182,255,122,138,18,153,155,94,190,124,179,141,4,84,10,196,57,211,214,243,23,122,250,227,18,7,218,238,14,240,223,22,32,246,190,135,251,196,180,53,217,186,123,239,102,30,122,207,157,95,225,239,65,74,117,30,152,175,231,11,51,42,109,59,119,150,232,96,203,29,3,146,243,250,183,159,244,93,27,213,25,41,198,234,70,59,41,120,252,209,137,150,151,241,90,226,61,226,141,40,205,81,69,198,11,154,68,167,224,72,56,190,145,64,105,186,216,21,168,212,219,150,83,149,236,15,23,63,198,176,92,53,120,106,57,93,29,75,83,125,108,107,243,10,14,157,112,124,174,183,83,97,106,211,73,133,200,104,60,175,174,14,16,104,125,186,174,175,119,2,251,244,220,28,168,171,19,26,123,117,14,247,45,75,169,47,217,235,37,210,185,71,0,203,185,160,3,129,37,242,77,39,91,8,231,2,40,28,109,136,92,156,
+10,75,92,85,151,17,129,120,18,26,57,134,175,4,140,171,188,88,168,40,56,75,245,47,239,140,78,182,65,30,171,148,143,163,183,198,105,160,189,10,208,52,83,53,128,202,203,162,87,46,116,13,248,162,30,9,30,119,190,130,170,57,53,248,66,210,163,175,34,61,122,32,233,90,57,4,117,208,184,143,153,70,253,116,37,21,147,194,252,140,202,86,68,253,97,239,124,116,58,56,243,43,162,31,244,17,247,157,5,17,94,234,83,213,152,226,107,227,231,59,51,29,11,208,184,193,83,54,148,174,98,93,194,237,26,16,106,204,20,39,31,136,88,255,226,97,47,94,136,94,15,196,74,211,242,189,56,233,106,227,67,144,170,67,193,221,56,77,178,112,170,230,6,156,58,0,153,9,99,129,133,32,157,157,222,128,210,37,157,40,214,241,150,121,244,187,44,11,136,2,123,185,213,124,198,230,242,180,29,237,210,111,30,8,190,122,230,143,36,53,153,189,134,1,53,223,53,47,40,186,105,18,45,133,246,208,164,9,5,222,177,91,165,68,34,212,233,133,230,0,131,90,22,61,45,107,
+183,104,12,96,61,200,85,217,119,139,149,43,165,21,22,90,173,20,154,100,215,28,28,193,146,77,221,112,205,146,96,107,73,102,108,208,44,169,174,132,185,63,12,163,219,0,181,235,91,14,6,178,183,6,248,234,250,49,129,211,109,145,134,76,235,205,255,49,59,183,188,212,191,101,73,74,9,234,58,175,52,87,81,90,116,93,129,126,38,44,171,244,21,171,31,76,142,143,52,181,208,185,67,99,205,153,126,39,149,217,43,159,222,241,138,2,188,63,83,250,196,251,158,108,225,22,190,128,41,252,49,103,171,129,11,253,35,79,173,7,16,190,250,181,86,183,211,233,247,206,78,207,60,36,248,27,9,201,107,149,94,243,230,244,202,164,154,13,122,197,75,94,148,247,64,35,233,146,239,46,36,36,169,123,98,81,139,155,126,27,185,3,249,149,252,30,10,159,59,181,72,129,15,245,102,127,54,26,29,36,241,109,116,128,23,120,151,240,108,17,29,80,209,18,29,220,242,184,128,47,168,192,61,193,241,74,254,34,150,95,70,87,205,218,52,105,168,211,74,174,62,47,242,117,161,62,
+237,231,108,201,233,246,220,30,230,254,151,151,239,111,21,131,13,60,77,215,69,65,119,111,133,178,88,235,194,127,27,107,158,17,137,236,142,180,4,43,252,171,173,126,236,148,119,160,128,21,251,81,252,146,191,201,111,140,29,170,224,189,11,23,254,176,180,192,210,49,209,11,125,76,31,86,171,251,97,90,227,194,221,152,222,173,120,246,3,244,166,87,217,62,100,184,10,226,10,172,99,115,129,183,136,64,103,246,158,46,197,27,232,89,232,192,7,117,97,66,182,194,203,242,201,31,248,75,151,70,178,239,214,229,215,209,189,41,68,217,68,247,29,222,110,222,67,248,59,16,75,150,124,29,237,152,112,220,69,221,173,71,161,218,12,250,231,195,81,239,244,252,108,52,124,222,59,247,175,4,17,76,213,136,241,114,145,39,59,234,207,207,253,106,87,74,210,161,23,30,94,231,51,229,124,47,189,114,169,128,54,148,78,172,157,75,221,180,81,154,182,196,208,252,85,83,184,39,199,216,86,255,86,225,253,25,52,221,136,22,47,28,78,110,75,94,253,6,7,113,238,71,244,70,100,188,
+17,153,174,109,116,204,18,250,214,41,221,87,84,183,239,240,83,198,111,240,30,87,117,167,118,55,177,203,52,151,117,74,244,68,90,30,127,251,220,171,203,19,116,88,23,232,79,198,86,133,157,16,85,216,254,13,118,200,29,25,232,242,109,191,4,0,35,9,160,209,10,235,136,157,122,207,65,77,134,23,39,9,213,100,127,131,48,42,150,173,213,134,225,255,3,16,146,173,2,
 
Index: uppsrc/ide/app.tpp/macros$en-us.tpp
===================================================================
--- uppsrc/ide/app.tpp/macros$en-us.tpp	(revision 5909)
+++ uppsrc/ide/app.tpp/macros$en-us.tpp	(working copy)
@@ -1,13 +1,230 @@
-TITLE("TheIDE macros")
-COMPRESSED
-120,156,149,88,107,115,219,184,21,253,43,24,59,237,72,89,90,38,0,62,165,237,140,103,29,111,155,105,146,205,196,217,238,7,85,9,41,18,178,184,166,72,149,160,226,168,105,242,219,123,46,72,73,148,44,57,187,241,196,38,113,223,231,62,0,112,44,216,179,103,182,101,159,219,223,249,55,124,161,102,241,42,175,39,227,92,4,193,40,243,109,103,20,115,127,244,75,56,250,246,237,219,32,12,197,136,84,113,168,226,182,35,185,224,220,177,109,71,248,220,13,237,208,13,120,96,75,223,17,174,111,187,195,101,92,197,139,201,56,14,228,232,249,59,15,82,194,114,207,37,151,220,230,158,112,192,101,75,91,56,92,184,60,8,28,238,187,129,12,61,111,152,196,203,58,43,139,201,120,74,114,100,76,66,204,246,3,207,225,16,114,92,33,125,215,129,176,227,112,142,103,238,250,158,239,15,235,172,206,213,100,156,145,215,83,238,249,163,216,17,228,245,53,105,112,44,239,28,110,10,31,42,28,225,120,142,12,132,228,129,16,94,40,157,208,129,255,92,12,179,90,193,219,41,196,72,
-148,196,92,24,118,92,135,75,0,227,248,174,4,155,143,191,142,29,114,1,235,129,237,186,48,172,62,111,208,34,160,72,206,131,57,225,187,196,29,56,1,151,126,32,28,225,9,56,96,251,136,150,172,187,195,84,233,4,114,82,240,81,13,151,70,215,87,238,136,67,216,183,252,115,97,135,182,240,252,16,6,225,44,2,151,97,200,101,0,131,14,119,109,46,135,73,153,34,216,169,112,109,105,44,6,200,135,7,205,6,27,215,227,112,88,200,0,38,125,46,37,126,187,78,224,15,181,162,140,212,101,53,25,63,191,234,217,3,123,32,92,183,79,226,33,196,3,233,72,233,120,161,195,109,9,51,208,225,16,94,158,141,156,114,87,4,195,105,172,97,179,118,8,92,131,42,167,130,66,2,100,224,74,152,246,240,11,201,69,128,18,216,136,208,9,164,12,236,97,146,199,90,119,0,122,78,65,114,110,113,126,238,19,174,174,20,78,72,224,72,1,128,133,231,134,28,8,187,158,99,139,97,165,254,179,202,42,181,80,5,32,206,80,35,163,77,122,218,122,132,51,77,61,10,139,11,
-84,164,235,121,54,225,229,162,42,132,116,1,184,205,3,7,30,225,7,41,174,219,146,156,238,98,144,22,151,231,161,112,36,60,9,29,7,8,64,1,15,57,231,118,128,31,68,6,92,76,109,240,182,186,186,133,197,29,139,59,231,62,106,25,153,10,29,50,31,74,194,79,0,126,225,217,46,242,32,26,113,65,168,139,103,192,157,139,128,254,27,228,185,107,113,52,5,92,228,174,139,184,37,160,22,1,98,119,129,189,52,117,206,253,96,248,70,61,232,23,113,173,218,130,121,126,253,172,169,52,238,89,220,59,183,73,222,13,66,36,144,59,132,159,116,156,80,132,82,186,34,116,165,103,3,71,221,244,52,9,83,95,153,158,220,42,241,45,238,163,195,16,171,235,34,122,35,134,200,125,78,174,136,32,244,8,133,86,73,116,145,103,5,249,129,202,24,53,197,240,252,250,7,206,125,82,20,160,97,130,192,179,101,8,48,128,129,237,162,210,49,21,2,36,26,121,22,104,3,26,11,201,125,124,167,162,139,182,101,191,124,252,250,151,155,55,23,191,222,178,177,22,35,246,126,174,
-94,190,184,97,139,56,169,74,253,215,201,88,219,7,107,44,174,20,123,168,178,186,86,5,203,10,54,254,80,151,203,44,137,134,209,101,116,153,165,42,186,140,151,203,232,18,237,21,61,83,69,116,177,210,31,216,141,78,152,78,170,12,163,165,184,99,121,92,220,173,224,194,132,197,69,202,150,121,156,168,148,52,13,86,96,155,101,185,210,131,206,51,75,226,130,77,21,83,89,61,87,21,67,9,213,172,156,177,74,221,173,242,152,222,77,56,154,149,149,241,108,167,238,186,92,44,202,130,214,95,149,73,156,179,20,165,156,160,253,214,131,54,172,246,207,107,10,139,165,106,150,21,25,141,190,61,87,152,174,97,80,179,7,88,103,115,21,167,112,1,244,89,89,45,58,90,144,132,203,43,135,141,47,175,220,6,37,20,27,61,179,137,81,30,125,68,11,173,12,117,184,89,161,154,220,48,253,83,173,247,93,122,64,164,138,141,141,210,142,134,6,176,189,101,51,53,77,224,52,8,89,142,247,42,206,53,235,25,135,175,153,94,23,117,252,185,223,17,132,177,9,203,52,187,87,107,
-70,67,208,100,5,81,235,108,145,17,160,117,201,234,121,169,17,249,188,124,48,96,144,105,164,228,136,59,198,200,120,55,204,16,222,161,165,54,123,229,130,10,38,29,180,104,111,144,212,64,50,207,203,7,100,108,186,222,47,37,212,76,116,169,171,36,45,147,230,165,91,77,19,54,45,211,195,68,222,124,142,23,75,84,204,112,47,51,77,66,88,116,246,38,254,148,221,197,20,107,116,54,140,206,126,206,224,104,65,160,69,255,142,206,222,151,203,223,176,80,62,208,75,116,198,174,235,42,143,126,120,207,162,47,173,150,139,255,13,72,162,215,101,61,235,143,90,106,244,181,125,56,176,249,178,208,10,245,154,172,170,10,67,148,165,152,33,80,222,81,170,89,244,55,22,141,163,201,104,187,84,47,104,237,239,170,190,93,235,247,217,66,245,250,163,14,251,143,63,34,67,209,71,93,87,104,165,94,189,24,172,85,92,245,105,25,126,95,64,249,35,6,52,65,61,127,146,35,141,215,29,27,131,198,233,158,62,136,110,7,244,207,168,254,56,207,215,22,155,85,229,194,116,247,82,85,
-122,137,246,202,62,41,171,141,30,201,141,97,114,161,80,78,41,204,162,105,85,154,161,1,89,116,193,32,190,121,75,208,167,40,154,71,131,165,35,90,148,181,73,28,235,153,118,164,33,98,74,47,45,235,254,97,55,151,186,238,152,106,84,52,186,151,85,249,9,3,202,12,135,250,161,100,200,101,249,73,85,121,137,90,132,149,190,233,106,77,222,101,168,163,44,201,106,116,66,92,179,135,178,186,111,39,0,18,169,105,208,160,116,180,202,41,222,102,194,168,207,173,128,225,186,3,10,5,91,150,218,204,19,125,224,225,173,58,226,96,167,102,217,151,47,210,243,252,161,39,165,156,243,209,85,15,103,173,62,107,130,51,204,147,225,176,121,125,177,107,95,172,125,184,18,102,25,251,129,239,82,253,188,82,197,93,61,239,245,183,252,205,2,25,167,97,49,216,172,239,4,176,181,92,151,171,162,238,200,188,89,45,166,232,84,200,208,198,163,13,118,39,133,223,150,186,135,222,55,172,147,157,142,183,45,18,172,87,206,102,26,225,155,178,193,56,199,100,184,203,138,130,242,73,78,97,
-129,102,110,127,247,82,33,153,201,28,167,134,164,110,156,24,183,202,31,219,191,54,169,233,120,222,44,176,198,228,113,127,141,179,155,60,117,28,38,26,85,67,155,201,113,135,233,136,225,50,95,45,138,83,170,182,177,3,184,252,207,168,189,85,249,79,132,78,39,162,219,186,221,252,182,181,119,84,236,116,10,183,80,154,60,238,180,176,151,51,246,95,85,149,214,190,97,106,97,28,1,177,119,98,83,232,64,124,96,245,118,75,57,129,1,24,244,166,117,160,233,187,209,223,26,39,26,223,246,117,90,180,181,96,98,32,192,67,253,187,126,220,159,17,93,59,219,149,70,67,7,143,3,15,174,115,76,213,157,15,157,162,138,139,68,229,250,169,12,252,1,143,47,201,135,119,170,94,85,5,141,166,42,94,83,118,38,134,11,148,142,95,214,46,26,76,162,201,70,237,247,172,118,176,137,23,138,197,218,176,108,200,22,227,135,57,124,167,22,152,133,127,220,117,226,214,71,61,126,202,207,142,149,71,57,108,253,108,89,58,213,102,237,18,214,167,225,92,181,198,143,165,145,140,183,133,
-246,180,11,79,25,222,53,128,181,223,81,123,230,79,85,64,187,123,30,65,210,92,85,247,129,108,152,59,53,208,9,101,66,252,132,109,92,155,105,120,10,212,142,193,125,11,219,208,90,142,67,76,27,110,179,223,181,110,108,22,191,15,163,57,11,109,77,54,241,225,72,180,9,245,97,94,230,42,250,136,157,51,109,87,178,187,162,172,176,148,208,53,182,101,202,242,52,137,171,84,119,92,38,189,59,63,44,182,210,84,250,52,49,88,185,108,118,83,246,75,243,112,112,180,108,226,104,118,108,50,66,74,140,71,52,197,18,240,99,235,175,192,86,87,43,101,54,112,92,168,204,48,109,245,178,25,206,205,202,140,66,115,148,54,103,211,85,145,226,144,179,42,154,193,82,181,29,203,45,86,210,101,228,33,131,25,251,81,129,153,43,200,33,56,85,179,12,76,48,130,254,28,74,143,64,250,41,47,147,251,141,198,46,70,197,49,144,158,194,8,81,172,205,217,168,3,80,139,195,102,60,21,219,221,163,57,48,234,141,225,244,32,240,215,104,139,87,106,86,247,6,131,65,191,57,206,
-236,8,239,178,187,249,113,202,111,136,254,164,24,17,79,139,254,186,60,186,252,2,89,63,74,248,71,137,211,244,49,194,13,138,249,216,250,91,220,44,79,24,33,210,73,67,239,145,247,102,132,156,162,158,178,104,144,160,180,99,188,76,78,160,120,146,188,133,242,73,142,239,40,65,188,39,105,38,224,147,84,3,239,73,234,77,59,48,142,18,91,160,159,164,63,109,124,7,249,147,44,228,5,136,187,94,122,109,134,121,59,236,208,27,77,27,53,223,10,204,209,232,95,113,149,197,69,189,61,58,144,106,220,112,238,187,91,0,235,229,217,189,162,107,123,129,78,194,93,79,47,203,34,165,174,164,189,130,190,159,129,70,95,19,150,32,153,110,189,157,103,179,154,238,224,56,100,205,182,106,49,115,248,163,233,190,92,53,217,202,227,41,120,44,54,160,186,217,205,120,186,171,40,120,14,54,184,29,231,229,221,128,189,109,110,58,154,134,63,238,86,235,150,108,230,218,44,83,121,106,40,89,183,185,205,167,57,101,54,30,186,200,101,179,117,243,169,102,74,167,29,58,179,98,84,104,
-213,74,155,41,185,194,158,129,253,170,44,53,12,53,231,34,107,59,34,63,149,89,218,157,146,155,117,10,222,124,85,161,81,66,161,215,230,83,7,92,249,125,69,227,24,7,100,186,24,53,118,154,111,58,237,206,184,153,62,228,203,98,149,215,25,133,189,227,61,60,193,221,124,86,201,170,110,207,26,139,244,224,70,210,82,245,134,100,49,250,238,189,50,78,209,94,91,174,106,3,88,105,222,104,56,98,82,31,88,120,21,99,95,152,159,48,208,16,97,128,228,227,37,221,14,227,35,219,168,57,103,94,55,234,187,167,76,90,238,58,178,245,224,235,215,201,255,1,59,119,129,148,
-
+topic "TheIDE macros";
+[2 $$0,0#00000000000000000000000000000000:Default]
+[l288;i704;a17;O9;~~~.992;2 $$1,0#10431211400427159095818037425705:param]
+[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
+[b83;*2 $$3,5#07864147445237544204411237157677:title]
+[i288;b167;a42;O9;C2 $$4,6#40027414424643823182269349404212:item]
+[b42;a42;2 $$5,5#45413000475342174754091244180557:text]
+[l288;a17;2 $$6,6#27521748481378242620020725143825:desc]
+[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
+[b2503;2 $$8,0#65142375456100023862071332075487:separator]
+[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
+[t4167;C2 $$10,0#37138531426314131251341829483380:class]
+[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
+[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
+[b167;C2 $$13,13#92430459443460461911108080531343:item1]
+[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
+[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
+[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
+[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
+[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
+[{_}%EN-US 
+[s2; TheIDE macros&]
+[s0; TheIDE macros are written in [^topic`:`/`/ide`/app`/esc`$en`-us^ Esc 
+scripting language] and placed in .usc files. .usc files can 
+be either part of regular packages or are placed in Common or 
+Local directory.&]
+[s0; &]
+[s0; Macro definition in .usc file starts with header in form&]
+[s0; &]
+[s7; [* macro] [*/@4 Macro`_menu][* :][*/@4 Macro`_item] [*/@4 Key]&]
+[s0; &]
+[s0; where [*/@4 Macro`_menu] and [*/@4 Macro`_item] are text literals 
+(with C syntax) and [*/@4 Key] is key description similar to those 
+shown in menus. [*/@4 Macro`_menu] with [@(0.0.255) :] and [*/@4 Key] 
+can be omitted. Macro header is followed by [^topic`:`/`/Esc`/srcdoc`/Esc`$en`-us^ E
+sc] body.&]
+[s0; &]
+[s0; Examples:&]
+[s0; &]
+[s7; macro `"Navigation`":`"Find next `\`"TopWindow`\`"`" Ctrl`+T 
+`{&]
+[s7; -|.Find(`"TopWindow`");&]
+[s7; `}&]
+[s7; &]
+[s7; macro `"Insert current date`" `{&]
+[s7; -|s `= `[`];&]
+[s7; -|tm `= GetSysTime();&]
+[s7; -|s << to`_string(tm.year) << `"`-`" << to`_string(tm.month) 
+<< `"`-`" << to`_string(tm.day);&]
+[s7; -|.Insert(s);&]
+[s7; `}&]
+[s0; &]
+[s0; Formally, from Esc perspective, macro is a `"method`" of editor 
+`- all editor commands are written in `"method`" notation (starting 
+with dot).&]
+[s0; &]
+[s0; Additionally, helper functions can be defined using the [*/@5 fn] 
+keyword:&]
+[s7; fn Duplicate(str) `{&]
+[s7; -|return str `+ str;&]
+[s7; `}&]
+[s0; &]
+[s0; Functions defined like this can be simply called in the code 
+of macros as a global functions.&]
+[s0; &]
+[s0; &]
+[s2; [4 Text editing methods]&]
+[s0; Most of text editing methods are provided in two (`"overloaded`") 
+forms `- implicit that works with cursor and selection or explicit 
+with given positions.&]
+[s0; &]
+[ {{3667:6333h1;@(204) [s0; Method]
+:: [s0; Description]
+::^@2 [s0; [*C+75 GetLength()]]
+:: [s0; Length of text.]
+:: [s0; [*C+75 GetLineCount()]]
+:: [s0; Number of lines in text.]
+:: [s0; [*C+75 GetLinePos(][/C+75 line][*C+75 )]]
+:: [s0; Position (offset from the beginning of the file) of the first 
+character of [/ line].]
+:: [s0; [*C+75 GetCursor()]]
+:: [s0; Cursor offset.]
+:: [s0; [*C+75 GetLine(][/C+75 position][*C+75 )]]
+:: [s0; Line for given [/ position].]
+:: [s0; [*C+75 GetColumn(][/C+75 position][*C+75 )]]
+:: [s0; Position in line for given [/ position].]
+:: [s0; [*C+75 GetSelBegin()]]
+:: [s0; Start of selection.]
+:: [s0; [*C+75 GetSelCount()]]
+:: [s0; Number of characters in selection. If zero, GetSelBegin() is 
+equal to GetCursor().]
+:: [s0; [*C+75 SetCursor(][/C+75 position][*C+75 )]]
+:: [s0; Sets cursor to given [/ position].]
+:: [s0; [*C+75 SetSelection(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
+:: [s0; Sets selection starting with [/ position] with [/ count] characters.]
+:: [s0; [*C+75 ClearSelection()]]
+:: [s0; Cancels selection.]
+:: [s0; [*C+75 Get(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
+:: [s0; Returns array of [/ count] characters, starting at [/ position.]]
+:: [s0; [*C+75 Get(][/C+75 position][*C+75 )]]
+:: [s0; Same as Get(position, 1).]
+:: [s0; [*C+75 Remove(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
+:: [s0; Removes [/ count] characters at [/ position.]]
+:: [s0; [*C+75 Remove(][/C+75 count][*C+75 )]]
+:: [s0; Same as Remove(GetCursor(), [/ count]) `- removes [/ count] characters 
+at cursor position.]
+:: [s0; [*C+75 Remove()]]
+:: [s0; Same as Remove(GetSelBegin(), GetSelCount()) `- removes selection.]
+:: [s0; [*C+75 Insert(][/C+75 position][*C+75 , ][/C+75 text][*C+75 )]]
+:: [s0; Inserts array of characters [/ text] at the [/ position.]]
+:: [s0; [*C+75 Insert(][/C+75 text][*C+75 )]]
+:: [s0; Same as Insert(GetCursor(), [/ text]) `- inserts [/ text] at cursor 
+position.]
+:: [s0; [*C+75 Find(][/C+75 text][*C+75 , ][/C+75 down][*C+75 , ][/C+75 whole`_word][*C+75 , 
+][/C+75 ignore`_case][*C+75 , ][/C+75 wildcards][*C+75 )]]
+:: [s0; Finds [/ text], using give options. Options can be omitted `- 
+in that case [/ down] is considered true and rest of options false. 
+If text is found, function returns 1, otherwise 0.]
+:: [s0; [*C+75 Replace(][/C+75 text][*C+75 , ][/C+75 replace`_with][*C+75 , ][/C+75 whole`_word][*C+75 ,
+ ][/C+75 ignore`_case][*C+75 , ][/C+75 widcards][*C+75 )]]
+:: [s0; Block replace, using given options. Options ca be omitted `- 
+in that case they are considered false. Returns number of strings 
+replaced.]
+:: [s0; [*C+75 MoveLeft(...)]&]
+[s0; [*C+75 MoveRight(...)]&]
+[s0; [*C+75 MoveWordLeft(...)]&]
+[s0; [*C+75 MoveWordRight(...)]&]
+[s0; [*C+75 MoveUp(...)]&]
+[s0; [*C+75 MoveDown(...)]&]
+[s0; [*C+75 MoveHome(...)]&]
+[s0; [*C+75 MoveEnd(...)]&]
+[s0; [*C+75 MovePageUp(...)]&]
+[s0; [*C+75 MovePageDown(...)]&]
+[s0; [*C+75 MoveTextBegin(...)]&]
+[s0; [*C+75 MoveTextEnd(...)]&]
+[s0; [*C+75 MoveLeft(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveRight(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveWordLeft(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveWordRight(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveUp(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveDown(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveHome(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveEnd(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MovePageUp(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MovePageDown(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveTextBegin(][/C+75 sel][*C+75 )]&]
+[s0; [*C+75 MoveTextEnd(sel)]]
+:: [s0; Moves cursor in given direction. Variant with [/ sel] makes selection 
+(like when corresponding movement while pressing Shift key) if 
+[/ sel] is 1.]}}&]
+[s0; &]
+[s2; [4 File methods]&]
+[s0; &]
+[ {{3667:6333h1;@(204) [s0; Method]
+:: [s0; Description]
+::^@2 [s0; [*C+75 FileName()]]
+:: [s0; Returns the name of currently edited file.]
+:: [s0; [*C+75 EditFile(][/C+75 path][*C+75 )]&]
+[s0; [*C+75 EditFile(][/C+75 filename, pkg][*C+75 )]]
+:: [s0; Opens the specified file in editor.]
+:: [s0; [*C+75 SaveCurrentFile()]]
+:: [s0; Saves file in active tab.]
+:: [s0; [*C+75 CloseFile()]]
+:: [s0; Closes active tab.]}}&]
+[s0; &]
+[s2; [4 User interaction methods]&]
+[s0; From time to time, it is necessary to communicate some information 
+from user to the macro or vice versa, which is exactly what these 
+methods do.&]
+[s0; &]
+[ {{3667:6333h1;@(204) [s0; Method]
+:: [s0; Description]
+::^@2 [s0; [*C+75 Input(][/C+75 label, ...][*C+75 )]]
+:: [s0; Simple input dialog. Provides as many input text fields as is 
+number of parameters specifying labels for these fields. If user 
+chooses Cancel, returns void, otherwise returns single string 
+if there is just one edit field or array of strings for multiple 
+edit fields.]
+:: [s0; [*C+75 ClearConsole()]]
+:: [s0; Clear the output console.]
+:: [s0; [*C+75 Echo(][/C+75 ...][*C+75 )]]
+:: [s0; Prints all arguments to the output console, one per line.]}}&]
+[s0; &]
+[s2; [4 Build and execute methods]&]
+[s0; The macros can be used to extend the capabilities of TheIDE. 
+For that, there is a few methods that allow executing other programs 
+and also to trigger building U`+`+ packages.&]
+[s0; &]
+[ {{3667:6333h1;@(204) [s0; Method]
+:: [s0; Description]
+::^@2 [s0; [*C+75 Execute(][/C+75 cmdline][*C+75 )]]
+:: [s0; Executes cmdline, capturing the output to the console.]
+:: [s0; [*C+75 Launch(][/C+75 cmdline][*C+75 )]]
+:: [s0; Launches the application.]
+:: [s0; [*C+75 Build(][/C+75 `[flags`[, outfile`]`]][*C+75 )]]
+:: [s0; Builds open main package. Optional parameters can be used to 
+specify the flags (e.g. `"GUI MT`") and target path for the compiled 
+executable.]
+:: [s0; [*C+75 BuildProject(][/C+75 uppfile, flags`[, outfile`]][*C+75 )]]
+:: [s0; Same as previous, but works with any package specified by passing 
+path to it`'s .upp file as a first parameter.]}}&]
+[s0; &]
+[s2; [4 Informative methods]&]
+[s0; The methods providing information about packages and build settings. 
+If the optional parameter [/ pkg] is not specified, the currently 
+selected package is used.&]
+[s0; &]
+[ {{3667:6333h1;@(204) [s0; Method]
+:: [s0; Description]
+::^@2 [s0; [*C+75 ActivePackage()]]
+:: [s0; The name of package in which the currently edited file belongs 
+to.]
+:: [s0; [*C+75 MainPackage()]]
+:: [s0; The name of main package.]
+:: [s0; [*C+75 AllPackages()]]
+:: [s0; Array of all used packages.]
+:: [s0; [*C+75 PackageDir(][/C+75 `[pkg`]][*C+75 )]]
+:: [s0; The directory where the package resides.]
+:: [s0; [*C+75 PackageFiles(][/C+75 `[pkg`]][*C+75 )]]
+:: [s0; List of all files in the package.]
+:: [s0; [*C+75 Assembly()]]
+:: [s0; Name of the assembly.]
+:: [s0; [*C+75 Flags()]]
+:: [s0; Array of currently set build flags.]
+:: [s0; [*C+75 BuildMethod()]]
+:: [s0; Currently selected build method.]
+:: [s0; [*C+75 BuildMode()]]
+:: [s0; Currently selected build mode (0 `= Debug, 1 `= Optimal, 2 `= 
+Speed, 3 `= Size).]}}&]
+[s0; ]]
\ No newline at end of file
Index: uppsrc/ide/app.tpp/macros$en-us.tppi
===================================================================
--- uppsrc/ide/app.tpp/macros$en-us.tppi	(revision 5909)
+++ uppsrc/ide/app.tpp/macros$en-us.tppi	(working copy)
@@ -1,13 +1,17 @@
 TITLE("TheIDE macros")
 COMPRESSED
-120,156,149,88,107,115,219,184,21,253,43,24,59,237,72,89,90,38,0,62,165,237,140,103,29,111,155,105,146,205,196,217,238,7,85,9,41,18,178,184,166,72,149,160,226,168,105,242,219,123,46,72,73,148,44,57,187,241,196,38,113,223,231,62,0,112,44,216,179,103,182,101,159,219,223,249,55,124,161,102,241,42,175,39,227,92,4,193,40,243,109,103,20,115,127,244,75,56,250,246,237,219,32,12,197,136,84,113,168,226,182,35,185,224,220,177,109,71,248,220,13,237,208,13,120,96,75,223,17,174,111,187,195,101,92,197,139,201,56,14,228,232,249,59,15,82,194,114,207,37,151,220,230,158,112,192,101,75,91,56,92,184,60,8,28,238,187,129,12,61,111,152,196,203,58,43,139,201,120,74,114,100,76,66,204,246,3,207,225,16,114,92,33,125,215,129,176,227,112,142,103,238,250,158,239,15,235,172,206,213,100,156,145,215,83,238,249,163,216,17,228,245,53,105,112,44,239,28,110,10,31,42,28,225,120,142,12,132,228,129,16,94,40,157,208,129,255,92,12,179,90,193,219,41,196,72,
-148,196,92,24,118,92,135,75,0,227,248,174,4,155,143,191,142,29,114,1,235,129,237,186,48,172,62,111,208,34,160,72,206,131,57,225,187,196,29,56,1,151,126,32,28,225,9,56,96,251,136,150,172,187,195,84,233,4,114,82,240,81,13,151,70,215,87,238,136,67,216,183,252,115,97,135,182,240,252,16,6,225,44,2,151,97,200,101,0,131,14,119,109,46,135,73,153,34,216,169,112,109,105,44,6,200,135,7,205,6,27,215,227,112,88,200,0,38,125,46,37,126,187,78,224,15,181,162,140,212,101,53,25,63,191,234,217,3,123,32,92,183,79,226,33,196,3,233,72,233,120,161,195,109,9,51,208,225,16,94,158,141,156,114,87,4,195,105,172,97,179,118,8,92,131,42,167,130,66,2,100,224,74,152,246,240,11,201,69,128,18,216,136,208,9,164,12,236,97,146,199,90,119,0,122,78,65,114,110,113,126,238,19,174,174,20,78,72,224,72,1,128,133,231,134,28,8,187,158,99,139,97,165,254,179,202,42,181,80,5,32,206,80,35,163,77,122,218,122,132,51,77,61,10,139,11,
-84,164,235,121,54,225,229,162,42,132,116,1,184,205,3,7,30,225,7,41,174,219,146,156,238,98,144,22,151,231,161,112,36,60,9,29,7,8,64,1,15,57,231,118,128,31,68,6,92,76,109,240,182,186,186,133,197,29,139,59,231,62,106,25,153,10,29,50,31,74,194,79,0,126,225,217,46,242,32,26,113,65,168,139,103,192,157,139,128,254,27,228,185,107,113,52,5,92,228,174,139,184,37,160,22,1,98,119,129,189,52,117,206,253,96,248,70,61,232,23,113,173,218,130,121,126,253,172,169,52,238,89,220,59,183,73,222,13,66,36,144,59,132,159,116,156,80,132,82,186,34,116,165,103,3,71,221,244,52,9,83,95,153,158,220,42,241,45,238,163,195,16,171,235,34,122,35,134,200,125,78,174,136,32,244,8,133,86,73,116,145,103,5,249,129,202,24,53,197,240,252,250,7,206,125,82,20,160,97,130,192,179,101,8,48,128,129,237,162,210,49,21,2,36,26,121,22,104,3,26,11,201,125,124,167,162,139,182,101,191,124,252,250,151,155,55,23,191,222,178,177,22,35,246,126,174,
-94,190,184,97,139,56,169,74,253,215,201,88,219,7,107,44,174,20,123,168,178,186,86,5,203,10,54,254,80,151,203,44,137,134,209,101,116,153,165,42,186,140,151,203,232,18,237,21,61,83,69,116,177,210,31,216,141,78,152,78,170,12,163,165,184,99,121,92,220,173,224,194,132,197,69,202,150,121,156,168,148,52,13,86,96,155,101,185,210,131,206,51,75,226,130,77,21,83,89,61,87,21,67,9,213,172,156,177,74,221,173,242,152,222,77,56,154,149,149,241,108,167,238,186,92,44,202,130,214,95,149,73,156,179,20,165,156,160,253,214,131,54,172,246,207,107,10,139,165,106,150,21,25,141,190,61,87,152,174,97,80,179,7,88,103,115,21,167,112,1,244,89,89,45,58,90,144,132,203,43,135,141,47,175,220,6,37,20,27,61,179,137,81,30,125,68,11,173,12,117,184,89,161,154,220,48,253,83,173,247,93,122,64,164,138,141,141,210,142,134,6,176,189,101,51,53,77,224,52,8,89,142,247,42,206,53,235,25,135,175,153,94,23,117,252,185,223,17,132,177,9,203,52,187,87,107,
-70,67,208,100,5,81,235,108,145,17,160,117,201,234,121,169,17,249,188,124,48,96,144,105,164,228,136,59,198,200,120,55,204,16,222,161,165,54,123,229,130,10,38,29,180,104,111,144,212,64,50,207,203,7,100,108,186,222,47,37,212,76,116,169,171,36,45,147,230,165,91,77,19,54,45,211,195,68,222,124,142,23,75,84,204,112,47,51,77,66,88,116,246,38,254,148,221,197,20,107,116,54,140,206,126,206,224,104,65,160,69,255,142,206,222,151,203,223,176,80,62,208,75,116,198,174,235,42,143,126,120,207,162,47,173,150,139,255,13,72,162,215,101,61,235,143,90,106,244,181,125,56,176,249,178,208,10,245,154,172,170,10,67,148,165,152,33,80,222,81,170,89,244,55,22,141,163,201,104,187,84,47,104,237,239,170,190,93,235,247,217,66,245,250,163,14,251,143,63,34,67,209,71,93,87,104,165,94,189,24,172,85,92,245,105,25,126,95,64,249,35,6,52,65,61,127,146,35,141,215,29,27,131,198,233,158,62,136,110,7,244,207,168,254,56,207,215,22,155,85,229,194,116,247,82,85,
-122,137,246,202,62,41,171,141,30,201,141,97,114,161,80,78,41,204,162,105,85,154,161,1,89,116,193,32,190,121,75,208,167,40,154,71,131,165,35,90,148,181,73,28,235,153,118,164,33,98,74,47,45,235,254,97,55,151,186,238,152,106,84,52,186,151,85,249,9,3,202,12,135,250,161,100,200,101,249,73,85,121,137,90,132,149,190,233,106,77,222,101,168,163,44,201,106,116,66,92,179,135,178,186,111,39,0,18,169,105,208,160,116,180,202,41,222,102,194,168,207,173,128,225,186,3,10,5,91,150,218,204,19,125,224,225,173,58,226,96,167,102,217,151,47,210,243,252,161,39,165,156,243,209,85,15,103,173,62,107,130,51,204,147,225,176,121,125,177,107,95,172,125,184,18,102,25,251,129,239,82,253,188,82,197,93,61,239,245,183,252,205,2,25,167,97,49,216,172,239,4,176,181,92,151,171,162,238,200,188,89,45,166,232,84,200,208,198,163,13,118,39,133,223,150,186,135,222,55,172,147,157,142,183,45,18,172,87,206,102,26,225,155,178,193,56,199,100,184,203,138,130,242,73,78,97,
-129,102,110,127,247,82,33,153,201,28,167,134,164,110,156,24,183,202,31,219,191,54,169,233,120,222,44,176,198,228,113,127,141,179,155,60,117,28,38,26,85,67,155,201,113,135,233,136,225,50,95,45,138,83,170,182,177,3,184,252,207,168,189,85,249,79,132,78,39,162,219,186,221,252,182,181,119,84,236,116,10,183,80,154,60,238,180,176,151,51,246,95,85,149,214,190,97,106,97,28,1,177,119,98,83,232,64,124,96,245,118,75,57,129,1,24,244,166,117,160,233,187,209,223,26,39,26,223,246,117,90,180,181,96,98,32,192,67,253,187,126,220,159,17,93,59,219,149,70,67,7,143,3,15,174,115,76,213,157,15,157,162,138,139,68,229,250,169,12,252,1,143,47,201,135,119,170,94,85,5,141,166,42,94,83,118,38,134,11,148,142,95,214,46,26,76,162,201,70,237,247,172,118,176,137,23,138,197,218,176,108,200,22,227,135,57,124,167,22,152,133,127,220,117,226,214,71,61,126,202,207,142,149,71,57,108,253,108,89,58,213,102,237,18,214,167,225,92,181,198,143,165,145,140,183,133,
-246,180,11,79,25,222,53,128,181,223,81,123,230,79,85,64,187,123,30,65,210,92,85,247,129,108,152,59,53,208,9,101,66,252,132,109,92,155,105,120,10,212,142,193,125,11,219,208,90,142,67,76,27,110,179,223,181,110,108,22,191,15,163,57,11,109,77,54,241,225,72,180,9,245,97,94,230,42,250,136,157,51,109,87,178,187,162,172,176,148,208,53,182,101,202,242,52,137,171,84,119,92,38,189,59,63,44,182,210,84,250,52,49,88,185,108,118,83,246,75,243,112,112,180,108,226,104,118,108,50,66,74,140,71,52,197,18,240,99,235,175,192,86,87,43,101,54,112,92,168,204,48,109,245,178,25,206,205,202,140,66,115,148,54,103,211,85,145,226,144,179,42,154,193,82,181,29,203,45,86,210,101,228,33,131,25,251,81,129,153,43,200,33,56,85,179,12,76,48,130,254,28,74,143,64,250,41,47,147,251,141,198,46,70,197,49,144,158,194,8,81,172,205,217,168,3,80,139,195,102,60,21,219,221,163,57,48,234,141,225,244,32,240,215,104,139,87,106,86,247,6,131,65,191,57,206,
-236,8,239,178,187,249,113,202,111,136,254,164,24,17,79,139,254,186,60,186,252,2,89,63,74,248,71,137,211,244,49,194,13,138,249,216,250,91,220,44,79,24,33,210,73,67,239,145,247,102,132,156,162,158,178,104,144,160,180,99,188,76,78,160,120,146,188,133,242,73,142,239,40,65,188,39,105,38,224,147,84,3,239,73,234,77,59,48,142,18,91,160,159,164,63,109,124,7,249,147,44,228,5,136,187,94,122,109,134,121,59,236,208,27,77,27,53,223,10,204,209,232,95,113,149,197,69,189,61,58,144,106,220,112,238,187,91,0,235,229,217,189,162,107,123,129,78,194,93,79,47,203,34,165,174,164,189,130,190,159,129,70,95,19,150,32,153,110,189,157,103,179,154,238,224,56,100,205,182,106,49,115,248,163,233,190,92,53,217,202,227,41,120,44,54,160,186,217,205,120,186,171,40,120,14,54,184,29,231,229,221,128,189,109,110,58,154,134,63,238,86,235,150,108,230,218,44,83,121,106,40,89,183,185,205,167,57,101,54,30,186,200,101,179,117,243,169,102,74,167,29,58,179,98,84,104,
-213,74,155,41,185,194,158,129,253,170,44,53,12,53,231,34,107,59,34,63,149,89,218,157,146,155,117,10,222,124,85,161,81,66,161,215,230,83,7,92,249,125,69,227,24,7,100,186,24,53,118,154,111,58,237,206,184,153,62,228,203,98,149,215,25,133,189,227,61,60,193,221,124,86,201,170,110,207,26,139,244,224,70,210,82,245,134,100,49,250,238,189,50,78,209,94,91,174,106,3,88,105,222,104,56,98,82,31,88,120,21,99,95,152,159,48,208,16,97,128,228,227,37,221,14,227,35,219,168,57,103,94,55,234,187,167,76,90,238,58,178,245,224,235,215,201,255,1,59,119,129,148,
+120,156,181,89,251,119,211,70,22,254,87,230,16,118,215,1,225,104,244,182,221,61,7,154,132,46,103,129,114,72,216,254,224,117,209,88,30,219,42,178,228,74,114,130,203,210,191,125,191,59,35,201,242,43,9,167,45,57,36,182,102,238,235,187,143,185,115,53,180,216,227,199,166,97,158,152,247,252,235,95,200,169,88,37,229,104,152,88,65,48,136,125,211,25,8,238,15,126,236,13,126,255,253,247,110,175,103,13,136,21,7,43,110,58,54,183,56,119,76,211,177,124,238,246,204,158,27,240,192,180,125,199,114,125,211,237,47,69,46,22,163,161,8,236,193,147,247,30,168,44,195,61,177,185,205,77,238,89,14,118,153,182,105,57,220,114,121,16,56,220,119,3,187,231,121,253,72,44,203,56,75,71,195,49,209,145,48,27,100,166,31,120,14,7,145,227,90,182,239,58,32,118,28,206,241,153,187,190,231,251,253,50,46,19,57,26,198,164,245,152,123,254,64,56,22,105,125,78,28,28,195,59,129,154,150,15,22,142,229,120,142,29,88,54,15,44,203,235,217,78,207,129,254,220,234,199,
+165,132,182,99,144,17,41,145,185,16,236,184,14,183,1,140,227,187,54,182,249,248,235,152,61,110,65,122,96,186,46,4,203,207,53,90,4,20,209,121,16,103,249,46,237,14,156,128,219,126,96,57,150,103,65,1,211,135,181,36,221,237,79,100,17,129,206,182,248,160,132,74,131,243,231,238,128,131,216,55,252,19,203,236,153,150,231,247,32,16,202,194,112,187,215,227,118,0,129,14,119,77,110,247,163,108,2,99,199,150,107,218,74,98,0,127,120,224,172,176,113,61,14,133,45,59,128,72,159,219,54,126,187,78,224,247,11,73,30,41,179,124,52,124,242,188,99,118,205,174,229,186,167,68,222,3,121,96,59,182,237,120,61,135,155,54,196,128,135,67,120,121,38,124,202,93,43,232,143,69,1,153,165,67,224,42,84,57,5,20,28,96,7,174,13,209,30,126,193,185,48,208,6,54,86,207,9,108,59,48,251,81,34,138,162,5,208,19,50,146,115,131,243,19,159,112,117,109,203,233,17,56,182,5,128,45,207,237,113,32,236,122,142,105,245,115,249,235,42,206,229,66,166,128,56,70,
+140,12,106,247,84,241,8,101,116,60,90,6,183,16,145,174,231,153,132,151,139,168,176,108,23,128,155,60,112,160,17,126,224,226,178,10,201,241,198,6,219,224,246,73,207,114,108,104,210,115,28,32,0,6,188,199,57,55,3,252,192,50,224,162,98,131,87,209,213,14,44,238,24,220,57,241,17,203,240,84,207,33,241,61,155,240,179,0,191,229,153,46,252,96,105,114,139,80,183,30,3,119,110,5,244,95,33,207,93,131,35,41,160,34,119,93,216,109,3,106,43,128,237,46,176,183,85,156,115,63,232,191,149,183,197,133,40,101,21,48,79,206,31,235,72,227,158,193,189,19,147,232,221,160,7,7,114,135,240,179,29,167,103,245,108,219,181,122,174,237,153,192,177,208,57,77,196,148,87,42,39,27,38,190,193,125,100,24,108,117,93,88,175,200,96,185,207,73,21,43,232,121,132,66,197,36,124,150,196,41,233,129,200,24,232,96,120,114,254,148,115,159,24,5,72,152,32,240,76,187,7,48,128,129,233,34,210,81,21,2,56,26,126,182,144,6,84,22,162,79,98,38,195,103,85,202,
+126,249,248,245,111,151,111,159,125,184,98,195,194,26,176,235,185,124,117,113,201,22,34,202,179,226,239,163,97,97,238,60,99,34,151,236,54,143,203,82,166,44,78,217,240,231,50,91,198,81,216,15,207,194,179,120,34,195,51,177,92,134,103,72,175,240,177,76,195,103,171,226,103,118,89,68,172,136,242,24,165,37,157,177,68,164,179,21,84,24,49,145,78,216,50,17,145,156,16,167,238,10,219,166,113,34,139,110,235,51,139,68,202,198,146,201,184,156,203,156,33,132,74,150,77,89,46,103,171,68,208,119,101,78,193,178,92,105,182,97,119,158,45,22,89,74,207,95,103,145,72,216,4,161,28,33,253,214,221,202,172,234,207,27,50,139,77,228,52,78,99,42,125,91,170,176,162,132,192,130,221,66,58,155,75,49,129,10,88,159,102,249,162,197,197,31,176,225,19,141,207,8,159,206,158,59,154,107,248,17,185,179,66,228,177,254,104,235,177,42,118,213,206,127,203,245,104,91,163,91,24,42,15,240,81,120,29,224,67,118,83,29,100,9,190,231,34,41,88,71,233,123,206,138,117,90,
+138,207,167,45,66,146,198,226,130,125,146,107,70,53,80,57,5,70,23,241,34,38,60,203,140,149,243,172,128,225,243,236,86,97,65,162,225,145,3,234,40,33,195,77,45,131,149,187,146,42,231,101,11,138,151,73,183,2,187,6,178,0,144,73,146,221,194,97,227,245,118,36,33,100,194,179,34,143,38,89,164,191,180,131,105,196,198,217,100,215,143,151,159,197,98,137,128,233,111,59,70,121,133,133,143,222,138,155,120,38,200,214,240,81,63,124,244,50,134,162,41,129,22,254,55,124,116,157,45,127,194,131,236,150,190,132,143,216,121,153,39,225,211,107,22,126,169,184,60,251,95,151,40,58,237,173,143,78,7,213,106,248,181,250,176,35,243,85,90,72,132,107,180,202,115,212,80,54,65,9,1,243,22,211,130,133,255,100,225,48,28,13,154,71,229,130,158,253,32,203,171,117,113,29,47,100,231,116,208,218,254,221,119,240,80,248,177,40,115,100,82,167,92,116,215,82,228,167,244,24,122,63,3,243,189,13,200,129,114,126,231,142,137,88,183,100,116,181,210,157,98,199,186,13,208,47,
+17,252,34,73,214,6,155,230,217,66,37,247,82,230,197,18,217,21,223,72,163,178,30,206,21,16,185,144,8,167,9,196,34,103,229,36,70,254,177,240,25,3,121,253,45,66,154,34,104,246,234,74,139,52,205,74,229,56,214,81,217,72,53,68,133,222,36,43,79,119,130,224,197,100,162,146,88,235,55,151,9,52,99,211,85,26,209,195,166,150,168,100,71,208,173,10,226,133,186,162,66,214,101,211,116,68,137,113,155,229,147,126,101,252,52,101,23,171,101,18,71,240,29,196,3,235,150,251,114,89,174,114,228,78,9,163,158,210,159,163,144,53,26,212,162,147,248,19,146,118,30,55,58,33,1,151,201,26,223,146,68,215,47,82,139,26,13,66,174,46,189,132,233,44,201,198,40,103,141,81,59,8,208,31,212,241,161,195,174,41,186,9,101,50,82,131,89,212,149,230,77,86,168,50,90,30,216,163,235,104,158,221,160,154,107,77,110,51,134,200,207,110,100,158,100,200,92,248,228,84,149,192,130,124,73,122,199,81,92,66,97,81,50,96,247,169,42,151,8,251,130,170,50,18,173,144,
+137,84,218,82,57,150,159,43,2,181,107,134,152,73,217,50,43,226,93,107,216,151,47,182,231,249,125,207,182,237,57,31,60,239,160,233,60,101,90,125,165,233,168,223,215,95,47,54,133,12,207,126,126,110,233,199,67,28,141,190,75,185,244,90,166,179,114,222,57,29,53,36,250,73,13,65,183,121,222,162,129,159,206,179,85,90,182,201,222,174,22,99,68,20,200,232,28,46,20,58,119,208,191,203,138,206,104,120,166,30,233,131,91,47,183,56,190,171,44,103,157,108,58,45,100,169,147,138,156,63,150,179,56,77,201,49,164,37,30,208,129,116,186,249,146,195,133,209,28,45,85,84,106,149,134,103,90,200,33,109,206,149,51,218,166,232,39,76,75,61,102,64,163,125,237,160,3,22,208,62,10,135,202,149,208,162,217,124,80,147,44,89,45,210,135,48,110,160,1,202,201,183,9,185,146,201,247,4,95,219,224,171,178,234,29,154,104,60,66,121,135,215,27,188,149,235,55,140,216,171,41,251,77,230,153,177,45,156,170,32,154,104,164,43,206,213,150,23,246,4,95,53,107,15,192,5,
+155,139,58,187,192,247,1,136,92,41,165,180,174,71,37,24,172,94,137,8,128,99,130,55,185,188,93,141,219,10,52,79,52,167,22,108,123,170,157,39,56,193,54,202,181,3,84,164,145,76,138,187,221,245,7,172,121,175,170,55,149,187,92,172,171,252,217,211,215,216,88,137,234,214,178,177,59,250,22,109,218,32,138,133,164,74,78,219,235,109,6,227,251,49,241,94,46,80,114,255,144,129,196,160,56,104,215,189,214,236,72,63,26,18,149,53,213,246,86,140,27,27,185,167,116,78,228,247,104,83,5,244,70,163,195,10,221,41,123,147,121,198,118,46,111,105,112,60,160,170,222,231,126,200,245,216,97,15,13,77,223,10,169,150,137,176,91,81,145,173,170,229,184,11,253,29,69,142,136,171,1,168,118,239,130,175,168,148,229,113,165,87,91,135,251,240,86,253,238,33,5,54,40,160,11,62,128,205,237,60,75,100,248,145,186,168,253,197,120,150,102,57,86,35,53,206,216,35,141,147,73,36,114,244,41,251,198,146,62,27,11,140,170,121,163,226,199,178,165,238,29,216,143,203,173,62,
+175,186,118,104,4,116,127,66,114,137,137,82,157,202,115,132,253,104,116,114,108,43,243,149,84,237,10,238,218,234,160,168,248,178,41,238,84,82,213,120,213,47,169,123,203,42,157,24,77,19,198,242,170,150,112,131,101,116,79,189,141,33,198,60,16,195,234,126,122,15,172,185,222,5,8,81,69,255,100,124,143,194,251,125,146,69,159,106,209,109,116,211,67,240,222,133,46,236,95,171,30,178,5,109,133,96,93,114,211,230,64,213,215,144,162,22,60,217,131,236,13,82,246,181,156,150,157,110,183,123,90,183,175,173,181,247,241,108,126,116,241,39,96,116,23,49,173,223,201,224,195,242,216,202,5,2,232,216,218,191,50,220,219,142,172,93,34,171,142,44,189,19,179,59,4,210,234,93,66,169,221,215,197,239,142,13,119,72,87,56,213,129,130,18,185,137,145,99,160,63,112,115,227,132,111,216,255,77,2,128,217,3,119,42,252,30,184,87,57,241,129,123,47,91,165,242,158,173,149,147,191,97,247,183,40,189,9,130,111,32,32,237,177,173,85,12,222,168,115,178,58,33,144,220,186,14,
+232,9,154,106,119,255,35,242,88,164,101,211,231,145,20,220,82,63,181,79,87,214,81,151,220,219,57,72,163,44,71,81,93,102,233,68,93,52,193,158,166,202,88,163,25,219,18,75,170,220,92,205,227,105,73,55,112,52,206,211,134,45,202,45,239,142,190,126,221,187,224,190,36,226,157,139,237,159,120,111,36,246,111,197,98,171,229,168,11,24,29,224,41,157,190,116,198,235,241,14,46,239,116,145,166,98,7,194,189,58,118,137,53,226,184,105,46,196,166,184,239,122,102,111,51,177,36,121,6,91,126,154,29,168,222,63,46,101,165,21,205,97,226,105,92,169,65,206,211,131,150,253,59,129,184,145,231,90,117,37,106,171,175,32,247,215,244,66,205,117,88,41,198,7,154,247,172,144,187,212,234,97,177,69,118,192,121,31,10,53,74,165,129,165,142,150,29,71,190,84,215,224,24,16,211,72,50,38,211,99,117,244,166,50,66,184,136,124,77,11,52,61,90,165,106,58,195,10,36,44,56,210,96,66,143,139,212,77,122,69,114,212,84,83,86,147,41,132,244,77,28,73,118,131,174,76,
+24,20,131,209,92,93,212,62,67,19,120,241,118,174,59,180,162,9,46,116,11,127,193,92,226,85,186,92,109,106,92,34,198,50,49,24,138,243,161,70,143,134,44,100,28,40,144,134,34,201,102,93,246,78,143,104,212,88,104,33,210,117,181,172,90,20,4,64,50,81,43,113,251,180,85,47,96,164,106,71,117,156,172,245,64,126,76,247,44,186,93,107,179,53,181,106,120,20,124,209,60,83,46,213,55,50,163,233,118,110,178,120,210,110,120,234,231,148,204,106,118,78,103,59,165,114,169,38,218,80,229,151,21,117,86,184,202,83,80,106,57,122,114,95,245,203,117,59,64,186,44,86,73,25,147,217,155,189,71,174,143,231,104,52,178,221,32,148,66,153,195,178,85,73,176,68,122,207,126,94,194,184,198,9,135,209,127,7,157,168,169,79,18,40,58,91,81,229,42,234,144,218,230,110,40,219,104,230,72,243,138,131,113,255,253,10,61,174,234,50,229,103,25,173,202,189,10,118,93,7,106,211,198,194,7,19,146,7,199,74,208,169,193,160,88,138,113,156,160,115,167,87,31,211,234,21,
+77,151,102,179,170,19,51,54,144,11,54,149,183,77,36,171,54,77,208,208,189,146,175,230,75,250,213,74,158,205,16,30,133,82,14,253,90,166,108,204,227,217,12,139,99,82,155,246,126,8,159,134,79,155,215,46,127,65,90,92,106,88,54,55,207,197,228,200,232,172,218,89,212,91,12,130,5,17,88,15,117,43,223,84,158,58,22,0,175,5,154,248,249,3,196,233,141,82,151,89,177,212,67,225,67,55,39,229,226,134,97,56,156,38,98,86,132,67,131,20,162,162,26,142,194,209,161,14,156,200,224,77,148,114,4,0,10,111,5,114,221,119,139,164,157,191,59,177,81,165,179,30,13,146,60,214,145,93,20,137,240,209,15,31,94,177,55,215,52,178,37,191,150,136,96,89,170,195,167,78,120,42,162,203,152,166,206,58,34,196,248,0,74,74,57,84,156,95,112,182,55,166,173,150,75,178,199,96,251,22,222,113,91,197,113,127,19,103,171,194,64,80,109,13,140,169,134,85,54,183,142,177,49,61,212,253,129,210,26,198,198,101,248,143,130,117,33,94,31,82,106,46,174,7,162,13,
+66,7,147,239,85,125,58,220,28,78,187,42,73,244,240,91,213,174,214,113,34,198,176,110,243,194,145,208,84,89,129,46,165,164,52,210,5,83,5,222,158,191,212,109,31,39,183,42,199,89,185,49,207,208,30,104,90,8,221,61,193,236,26,8,16,144,143,255,130,68,123,161,14,232,119,90,78,187,118,94,183,154,155,70,141,180,58,40,183,213,109,117,60,136,198,36,163,218,93,102,251,151,56,132,243,61,130,182,34,126,151,254,69,146,84,228,69,155,254,69,125,108,80,105,86,153,208,212,165,93,14,21,249,69,156,183,18,19,30,57,24,169,164,87,243,186,184,122,29,75,118,215,96,160,95,165,131,247,152,16,106,136,138,7,136,121,29,235,49,3,105,175,223,117,87,175,125,142,194,80,20,114,49,78,214,91,179,233,10,63,85,148,170,245,253,89,14,229,231,65,228,218,145,87,86,241,172,178,249,112,5,208,1,182,243,26,97,55,116,53,23,157,76,71,216,100,19,249,48,38,244,2,172,99,210,43,209,11,57,94,205,12,198,233,51,21,196,133,64,39,98,209,183,171,165,164,
+68,178,213,231,248,55,121,218,202,253,209,232,255,150,4,160,134,
 
Index: reference/Macro/Func.usc
===================================================================
--- reference/Macro/Func.usc	(revision 0)
+++ reference/Macro/Func.usc	(working copy)
@@ -0,0 +1,5 @@
+// One of the functions used in the "Using functions" macro.
+// As you can see, it can be defined in completely separate file.
+fn FuncB(arg) {
+	return arg + "B";
+}
Index: reference/Macro/Macro.cpp
===================================================================
--- reference/Macro/Macro.cpp	(revision 0)
+++ reference/Macro/Macro.cpp	(working copy)
@@ -0,0 +1,11 @@
+#include <Core/Core.h>
+
+using namespace Upp;
+
+CONSOLE_APP_MAIN
+{
+	Cout() <<
+	"This application does nothing. It's only purpose is to demonstrate\n"
+	"the capabilities of the macro language embeded in TheIDE.\n"
+	"Try pressing Ctrl+Alt+S in TheIDE...\n";
+}
Index: reference/Macro/Macro.upp
===================================================================
--- reference/Macro/Macro.upp	(revision 0)
+++ reference/Macro/Macro.upp	(working copy)
@@ -0,0 +1,14 @@
+description "Examples of using macrosin TheIDE\377";
+
+uses
+	Core;
+
+file
+	Macro.cpp,
+	Macro.usc,
+	Func.usc,
+	example.txt;
+
+mainconfig
+	"" = "SSE2";
+
Index: reference/Macro/Macro.usc
===================================================================
--- reference/Macro/Macro.usc	(revision 0)
+++ reference/Macro/Macro.usc	(working copy)
@@ -0,0 +1,243 @@
+/* Welcome to the macro examples file! */
+
+// The first function only serves as an introduction.
+// It is bound to a keyboard shortcut, to make it easier,
+// the rest of the macros can be invoked via Macro item in the menu.
+macro "Start here" Ctrl+Alt+S {
+	// Open this file
+	EditFile("Macro", "Macro.usc");
+	// Set cursor to the start
+	SetCursor(0);
+	// Now you can continue reading and exploring the rest of the examples...
+}
+
+// Macros can call functions defined via "fn" keyword anywhere (even other files, see Func.usc).
+// This is usefull e.g. when you want to share some funcionality between several macros.
+macro "Using functions" {
+	// This function opens the example file, moves cursor at the end and appends some strings
+	// generated by functions.
+	EditFile("Macro","example.txt");
+	MoveTextEnd();
+	Insert("\n " + FuncA("C") + FuncB("D") + " \n");
+}
+
+fn FuncA(arg) {
+	return FuncB(arg + "A");
+}
+
+/* Chapter 1: Methods controlling the editor */
+
+macro "1 Editor":"1.1 File name" {
+	ClearConsole();
+	Echo("Currently edited file is '" + FileName() + "'");
+}
+
+macro "1 Editor":"1.2 Opening file" {
+	// EditFile can be used with package and file names, as seen here, or it can ba called 
+	// with single parameter containing full path to a file.
+	EditFile("Macro","example.txt");
+}
+
+macro "1 Editor":"1.3 Closing file" {
+	// Save the file first, to be sure
+	SaveCurrentFile();
+	// Now we can close it
+	CloseFile();
+}
+
+/* Chapter 2: Methods for automatic text editing */
+
+macro "2 Editing":"2.1 Select all" {
+	// Again, make sure we use the testing file
+	EditFile("Macro","example.txt");
+	// This moves the cursor at the begining of file (the same can be achieved with SetCursor(0);)
+	MoveTextBegin();
+	// Now we move the cursor at the end of file. The parameter says that we want to select all
+	// the text in between the previous and new position.
+	MoveTextEnd(1);
+}
+
+macro "2 Editing":"2.2 Cursor position" {
+	EditFile("Macro","example.txt");
+	// We can get curent cursor position (in characters from start)...
+	pos = GetCursor();
+	// ... which can be used to calculate line number ...
+	line = GetLine(pos);
+	// ... and also position within the line
+	col = GetColumn(pos);
+	// Now we move at the end of file and insert a string summarizing what we found out
+	MoveTextEnd();
+	Insert("Line:"+to_string(line)+", Col:"+to_string(col)+", Pos"+to_string(pos)+"\n");
+	// And finally, we put the cursor back where it originally was, just for users convenience
+	SetCursor(pos);
+}
+
+macro "2 Editing":"2.3 File info" {
+	EditFile("Macro","example.txt");
+	pos = GetCursor();
+	// Another set of informations we can get from the editor methods is how many text is there
+	length = GetLength();
+	// And also how many lines
+	lines = GetLineCount();
+	// Again, we append the info at the end and return to original position
+	MoveTextEnd();
+	Insert("Length:"+to_string(length)+", Lines:"+to_string(lines)+"\n");
+	SetCursor(pos);
+}
+
+macro "2 Editing":"2.4 Complex example" {
+	/* This function analyzes a document (example.txt) and prints a histogram of character 
+	 * usage at the bottom. It could probably be implemented better, faster or both,
+	 * but it is intentionaly left as is, to demonstrate that even simple macro language 
+	 * can be used to achieve quite complex tasks.
+	 */
+	// how many lines should we use to print the histogram
+	height = 20;
+	// set active file to the example text
+	EditFile("Macro", "example.txt");
+	// remember cursor position, so we can return it at the end
+	pos = GetCursor();
+	// this is a little trick to make sure Esc knows that hist is a map, not an array
+	hist[""] = 0;
+	// iterate over entire document and count letters
+	length = GetLength();
+	for(i=0; i<length; i++){
+		x = ToLower(Get(i));
+		// change the key for non-printable
+		if(x[0]<=32)
+			x="";
+		// initialize if it is first encounter, otherwise just increse value
+		if(is_void(hist[x]))
+			hist[x] = 1;
+		else
+			hist[x]++;
+	}
+	// delete non-printable
+	hist[""] = void;
+	// make a line of '=' with same length as we have columns
+	sep = "+" + len(hist) * "-" + "+";
+	// insert top line
+	MoveTextEnd();
+	Insert("\n"+sep+"\n");
+	MoveTextEnd();
+	// compute maximum for scaling
+	max = height;
+	for(i in hist)
+		if(hist[i]>max) 
+			max = hist[i];
+	// get sort order
+	k = sort(keys(hist));
+	// plot the histogram, left to right, top to bottom
+	for(i=height; i>0; --i){
+		Insert("|");
+		MoveRight();
+		for(j in k){
+			if(hist[k[j]]/max*height >= i)
+				Insert("#");
+			else
+				Insert(" ");
+			MoveRight();
+		}
+		// print y-axis legend
+		Insert("|"+to_string(int(i*max/height))+"\n");
+		MoveTextEnd();
+	}
+	//insert bottom line
+	Insert(sep+"\n");
+	MoveTextEnd();
+	// print x-axis legend
+	Insert(" ");
+	MoveRight();
+	for(j in k) {
+		Insert(k[j]);
+		MoveRight();
+	}
+	Insert("\n");
+	// return cursor to original position
+	SetCursor(pos);
+}
+
+macro "3 User interaction":"3.1 Using console" {
+	// It is a good idea to clean the console before printing something in it, because text
+	// left from previous actions might confuse the user
+	ClearConsole();
+	// You already seen Echo being used to inform user in some of the examples above...
+	// Important point is, that the console will be shown if it is hidden as soon
+	// as you Echo() something.
+	Echo("Hello wolrd!", "This is just a test...");
+}
+
+macro "3 User interaction":"3.2 Input" {
+	ClearConsole();
+	// The Input() function can be called to get some values from user. It returns array 
+	// of strings containing the values entered into the dialog.
+	a = Input("Some number","Some string");
+	// If you want to use it to get some number, you need to convert it from string and check
+	// that it was really a number
+	n = to_number(a[0]);
+	if (is_void(n)){
+		Echo("ERROR: '" + a[0] + "' is not a number.");
+		return;
+	}
+	// Now you can safely use the obtained data
+	Echo("The entered number was "+to_string(n),
+	     "The string was '" + a[1] + "'");
+}
+
+/* Chapter 4: Methods that give you informations about the development environment */
+
+macro "4 Informative":"4.1 Package info" {
+	ClearConsole();
+	// There are 4 functions that can be used to find out what packages and files current 
+	// project consists of. 
+	Echo("ActivePackage()=\"" + ActivePackage() + "\"",
+	     "MainPackage()=\"" + MainPackage() + "\"",
+	     "PackageDir()=\"" + PackageDir() + "\"",
+	     "PackageDir(\"plugin/z\")=\"" + PackageDir("plugin/z") + "\"",
+	     "PackageFiles()=" + to_string(PackageFiles()),
+	     "PackageFiles(\"plugin/z\")=" + to_string(PackageFiles("plugin/z")));
+	// Additionaly, the two of them which accept package name as a parameter can be also used
+	// to query packages not used in current project
+	Echo("PackageDir(\"plugin/gif\")=\"" + PackageDir("plugin/gif") + "\"",
+	     "PackageFiles(\"plugin/gif\")=" + to_string(PackageFiles("plugin/gif")));
+}
+
+macro "4 Informative":"4.2 Build config info" {
+	ClearConsole();
+	// Another four methods inform about the build environment settings
+	Echo("Assembly()=\"" + Assembly() + "\"",
+	     "Flags()=" + to_string(Flags()),
+	     "BuildMethod()=\"" + BuildMethod() + "\"",
+	     "BuildMode()=\"" + to_string(BuildMode()) + "\"");
+	// You might have noticed that BuildMode() returns number, but it can be easily converted:
+	modes = [ "Debug", "Optional", "Speed", "Size" ];
+	Echo("Build mode is set to '" + modes[BuildMode()] + "'.");
+}
+
+macro "5 Executing/Building":"5.1 Execute" {
+	ClearConsole();
+	// An external command can be executed with Execute, the output will be printed in console
+	Execute("echo Hello world");
+}
+
+macro "5 Executing/Building":"5.2 Launch" {
+	// this should work on Win and do nothing on Linux
+	Launch("cmd.exe");
+	// this should do nothing on Win and work on Linux
+	Launch("/usr/bin/xterm");
+}
+
+macro "5 Executing/Building":"5.3 Build" {
+	ClearConsole();
+	// Build can be used to automatically build current project.
+	Build();
+}
+
+macro "5 Executing/Building":"5.4 BuildProject" {
+	ClearConsole();
+	// Get .upp file location for another package
+	upp = PackageDir("umk") + "/umk.upp";
+	// Build that package with SSE2 build flag
+	BuildProject(upp, "SSE2");
+}
+
Index: reference/Macro/example.txt
===================================================================
--- reference/Macro/example.txt	(revision 0)
+++ reference/Macro/example.txt	(working copy)
@@ -0,0 +1,13 @@
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida lacus
+vel nunc interdum eu dignissim dolor dictum. Pellentesque habitant morbi
+tristique senectus et netus et malesuada fames ac turpis egestas. Duis luctus
+cursus leo, et viverra erat dignissim at. Donec eleifend pretium quam, at commodo
+dolor vestibulum at. Cras malesuada, nibh ornare rutrum ultrices, libero ipsum
+convallis mi, a commodo erat lacus suscipit nisi. Aenean urna nulla, cursus sed
+sagittis ut, scelerisque eget neque. Integer sodales sollicitudin diam ut sodales.
+Nullam pulvinar ultrices orci in ullamcorper. Curabitur convallis justo nisi.
+Curabitur commodo nunc vel mi posuere eget pretium ante eleifend. Vivamus nec 
+ipsum justo, congue consectetur turpis. Duis et suscipit enim. Phasellus elementum 
+pulvinar orci, id rhoncus risus imperdiet in. Donec adipiscing, lacus sed congue
+ornare, orci ligula rutrum nunc, non cursus eros lacus lacinia dolor. Nullam sed
+nulla in mauris hendrerit hendrerit et ut libero. Fusce quis ante amet.
Index: reference/Macro/init
===================================================================
--- reference/Macro/init	(revision 0)
+++ reference/Macro/init	(working copy)
@@ -0,0 +1,4 @@
+#ifndef _Macro_icpp_init_stub
+#define _Macro_icpp_init_stub
+#include "Core/init"
+#endif
