summaryrefslogtreecommitdiff
path: root/modules/string/tests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/string/tests')
-rwxr-xr-xmodules/string/tests/benchmarks/ascii_code.txt201
-rwxr-xr-xmodules/string/tests/benchmarks/ascii_text.txt200
-rwxr-xr-xmodules/string/tests/benchmarks/bench_ascii_1.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_ascii_2.tst42
-rwxr-xr-xmodules/string/tests/benchmarks/bench_ascii_3.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_ascii_4.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_blanks.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_code2str.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_convstr.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_emptrystr.tst15
-rwxr-xr-xmodules/string/tests/benchmarks/bench_grep.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_justify_1.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_justify_2.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_length.tst56
-rwxr-xr-xmodules/string/tests/benchmarks/bench_part.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_str2code.tst18
-rwxr-xr-xmodules/string/tests/benchmarks/bench_strcat.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_strindex.tst18
-rwxr-xr-xmodules/string/tests/benchmarks/bench_string.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_stripblanks_1.tst15
-rwxr-xr-xmodules/string/tests/benchmarks/bench_stripblanks_2.tst23
-rwxr-xr-xmodules/string/tests/benchmarks/bench_stripblanks_3.tst23
-rwxr-xr-xmodules/string/tests/benchmarks/bench_stripblanks_4.tst16
-rwxr-xr-xmodules/string/tests/benchmarks/bench_strrev.tst16
-rwxr-xr-xmodules/string/tests/benchmarks/bench_strsplit.tst18
-rwxr-xr-xmodules/string/tests/benchmarks/bench_strsubst.tst17
-rwxr-xr-xmodules/string/tests/benchmarks/bench_tokens.tst15
-rwxr-xr-xmodules/string/tests/memory_leak/addstring.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/ascii.tst26
-rwxr-xr-xmodules/string/tests/memory_leak/code2str.tst26
-rwxr-xr-xmodules/string/tests/memory_leak/convstr.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/emptystr.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/grep.tst34
-rwxr-xr-xmodules/string/tests/memory_leak/grep_new.tst34
-rwxr-xr-xmodules/string/tests/memory_leak/isascii.tst30
-rwxr-xr-xmodules/string/tests/memory_leak/length.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/part.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/str2code.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/strcat.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/strcspn.tst33
-rwxr-xr-xmodules/string/tests/memory_leak/strindex.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/stripblanks.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/strncpy.tst33
-rwxr-xr-xmodules/string/tests/memory_leak/strrchr.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/strsplit.tst33
-rwxr-xr-xmodules/string/tests/memory_leak/strsubst.tst29
-rwxr-xr-xmodules/string/tests/memory_leak/tokens.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10124.dia.ref46
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10124.tst53
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10366.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10641.dia.ref26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10641.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10816.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_10816.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11055.dia.ref32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11055.tst37
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11328.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11328.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11385.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_11385.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12082.dia.ref33
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12082.tst41
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12291.dia.ref29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12291.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12335.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12335.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12639.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_12639.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1305.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1305.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_13524.dia.ref54
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_13524.tst54
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1802.dia.ref17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1802.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1815.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1815.tst19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1914.dia.ref18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_1914.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2322.dia.ref21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2322.tst24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2328.dia.ref31
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2328.tst37
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2410.dia.ref18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2410.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2414.dia.ref21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2414.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2637.dia.ref17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2637.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2656.dia.ref15
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2656.tst18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2663.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2663.tst24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2664.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2664.tst19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2665.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2665.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2674.dia.ref17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2674.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2675.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2675.tst19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2677.dia.ref13
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2677.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2699.dia.ref17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2699.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2721.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2721.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2788.dia.ref15
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2788.tst18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2802.dia.ref25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2802.tst33
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2976.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2976.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2980.dia.ref21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_2980.tst27
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3006.dia.ref27
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3006.tst32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3008.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3008.tst26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3039.dia.ref18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3039.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3102.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3102.tst28
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3228.dia.ref35
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3228.tst42
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3241.dia.ref42
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3241.tst51
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3288.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3288.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3410.dia.ref21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3410.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3433.dia.ref47
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3433.tst57
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3462.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3462.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3495.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3495.tst19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3500.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3500.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3511.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3511.tst24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3512.dia.ref87
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3512.tst101
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3543.dia.ref24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3543.tst31
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3598.dia.ref29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3598.tst31
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3747.dia.ref32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3747.tst44
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3810.dia.ref69
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3810.tst76
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3839.dia.ref26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3839.tst34
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3886.dia.ref18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3886.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3891.dia.ref27
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3891.tst32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3912.dia.ref28
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_3912.tst32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4141.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4141.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4277.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4277.tst24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4321.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4321.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4359.dia.ref26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4359.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4401.dia.ref40
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4401.tst41
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4466.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4466.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4557.dia.ref16
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4557.tst19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4583.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4583.tst24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4656.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4656.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4727.dia.ref31
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4727.tst37
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4728.dia.ref40
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4728.tst50
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4752.dia.ref17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4752.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4761.dia.ref18
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4761.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4768.dia.ref56
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4768.tst32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4807.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_4807.tst21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5071.dia.ref30
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5071.tst32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5072.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5072.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5073.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5073.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5291.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5291.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5373.dia.ref23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5373.tst26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5375.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5375.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_55.dia.ref20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_55.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5659.dia.ref34
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_5659.tst35
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_6666.dia.ref24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_6666.tst25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7057.dia.ref23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7057.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7163.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7163.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7205.dia.ref21
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7205.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7236.dia.ref24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7236.tst27
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7249.dia.ref86
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7249.tst91
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7278.dia.ref110
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7278.tst111
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7282.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7282.tst28
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7312.dia.ref15
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7312.tst17
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7733.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7733.tst22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7751.dia.ref25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7751.tst29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7879.dia.ref46
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7879.tst30
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7951.dia.ref45
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_7951.tst54
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8206.dia.ref32
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8206.tst36
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8234.dia.ref19
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8234.tst20
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8459.dia.ref24
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8459.tst27
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8481.dia.ref22
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8481.tst23
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8528.dia.ref25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8528.tst26
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8732.dia.ref46
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_8732.tst45
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9838.dia.ref28
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9838.tst30
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9858.dia.ref25
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9858.tst28
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9899.dia.ref29
-rwxr-xr-xmodules/string/tests/nonreg_tests/bug_9899.tst30
-rwxr-xr-xmodules/string/tests/unit_tests/ascii.dia.ref231
-rwxr-xr-xmodules/string/tests/unit_tests/ascii.tst251
-rwxr-xr-xmodules/string/tests/unit_tests/asciimat.dia.ref30
-rwxr-xr-xmodules/string/tests/unit_tests/asciimat.tst39
-rwxr-xr-xmodules/string/tests/unit_tests/base.dia.ref40
-rwxr-xr-xmodules/string/tests/unit_tests/base.tst54
-rwxr-xr-xmodules/string/tests/unit_tests/blanks.dia.ref38
-rwxr-xr-xmodules/string/tests/unit_tests/blanks.tst48
-rwxr-xr-xmodules/string/tests/unit_tests/code2str.dia.ref18
-rwxr-xr-xmodules/string/tests/unit_tests/code2str.tst20
-rwxr-xr-xmodules/string/tests/unit_tests/convstr.dia.ref65
-rwxr-xr-xmodules/string/tests/unit_tests/convstr.tst70
-rwxr-xr-xmodules/string/tests/unit_tests/emptystr.dia.ref57
-rwxr-xr-xmodules/string/tests/unit_tests/emptystr.tst59
-rwxr-xr-xmodules/string/tests/unit_tests/evstr.dia.ref46
-rwxr-xr-xmodules/string/tests/unit_tests/evstr.tst46
-rwxr-xr-xmodules/string/tests/unit_tests/grep.dia.ref670
-rwxr-xr-xmodules/string/tests/unit_tests/grep.tst707
-rwxr-xr-xmodules/string/tests/unit_tests/grep_pcre76.dia.ref17
-rwxr-xr-xmodules/string/tests/unit_tests/grep_pcre76.tst19
-rwxr-xr-xmodules/string/tests/unit_tests/isalphanum.dia.ref103
-rwxr-xr-xmodules/string/tests/unit_tests/isalphanum.tst108
-rwxr-xr-xmodules/string/tests/unit_tests/isascii.dia.ref37
-rwxr-xr-xmodules/string/tests/unit_tests/isascii.tst42
-rwxr-xr-xmodules/string/tests/unit_tests/isdigit.dia.ref105
-rwxr-xr-xmodules/string/tests/unit_tests/isdigit.tst111
-rwxr-xr-xmodules/string/tests/unit_tests/isletter.dia.ref106
-rwxr-xr-xmodules/string/tests/unit_tests/isletter.tst112
-rwxr-xr-xmodules/string/tests/unit_tests/isnum.dia.ref32
-rwxr-xr-xmodules/string/tests/unit_tests/isnum.tst42
-rwxr-xr-xmodules/string/tests/unit_tests/length.dia.ref82
-rwxr-xr-xmodules/string/tests/unit_tests/length.tst111
-rwxr-xr-xmodules/string/tests/unit_tests/part.dia.ref62
-rwxr-xr-xmodules/string/tests/unit_tests/part.tst74
-rwxr-xr-xmodules/string/tests/unit_tests/part_UTF_nw.dia.ref13
-rwxr-xr-xmodules/string/tests/unit_tests/part_UTF_nw.tst14
-rwxr-xr-xmodules/string/tests/unit_tests/part_UTF_nwni.dia.ref14
-rwxr-xr-xmodules/string/tests/unit_tests/part_UTF_nwni.tst16
-rwxr-xr-xmodules/string/tests/unit_tests/regexp.dia.ref610
-rwxr-xr-xmodules/string/tests/unit_tests/regexp.tst646
-rwxr-xr-xmodules/string/tests/unit_tests/regexp_pcre76.dia.ref20
-rwxr-xr-xmodules/string/tests/unit_tests/regexp_pcre76.tst22
-rwxr-xr-xmodules/string/tests/unit_tests/str2code.dia.ref17
-rwxr-xr-xmodules/string/tests/unit_tests/str2code.tst19
-rwxr-xr-xmodules/string/tests/unit_tests/strcat.dia.ref50
-rwxr-xr-xmodules/string/tests/unit_tests/strcat.tst52
-rwxr-xr-xmodules/string/tests/unit_tests/strchr.dia.ref22
-rwxr-xr-xmodules/string/tests/unit_tests/strchr.tst25
-rwxr-xr-xmodules/string/tests/unit_tests/strcmp.dia.ref32
-rwxr-xr-xmodules/string/tests/unit_tests/strcmp.tst35
-rwxr-xr-xmodules/string/tests/unit_tests/strcmpi.dia.ref20
-rwxr-xr-xmodules/string/tests/unit_tests/strcmpi.tst23
-rwxr-xr-xmodules/string/tests/unit_tests/strcspn.dia.ref26
-rwxr-xr-xmodules/string/tests/unit_tests/strcspn.tst28
-rwxr-xr-xmodules/string/tests/unit_tests/strindex.dia.ref651
-rwxr-xr-xmodules/string/tests/unit_tests/strindex.tst682
-rwxr-xr-xmodules/string/tests/unit_tests/strindex_pcre76.dia.ref21
-rwxr-xr-xmodules/string/tests/unit_tests/strindex_pcre76.tst23
-rwxr-xr-xmodules/string/tests/unit_tests/string.dia.ref68
-rwxr-xr-xmodules/string/tests/unit_tests/string.tst74
-rwxr-xr-xmodules/string/tests/unit_tests/stripblanks.dia.ref74
-rwxr-xr-xmodules/string/tests/unit_tests/stripblanks.tst80
-rwxr-xr-xmodules/string/tests/unit_tests/strncpy.dia.ref61
-rwxr-xr-xmodules/string/tests/unit_tests/strncpy.tst64
-rwxr-xr-xmodules/string/tests/unit_tests/strrchr.dia.ref22
-rwxr-xr-xmodules/string/tests/unit_tests/strrchr.tst25
-rwxr-xr-xmodules/string/tests/unit_tests/strrev.dia.ref61
-rwxr-xr-xmodules/string/tests/unit_tests/strrev.tst85
-rwxr-xr-xmodules/string/tests/unit_tests/strsplit.dia.ref186
-rwxr-xr-xmodules/string/tests/unit_tests/strsplit.tst188
-rwxr-xr-xmodules/string/tests/unit_tests/strspn.dia.ref28
-rwxr-xr-xmodules/string/tests/unit_tests/strspn.tst30
-rwxr-xr-xmodules/string/tests/unit_tests/strstr.dia.ref33
-rwxr-xr-xmodules/string/tests/unit_tests/strstr.tst35
-rwxr-xr-xmodules/string/tests/unit_tests/strsubst.dia.ref392
-rwxr-xr-xmodules/string/tests/unit_tests/strsubst.tst428
-rwxr-xr-xmodules/string/tests/unit_tests/strtod.dia.ref252
-rwxr-xr-xmodules/string/tests/unit_tests/strtod.tst258
-rwxr-xr-xmodules/string/tests/unit_tests/strtok.dia.ref25
-rwxr-xr-xmodules/string/tests/unit_tests/strtok.tst27
-rwxr-xr-xmodules/string/tests/unit_tests/text.txt417
-rwxr-xr-xmodules/string/tests/unit_tests/tokens.dia.ref65
-rwxr-xr-xmodules/string/tests/unit_tests/tokens.tst67
331 files changed, 17015 insertions, 0 deletions
diff --git a/modules/string/tests/benchmarks/ascii_code.txt b/modules/string/tests/benchmarks/ascii_code.txt
new file mode 100755
index 000000000..fcf225398
--- /dev/null
+++ b/modules/string/tests/benchmarks/ascii_code.txt
@@ -0,0 +1,201 @@
+ref = [];
+ref = [ref 125 113 92 119 73 40 58 46 41 62 62 53 92 48 101 103 94 84 44 35 38 73 82 84 39 60 86 75 63 48 71 112 57 39 36 90 110 115 47 81 78 40 114 35 99 47 109 54 37 117 112 124 102 59 121 48 35 32 37 83 56 121 35 54 119 120 61 78 95 55 99 101 118 80 37 51 103 45 108 53 46 75 64 125 123 105 122 64 80 110 55 57 118 78 74 37 42 104 77 111 102 52 104 57 38 41 69 125 114 36 88 33 123 126 119 121 116 41 45 65 122 45 79 120 64 55 73 59 39 68 78 64 104 97 70 115 102 90 103 40 50 123 104 58 86 91 93 125 65 102 52 41 58 40 46 117 80 103 125 46 37 58 104 42 78 105 83 64 66 60 99 52 98 36 40 78 96 66 125 41 46 88 83 48 107 98 55 110 35 35 35 124 124 87 86 119 125 38 39 42 ];
+ref = [ref 116 32 50 34 93 71 51 65 39 105 79 58 104 70 84 38 99 61 115 74 126 57 102 58 70 82 98 66 58 62 45 53 89 126 52 124 56 100 37 93 101 53 48 96 109 118 81 42 112 94 107 91 46 56 101 88 66 97 123 52 62 44 125 51 66 84 114 90 46 99 88 47 110 65 96 60 120 46 46 57 124 64 84 32 45 60 108 78 55 95 123 83 67 34 125 45 88 56 66 102 117 69 43 120 64 37 57 106 72 73 89 106 55 117 122 110 38 102 96 64 96 93 95 49 83 75 54 107 116 50 75 33 65 57 33 91 96 96 97 89 53 84 61 101 69 61 42 69 49 121 50 57 79 58 61 126 112 62 61 113 60 92 104 76 46 38 42 57 102 112 95 75 108 94 54 55 120 34 96 106 112 37 81 115 90 81 38 60 76 64 82 55 49 109 86 65 120 94 59 33 ];
+ref = [ref 42 62 70 35 55 61 118 115 40 80 110 38 90 38 110 47 42 108 35 56 76 121 76 90 110 42 79 38 107 74 114 63 97 90 95 121 60 59 118 78 115 62 58 111 95 100 121 46 34 38 32 69 93 35 124 104 81 60 96 60 69 112 51 58 70 94 119 41 99 81 45 56 104 85 45 59 54 97 83 105 86 53 89 33 122 57 68 68 81 59 103 51 59 65 36 37 65 42 124 50 62 99 79 61 84 38 109 85 80 90 60 77 126 78 42 107 37 48 57 99 73 114 68 124 32 94 42 105 40 109 100 94 91 51 74 70 110 108 93 91 74 74 81 124 99 34 97 58 68 112 67 68 71 119 93 57 58 62 68 72 60 113 71 97 37 81 110 59 91 39 102 70 38 90 101 114 59 84 65 88 60 76 42 61 111 97 113 41 35 82 99 40 89 104 126 109 94 37 100 35 ];
+ref = [ref 98 121 70 86 104 74 114 63 89 61 58 118 117 61 47 104 111 83 64 90 83 71 38 72 110 64 125 75 83 79 79 44 122 71 111 72 119 82 61 91 116 113 114 62 111 96 108 69 54 98 87 61 58 74 43 54 58 92 66 39 104 74 109 78 76 121 75 82 94 56 79 108 116 59 47 62 99 64 45 88 65 79 67 41 36 67 75 71 85 83 40 64 116 97 124 51 105 79 68 70 119 58 83 45 121 66 33 102 91 106 49 90 56 97 62 112 101 53 45 126 75 74 93 106 39 97 47 66 95 49 93 125 86 53 55 104 53 120 89 69 52 37 115 47 115 44 60 107 62 120 123 83 51 95 38 84 108 106 122 65 51 61 83 44 118 57 47 33 111 59 100 125 116 72 105 102 79 91 64 68 87 120 114 88 124 113 40 98 39 83 109 76 68 117 91 120 51 32 51 41 ];
+ref = [ref 39 118 62 108 80 85 117 69 45 50 75 33 35 72 56 85 94 45 115 73 66 108 116 117 118 120 32 32 90 41 39 64 87 37 126 110 55 91 43 58 74 60 115 49 79 93 72 87 111 64 97 32 119 125 91 126 91 103 46 89 41 65 67 104 94 104 90 70 35 107 100 88 58 95 48 85 120 97 100 113 55 112 51 81 125 120 113 126 42 65 125 107 108 74 87 62 74 97 110 68 33 101 80 65 114 38 116 75 32 74 37 123 46 86 111 69 45 49 95 120 115 106 90 65 67 47 82 70 55 65 114 123 90 82 43 77 104 90 33 51 109 39 36 95 67 91 92 105 103 95 93 43 105 74 57 103 102 57 119 38 108 60 47 112 103 86 111 107 54 35 125 125 63 88 72 90 58 33 51 80 79 109 32 100 123 83 111 116 110 106 59 68 91 81 51 46 83 107 91 65 ];
+ref = [ref 83 77 75 76 35 118 54 92 58 34 50 49 117 52 38 119 41 60 98 117 108 45 123 99 59 120 58 94 44 123 99 82 88 62 97 33 61 37 48 117 64 104 112 89 41 81 89 52 42 79 42 97 49 80 81 120 112 35 75 104 43 65 61 92 78 76 97 90 125 124 103 88 41 57 40 76 82 40 85 56 50 97 111 87 76 35 53 98 44 91 66 110 32 66 120 47 81 95 116 68 92 53 95 87 111 102 92 71 112 97 87 111 64 98 75 97 96 70 121 90 54 103 63 48 62 88 110 86 126 63 101 115 35 76 120 81 48 81 101 50 101 36 32 75 42 115 110 64 70 45 40 69 109 96 57 81 100 112 36 110 75 63 87 114 66 114 46 121 89 126 112 64 35 75 90 124 33 91 51 55 107 63 125 37 93 38 114 36 103 85 92 56 117 61 105 125 87 38 97 112 ];
+ref = [ref 93 67 126 123 100 49 110 117 126 92 88 114 123 37 61 119 119 54 92 117 95 56 64 65 51 36 109 110 88 66 121 51 32 65 35 115 52 124 97 99 95 70 101 60 69 55 119 113 119 88 45 64 110 59 86 108 93 58 107 119 76 56 72 126 52 88 94 34 74 63 60 110 86 80 56 74 108 53 104 50 57 42 50 56 48 98 115 83 96 79 121 42 81 52 36 46 65 55 51 52 69 118 34 96 47 45 83 108 119 101 50 112 95 39 48 77 57 67 87 117 97 63 68 116 81 122 51 39 54 42 56 34 61 96 46 64 116 66 103 71 108 88 68 58 56 107 62 61 79 52 125 113 34 111 39 42 89 102 123 33 90 118 45 50 68 51 62 60 123 92 81 75 32 109 38 79 59 88 47 116 104 106 104 78 43 67 114 89 73 66 49 125 126 56 34 35 48 97 71 104 ];
+ref = [ref 54 44 108 35 59 78 76 124 84 106 115 109 55 102 113 56 108 77 110 52 38 37 97 91 63 95 39 74 72 42 50 47 102 54 77 88 53 123 78 92 44 123 115 91 117 122 91 105 91 47 91 103 119 40 60 88 63 57 47 112 94 49 74 44 69 113 34 81 66 112 43 94 114 46 55 73 112 59 74 57 85 60 56 67 93 62 37 110 106 88 85 107 43 68 114 98 57 125 122 70 49 68 48 71 40 74 71 74 74 39 89 78 87 78 101 106 126 74 48 64 65 34 63 79 89 104 65 32 41 123 66 70 95 86 35 59 48 64 97 106 75 68 92 70 90 116 45 32 85 49 59 37 75 67 87 121 82 115 47 45 70 37 52 65 102 90 125 80 59 95 39 123 100 101 114 61 77 91 102 116 91 43 63 121 88 37 73 36 117 74 76 85 101 104 104 33 53 53 71 112 ];
+ref = [ref 33 51 115 110 125 108 88 101 38 46 67 45 102 83 105 61 102 72 121 62 88 53 98 93 85 67 89 117 93 54 86 83 42 108 89 42 61 89 59 95 87 40 113 55 85 123 84 72 55 102 89 89 73 80 59 109 63 58 37 68 94 123 59 110 46 63 100 73 76 78 76 103 38 46 106 103 61 80 47 52 107 54 119 60 100 117 62 104 49 82 33 68 57 124 50 111 70 126 90 119 36 95 101 95 112 82 55 82 79 44 92 68 106 112 76 94 69 95 76 55 103 50 45 56 88 92 121 41 72 88 74 55 86 100 56 80 68 53 33 70 63 92 90 79 109 36 42 87 101 74 112 39 96 118 97 58 91 123 114 64 34 37 57 71 50 72 87 68 34 33 90 96 64 74 56 84 98 58 91 82 103 74 52 83 49 51 70 69 62 58 97 125 116 123 118 105 80 92 119 123 ];
+ref = [ref 45 58 110 44 102 68 67 83 71 92 85 112 124 32 33 44 71 43 57 84 104 58 98 112 86 67 55 117 117 82 83 59 45 73 42 114 117 124 51 77 92 33 75 54 36 105 111 94 109 78 62 49 100 102 114 88 49 84 46 98 34 113 114 84 115 66 80 86 93 114 87 65 61 81 51 95 97 38 97 92 48 90 42 72 50 102 82 71 68 42 118 67 113 86 88 35 37 57 68 104 98 112 101 90 94 70 36 74 71 122 90 44 113 80 74 72 72 86 35 69 44 120 54 84 107 76 78 42 109 87 93 63 106 110 63 91 59 56 71 95 96 77 59 111 92 89 103 60 106 124 108 43 102 90 105 62 64 49 59 71 74 76 119 37 39 76 62 84 108 94 82 110 107 96 110 89 99 34 83 67 55 55 79 34 92 95 59 76 121 51 45 123 65 43 39 87 51 112 121 54 ];
+ref = [ref 68 42 119 118 50 97 84 53 59 53 102 117 100 92 90 123 74 45 49 86 61 61 60 88 120 104 99 48 87 102 82 85 121 82 83 83 80 84 43 94 74 66 123 40 114 83 37 72 108 46 112 62 118 117 56 55 117 86 41 32 63 113 82 105 57 116 121 90 35 59 75 76 78 117 96 102 114 35 49 43 79 102 55 93 121 111 48 89 75 38 33 59 83 104 54 61 103 71 123 35 124 88 41 108 83 123 66 32 98 52 121 42 60 92 69 41 79 49 102 86 115 86 125 113 44 109 109 81 126 37 83 124 32 102 71 82 108 126 78 112 57 113 65 65 45 73 36 43 56 69 62 41 125 48 79 88 121 92 33 121 42 77 125 39 101 51 45 113 111 42 85 97 42 117 42 105 125 85 53 73 53 73 88 114 33 90 94 67 90 101 47 81 117 47 62 68 75 71 108 48 ];
+ref = [ref 90 103 122 93 122 54 85 102 38 99 38 71 45 69 64 60 66 106 91 106 81 87 111 59 91 54 58 36 100 58 78 71 98 35 103 123 109 60 101 43 106 40 74 80 114 123 113 75 109 44 98 68 87 115 113 34 107 66 52 110 58 109 84 84 123 71 79 46 126 35 112 92 121 42 117 100 78 70 78 56 79 93 46 107 44 58 124 72 72 57 88 72 106 85 86 96 87 40 115 49 84 87 113 120 105 118 66 42 62 75 102 79 72 109 86 51 88 56 102 45 69 68 94 80 122 42 54 50 89 91 55 75 104 70 63 111 46 55 48 56 96 96 80 62 104 37 40 111 64 79 54 72 54 49 73 92 71 64 88 82 95 66 59 110 126 38 80 70 93 62 124 124 90 98 124 77 89 55 38 103 51 65 119 94 33 86 126 109 32 117 47 44 69 39 60 67 83 82 100 40 ];
+ref = [ref 107 120 104 99 58 126 86 118 90 88 99 90 59 118 61 67 98 119 42 36 107 57 68 107 114 68 98 58 121 41 112 102 51 80 114 70 63 78 82 51 33 99 37 116 71 39 112 55 80 58 38 72 87 49 120 65 112 70 53 67 54 101 56 103 117 89 50 123 126 100 91 73 84 33 122 113 109 54 80 89 117 48 123 55 36 83 74 105 33 50 59 117 98 55 98 122 66 44 54 43 41 111 74 107 104 57 73 44 76 33 94 111 71 81 42 100 68 96 38 76 126 67 121 110 77 98 105 103 125 38 70 38 111 45 114 89 53 81 32 36 105 84 95 60 52 52 118 88 100 55 64 42 66 89 46 69 106 100 56 123 47 38 50 63 74 75 34 44 46 43 69 73 104 117 97 55 74 106 115 75 108 58 33 91 76 53 93 65 118 38 39 111 103 64 89 76 91 36 81 112 ];
+ref = [ref 114 51 46 70 96 120 61 47 65 107 45 124 91 33 50 104 56 99 123 58 111 34 43 117 51 83 67 38 116 70 49 71 102 49 110 67 44 66 58 41 45 50 35 97 58 111 63 98 112 64 49 88 98 48 90 121 41 118 82 76 93 80 116 41 119 103 114 50 84 58 42 78 94 76 50 114 104 120 89 65 46 96 112 104 105 114 78 101 57 69 100 109 54 36 45 35 88 118 44 80 60 112 111 120 108 111 104 116 122 47 47 96 55 50 83 42 66 45 53 125 68 42 113 119 92 126 87 104 124 72 48 48 32 73 82 72 97 37 44 90 91 90 98 96 106 106 89 109 51 64 96 36 45 93 86 63 48 56 59 98 111 70 41 125 89 120 42 89 95 72 97 67 85 60 120 68 45 71 91 87 107 44 67 105 116 110 119 57 120 94 37 120 113 56 53 67 90 82 106 75 ];
+ref = [ref 32 66 44 120 101 91 74 83 93 93 35 73 45 62 112 47 108 58 123 104 41 116 65 107 70 102 53 75 35 98 108 122 70 45 120 124 87 32 62 65 78 56 66 53 86 118 71 51 88 72 88 97 126 120 68 117 45 80 49 40 84 86 124 52 54 51 47 99 64 44 56 107 102 107 99 55 114 44 126 73 103 63 51 123 47 70 103 121 42 86 41 49 69 84 61 94 98 101 85 118 86 82 74 36 36 52 116 81 78 90 60 101 49 120 87 89 34 64 58 116 96 69 58 43 69 64 83 78 72 94 35 37 81 101 111 87 77 70 104 60 44 79 50 111 91 48 98 40 92 117 61 122 115 118 50 69 108 47 106 69 57 121 52 125 115 93 63 55 123 118 47 42 66 108 65 39 56 76 103 70 126 86 65 34 89 36 51 60 56 74 123 75 79 78 93 85 64 93 54 126 ];
+ref = [ref 122 67 45 44 86 94 39 110 43 39 32 78 76 55 40 112 60 59 108 120 76 95 77 55 35 38 121 122 77 112 92 101 92 60 101 33 36 104 75 48 111 117 119 68 107 107 95 88 72 99 96 51 45 96 91 54 50 126 78 110 75 36 49 102 69 82 126 41 66 107 89 65 36 35 45 102 42 85 83 58 71 36 58 45 88 49 55 61 80 113 63 51 43 117 88 51 107 126 101 37 106 33 66 65 45 111 101 32 96 56 74 80 74 53 59 51 84 96 37 91 32 119 68 57 110 102 97 61 112 52 62 119 46 101 126 57 104 106 51 33 86 116 122 41 98 121 79 123 97 84 66 88 83 91 121 98 100 90 50 78 108 126 55 85 96 44 65 112 85 101 116 61 34 36 48 35 72 101 91 96 64 98 62 47 88 101 81 43 102 34 116 50 49 33 113 80 53 109 35 111 ];
+ref = [ref 103 42 41 99 107 48 35 56 72 125 88 64 125 54 89 51 51 89 118 34 33 110 98 116 65 80 103 59 83 104 37 74 117 67 86 100 51 54 105 109 77 89 91 82 111 103 97 62 58 41 97 103 39 110 39 76 61 110 61 33 120 38 79 90 81 75 98 54 48 71 114 114 41 79 119 108 53 93 78 94 33 87 108 121 71 92 61 121 47 47 125 89 119 122 90 76 116 81 44 121 113 45 54 36 53 99 43 119 46 126 88 43 112 93 104 47 110 41 41 87 89 41 98 45 63 94 122 79 99 95 41 44 71 46 125 91 59 78 58 72 86 84 116 90 64 106 105 119 47 126 44 58 50 66 121 122 68 91 125 124 120 116 38 49 59 121 59 36 49 112 102 59 113 55 107 107 96 121 81 107 111 71 115 69 94 66 37 102 45 79 97 38 76 39 52 71 90 46 111 66 ];
+ref = [ref 93 52 71 111 120 110 108 97 41 121 121 42 100 66 68 109 119 123 47 81 38 72 91 51 38 57 48 96 49 75 76 117 76 75 32 90 104 121 105 115 124 103 87 85 111 119 61 79 53 32 61 87 116 52 33 46 38 109 88 52 83 63 67 120 49 35 97 98 65 73 70 91 98 99 33 77 71 107 115 51 121 46 57 50 80 103 60 59 59 126 126 66 87 57 69 80 90 87 93 115 41 44 77 75 66 81 100 40 99 69 57 103 77 63 77 73 63 59 98 96 109 65 75 81 59 124 126 63 107 78 41 58 107 95 66 100 51 56 46 55 60 48 97 75 111 91 102 99 88 33 53 53 123 90 82 113 35 125 57 107 109 39 52 113 110 120 50 94 100 41 59 61 126 96 33 39 70 104 36 69 43 75 100 101 41 60 37 67 32 50 94 35 36 92 78 64 43 86 67 70 ];
+ref = [ref 105 44 47 78 61 99 45 118 53 122 33 46 125 50 70 35 90 111 49 96 41 113 95 50 57 41 123 39 55 36 100 75 49 106 38 52 91 59 103 79 87 73 93 73 101 70 60 118 110 78 54 45 37 86 59 92 50 91 33 57 59 102 123 47 66 71 105 41 96 99 125 67 43 57 94 88 81 95 59 55 121 96 118 101 33 88 81 70 114 105 117 43 114 96 111 93 78 81 53 114 125 63 71 75 44 120 125 51 93 96 38 114 34 54 52 49 59 49 73 95 77 86 115 73 116 56 85 98 93 37 67 117 79 86 118 84 81 43 33 35 45 49 89 91 34 120 100 126 91 69 74 64 37 50 45 38 80 88 122 47 84 70 82 100 45 87 111 66 117 63 123 44 101 109 89 48 99 123 96 90 92 102 44 102 89 88 58 112 110 117 108 59 52 78 108 41 97 40 50 102 ];
+ref = [ref 58 95 120 91 110 49 76 36 111 108 63 80 95 63 52 71 35 91 84 62 96 77 34 83 53 73 123 45 69 121 33 68 124 75 43 97 120 109 48 67 33 120 43 75 120 34 40 119 89 50 97 32 61 97 34 72 123 80 84 118 39 116 98 101 44 36 107 40 125 67 105 108 126 117 43 92 42 114 83 123 45 120 84 80 42 87 105 100 69 79 66 46 123 126 99 75 67 71 59 126 51 103 98 61 84 64 65 125 32 92 36 59 106 109 56 36 43 83 46 103 112 70 40 75 111 55 39 125 41 34 111 68 117 73 106 126 105 64 62 72 120 98 43 35 78 65 52 112 100 81 37 38 60 91 77 82 41 120 61 94 126 68 77 90 94 99 33 104 35 92 67 57 125 118 73 111 35 98 87 39 37 60 95 46 103 62 82 123 39 39 49 36 36 120 96 96 89 47 32 52 ];
+ref = [ref 61 56 73 75 36 112 114 65 116 70 94 82 91 68 86 87 36 74 55 36 57 98 113 99 114 89 40 90 126 125 62 50 48 35 71 39 112 41 60 86 69 124 96 113 94 118 126 48 101 111 77 44 104 49 112 55 82 103 38 82 115 94 61 87 45 73 32 99 81 120 76 84 32 44 88 86 85 43 110 81 75 126 56 32 97 66 72 105 89 97 58 115 46 71 124 114 104 65 56 122 63 114 70 116 104 121 50 92 53 122 122 94 69 118 51 108 110 106 108 89 114 87 126 61 86 123 58 113 121 54 74 112 123 106 41 95 103 83 52 105 73 43 53 36 44 93 81 32 44 99 100 78 41 42 91 98 56 44 76 49 40 38 107 82 117 118 92 45 122 103 113 61 34 64 96 91 91 118 124 116 87 55 116 125 83 56 116 117 43 104 112 123 79 108 65 94 62 56 82 112 ];
+ref = [ref 121 64 56 120 54 37 85 62 99 68 77 36 114 51 110 63 81 33 40 83 105 72 90 56 80 89 114 48 47 126 94 82 32 47 57 103 105 60 84 74 80 38 99 77 65 44 79 85 98 52 53 92 66 77 42 94 124 78 109 106 102 59 61 69 50 115 67 70 41 34 96 102 78 62 56 98 124 37 68 39 79 52 42 47 118 119 42 100 68 117 61 106 69 38 110 54 96 94 107 77 68 88 87 50 78 33 114 62 64 72 63 74 41 100 58 78 85 85 81 79 70 82 55 95 110 53 66 121 40 67 101 113 97 110 70 77 52 65 48 103 110 94 114 95 92 78 34 113 63 32 52 113 43 51 60 121 68 104 59 102 52 108 112 81 118 34 123 61 112 101 84 70 108 35 60 93 40 50 46 81 102 126 50 34 76 123 53 109 37 69 97 122 86 65 112 52 107 95 98 53 ];
+ref = [ref 41 58 77 118 117 46 51 52 48 39 107 40 33 77 108 112 90 47 116 48 76 38 72 73 72 106 64 82 110 42 108 77 65 87 120 118 71 89 106 54 35 116 40 82 46 42 81 55 73 111 100 55 79 121 72 78 90 69 100 121 48 118 43 52 51 120 68 114 100 69 86 63 124 79 112 58 77 75 83 72 113 38 110 93 121 59 75 81 117 58 71 48 76 44 55 107 52 104 109 66 115 76 35 101 114 110 32 36 47 91 38 62 74 89 83 48 106 114 42 47 40 37 42 84 97 57 75 77 122 101 58 85 47 33 79 93 103 80 55 111 48 87 70 97 104 76 94 118 84 52 66 40 88 85 68 102 108 58 102 45 56 113 85 34 115 118 121 109 122 113 55 77 53 121 95 81 126 112 34 37 55 68 52 66 121 43 53 65 92 40 98 69 119 70 60 102 125 112 50 91 ];
+ref = [ref 81 75 45 81 46 70 71 44 65 122 126 40 64 90 34 77 86 105 34 36 67 52 89 108 67 103 54 85 47 99 122 57 46 46 93 86 53 94 106 74 98 48 126 100 71 75 115 107 90 35 79 73 67 125 50 73 123 32 32 102 84 85 46 90 63 101 68 125 125 33 92 36 38 50 43 44 105 114 90 117 35 88 125 81 84 101 108 73 49 98 120 123 123 117 57 40 47 108 110 40 123 68 45 74 58 70 116 121 101 95 123 46 95 91 100 121 46 96 39 46 75 43 73 76 112 82 120 46 52 87 77 88 120 35 70 36 75 58 108 79 125 125 56 59 92 32 81 92 33 105 37 42 123 104 73 94 89 99 67 121 45 102 98 101 34 104 84 65 106 34 59 35 75 52 61 45 98 39 68 83 55 45 120 80 118 70 66 102 104 121 61 75 69 47 99 76 68 102 109 118 ];
+ref = [ref 126 54 64 121 69 102 116 72 122 72 80 77 75 91 38 104 115 65 44 124 72 119 92 113 82 113 58 68 103 108 40 72 45 110 84 122 116 61 56 98 77 43 58 52 60 115 102 65 100 57 105 108 90 54 83 62 106 100 86 108 78 76 78 96 52 115 117 89 84 46 73 59 61 32 91 95 91 74 45 110 67 45 36 103 117 58 68 41 44 73 99 78 87 65 69 85 114 115 108 71 109 99 73 78 68 78 64 54 121 87 37 48 60 119 92 41 114 100 33 38 95 53 73 78 42 59 79 122 41 110 38 71 49 48 53 94 107 57 111 72 78 121 119 45 114 51 64 60 126 64 126 71 75 107 84 104 88 120 62 101 37 97 37 71 53 84 102 91 35 96 104 72 90 124 71 45 61 90 119 61 50 72 35 118 97 38 74 110 122 121 98 81 97 109 96 90 80 91 85 125 ];
+ref = [ref 82 118 44 35 103 64 79 35 96 61 113 79 114 72 75 65 63 47 62 45 57 104 108 99 94 91 100 120 54 70 93 96 49 112 61 92 99 117 34 70 59 39 109 90 96 56 118 76 37 42 94 94 37 124 43 44 124 58 117 94 112 72 98 79 50 114 77 70 88 98 97 108 55 90 34 54 99 115 32 36 100 113 57 124 84 40 121 32 122 91 58 117 60 89 99 115 116 40 124 84 121 96 97 81 72 64 58 58 70 70 60 86 33 125 82 96 66 46 106 88 123 43 78 58 70 125 122 85 111 100 38 121 90 58 88 56 81 78 126 37 117 89 44 37 109 97 70 71 46 93 69 39 62 39 51 73 97 112 63 92 120 112 102 90 115 101 125 60 89 94 103 67 46 120 108 63 85 84 78 123 101 48 93 45 42 107 73 110 70 120 40 62 112 52 103 101 42 64 66 96 ];
+ref = [ref 96 94 32 40 70 110 101 87 70 84 111 47 41 82 126 107 49 38 48 60 43 122 108 55 70 91 105 66 115 69 98 107 105 108 50 112 75 97 106 68 70 105 118 109 34 81 114 121 120 88 102 118 64 41 123 77 60 45 109 111 81 40 62 124 36 83 36 48 66 36 92 114 73 72 54 69 78 48 87 43 64 103 81 89 105 32 85 117 99 126 99 112 46 37 77 85 73 81 61 107 110 72 72 79 49 91 53 108 90 94 56 32 112 54 76 47 91 92 74 79 71 67 119 34 49 119 49 124 58 118 96 59 36 67 57 117 112 70 95 119 86 95 47 41 69 39 117 111 78 90 97 118 92 104 59 73 47 78 105 49 79 60 41 125 61 52 43 65 120 75 69 42 123 75 39 50 63 90 41 71 65 80 86 117 71 58 61 81 59 116 98 51 107 101 55 50 123 125 89 59 ];
+ref = [ref 97 50 92 93 36 62 52 32 80 97 54 126 47 82 101 47 107 76 48 109 46 74 35 35 63 65 83 93 51 35 33 83 106 79 81 37 89 111 125 87 55 118 38 32 72 50 115 119 76 53 65 54 45 74 65 93 77 57 47 65 52 116 69 78 76 101 61 58 86 70 67 115 73 43 122 43 79 73 94 121 56 37 37 50 40 85 42 61 37 114 95 81 41 97 111 122 126 87 103 120 59 96 56 38 82 113 90 65 111 91 42 63 35 78 48 42 91 67 79 32 88 78 91 39 49 122 93 47 96 36 44 53 87 52 53 44 102 50 65 32 121 35 51 107 78 114 34 114 99 68 117 56 43 78 108 42 45 119 126 56 37 55 79 37 69 33 65 42 33 64 109 112 58 64 39 85 65 58 98 98 120 41 91 125 124 94 73 122 71 46 58 121 100 75 86 107 63 66 78 88 ];
+ref = [ref 60 105 65 45 115 68 62 114 75 111 46 119 119 105 67 102 43 38 34 53 82 108 120 99 58 122 107 43 91 74 85 119 83 46 119 118 121 34 112 39 54 43 112 43 84 40 119 33 77 52 47 77 99 40 41 54 123 124 45 94 48 63 61 94 35 91 74 125 39 70 126 64 38 124 61 56 65 79 92 123 110 95 123 105 61 70 94 53 69 90 124 96 117 103 38 99 69 38 119 66 88 41 40 123 41 73 34 43 80 89 37 41 92 116 80 123 86 100 36 81 34 115 100 80 46 52 122 103 122 91 109 65 70 106 55 49 111 37 65 109 57 39 72 80 80 104 109 106 62 88 90 94 91 73 87 37 82 115 45 59 112 49 63 125 122 104 101 108 55 63 109 78 110 98 55 124 89 38 121 99 108 69 90 95 78 101 38 35 99 110 87 36 66 50 114 53 105 33 70 44 ];
+ref = [ref 99 86 66 43 92 116 105 90 83 106 83 96 83 55 104 64 108 110 84 64 93 37 94 120 40 70 65 71 47 43 115 107 67 105 125 93 57 71 86 79 67 70 86 72 69 43 83 96 90 72 90 38 110 119 74 70 65 123 113 93 64 96 92 118 63 32 63 126 81 82 120 95 42 113 73 111 83 90 117 117 120 104 85 100 114 54 110 70 63 63 36 50 102 92 121 39 66 111 97 85 61 59 77 57 46 98 60 112 98 34 110 86 80 93 80 35 53 108 50 89 86 100 114 125 121 39 98 101 66 51 122 87 92 69 82 125 67 103 112 65 58 121 56 60 108 60 106 35 50 101 45 62 47 55 36 45 84 116 35 67 62 64 122 114 69 38 94 86 41 34 47 95 106 49 115 86 76 77 116 95 126 37 83 101 53 87 125 70 108 33 123 37 45 47 104 86 56 85 35 108 ];
+ref = [ref 99 48 47 37 40 64 60 46 38 60 100 92 53 48 99 100 51 74 58 118 47 75 92 112 110 97 70 51 68 95 33 74 52 40 32 98 38 85 35 84 78 64 71 118 64 90 37 124 62 73 102 85 81 116 100 82 92 122 76 100 58 113 71 89 62 52 43 111 123 123 115 52 66 80 69 67 83 91 94 115 121 109 37 116 76 42 73 52 80 119 52 116 63 72 35 47 86 110 61 57 53 62 50 93 53 43 38 43 91 36 66 80 42 89 111 86 51 126 93 55 84 120 82 91 90 55 34 86 126 44 59 43 36 65 77 56 109 108 102 124 65 35 116 73 115 89 72 57 73 62 84 38 105 40 66 103 69 86 60 104 99 60 68 115 64 60 111 53 125 85 49 83 96 40 72 101 120 105 34 57 123 43 89 54 105 53 37 94 106 71 114 68 50 62 105 99 73 40 112 37 ];
+ref = [ref 104 99 63 87 78 117 43 94 119 78 95 67 55 116 114 82 112 109 40 61 46 123 60 38 66 109 97 42 54 106 52 39 41 121 102 120 63 76 53 97 44 49 67 91 90 63 95 49 122 72 111 58 103 90 122 53 67 87 60 105 44 95 113 100 98 52 49 87 80 46 38 39 119 116 51 56 86 121 98 43 39 46 90 41 33 35 77 99 62 57 80 108 50 81 108 105 83 120 117 81 53 116 89 110 65 40 91 79 89 41 68 72 79 85 104 81 39 106 126 37 80 87 72 45 65 92 81 55 81 103 33 90 44 65 121 57 95 82 88 87 49 40 99 108 74 93 42 61 126 37 84 89 99 105 108 71 103 124 32 69 102 106 103 53 111 65 64 117 32 67 125 90 53 83 59 50 94 58 67 101 51 117 64 45 122 90 36 113 34 32 66 57 123 76 89 123 118 40 52 123 ];
+ref = [ref 117 53 113 96 104 115 126 72 63 96 123 96 95 89 37 82 64 84 63 102 118 108 42 71 95 100 71 39 106 99 87 51 35 82 124 104 38 39 96 39 122 65 101 84 47 85 44 106 72 86 47 119 87 108 32 47 62 109 75 39 48 94 88 68 103 119 41 118 124 82 84 57 85 40 48 90 71 58 42 40 76 34 40 105 78 97 82 121 51 86 59 117 67 72 71 32 116 111 96 56 98 51 93 105 111 67 78 54 62 113 105 67 69 55 115 64 117 38 125 61 73 55 101 67 45 124 55 106 63 38 55 54 108 111 117 121 96 122 46 84 119 95 83 105 93 49 112 114 107 58 52 34 96 97 86 53 67 91 99 58 110 103 49 97 94 84 64 38 87 99 61 38 86 75 85 92 88 103 93 74 92 116 114 96 116 58 69 63 69 98 62 62 90 42 50 42 42 68 120 78 ];
+ref = [ref 78 99 95 89 113 91 42 72 125 52 44 47 74 74 69 75 107 38 41 84 40 71 62 90 62 94 54 114 90 56 76 41 75 97 65 50 93 126 93 47 112 61 107 65 99 112 81 85 77 103 91 107 82 100 93 41 86 59 37 82 79 123 43 100 107 79 37 70 118 98 44 109 82 67 55 55 87 115 79 88 91 107 62 98 90 66 63 78 118 100 52 39 110 78 41 105 38 45 54 84 102 91 47 47 44 53 56 108 36 89 105 97 118 69 78 80 37 105 106 83 80 105 105 69 62 63 116 113 76 101 98 58 32 115 51 88 33 40 105 33 52 101 72 88 33 93 91 86 72 63 105 91 42 44 64 79 113 59 94 87 42 34 38 47 65 117 99 77 113 46 89 49 93 112 47 77 109 81 110 126 87 66 49 118 101 115 119 42 38 41 55 68 100 118 104 87 103 86 64 69 ];
+ref = [ref 98 63 40 116 113 99 121 106 48 34 114 35 44 81 72 109 97 78 36 122 79 92 53 82 50 72 109 91 71 117 33 115 76 85 59 107 106 65 43 92 119 45 74 84 55 121 101 50 67 94 103 70 117 121 98 45 89 105 47 63 54 109 50 52 92 57 61 49 74 59 70 71 76 39 45 47 84 102 124 103 52 81 105 115 33 106 35 69 34 107 116 114 91 80 111 84 54 78 43 68 85 72 50 116 83 48 80 87 67 61 77 45 85 102 87 77 81 39 68 100 110 86 107 42 120 107 95 42 39 37 71 107 72 54 103 77 85 44 112 89 126 121 63 62 99 126 107 82 83 109 52 51 107 66 33 45 39 42 45 112 61 81 39 121 94 80 101 38 56 126 50 50 66 59 91 91 104 62 57 59 51 118 78 33 102 97 124 46 125 82 96 36 46 37 90 37 52 69 94 124 ];
+ref = [ref 102 62 121 64 106 36 58 35 100 115 82 78 110 75 117 125 114 113 61 57 40 67 86 67 34 40 56 99 64 38 91 72 120 51 92 124 121 90 103 51 70 80 39 48 44 33 113 47 95 77 51 103 96 113 55 34 107 41 124 122 104 92 35 57 77 77 79 89 39 120 62 98 83 108 116 62 44 49 70 99 92 80 94 47 64 66 41 48 77 116 47 80 101 99 77 44 117 96 36 38 77 48 62 121 103 117 105 98 126 62 118 87 70 62 46 115 48 97 102 82 124 49 61 80 76 47 101 109 62 60 77 34 120 105 110 71 97 104 34 89 81 79 106 89 100 52 59 85 50 121 117 59 64 96 52 54 63 89 115 44 72 107 46 78 101 60 70 81 35 62 114 103 105 85 108 67 123 32 109 35 75 75 80 43 38 62 61 72 66 33 76 35 122 103 106 44 83 84 62 104 ];
+ref = [ref 98 123 53 41 50 82 90 84 64 35 89 34 64 60 92 83 115 53 76 90 102 41 124 45 73 125 111 97 102 85 98 82 110 120 56 113 113 124 107 119 96 58 36 70 90 112 88 64 86 91 118 126 71 108 39 81 81 97 82 32 107 113 51 54 39 40 49 58 59 111 34 115 124 114 65 53 92 114 108 78 62 88 93 61 100 87 68 124 77 81 38 64 125 88 101 38 93 82 126 110 65 52 117 101 71 98 58 55 60 107 113 115 38 101 122 60 53 103 121 74 58 107 86 52 43 119 82 126 85 96 64 125 104 81 116 63 56 74 114 67 49 69 70 103 67 92 70 46 75 94 49 38 120 81 38 77 108 58 66 85 109 42 66 83 93 91 108 87 44 100 75 75 73 96 52 118 64 66 33 83 118 120 97 54 66 96 62 34 77 118 46 106 92 113 95 73 93 77 76 59 ];
+ref = [ref 49 83 105 36 103 58 122 80 35 96 108 95 32 78 61 63 78 53 98 98 41 52 83 114 94 89 53 42 54 89 124 113 95 35 61 80 54 113 57 106 116 54 86 106 51 103 50 79 120 65 105 108 95 76 39 43 56 51 83 74 75 36 37 60 72 71 104 45 61 52 85 56 97 88 40 116 44 75 42 43 113 81 43 110 53 60 56 85 105 37 84 47 111 62 40 48 101 46 106 85 72 63 34 118 83 47 69 108 116 106 101 51 77 106 103 104 113 79 43 107 112 124 124 113 115 102 43 104 36 81 101 46 120 34 70 111 66 124 96 68 60 36 49 87 100 101 102 95 44 97 110 85 100 108 57 75 92 99 94 51 51 53 108 108 98 101 32 115 72 71 45 54 70 98 79 38 74 114 80 111 73 53 99 84 86 82 37 63 107 72 74 118 71 79 42 93 117 103 72 97 ];
+ref = [ref 64 97 74 79 117 121 75 52 123 89 63 42 112 126 64 120 114 45 58 104 122 89 121 111 98 49 51 44 80 89 82 113 46 65 55 37 104 86 55 58 36 86 76 118 123 75 35 36 107 32 91 53 69 84 106 43 59 67 76 36 35 33 50 69 119 85 49 122 110 78 82 91 47 93 77 69 42 90 72 121 84 34 111 115 126 53 38 81 57 32 126 124 123 110 56 57 56 60 37 47 93 68 61 68 66 59 57 56 85 45 71 34 114 54 54 117 97 104 81 59 59 126 65 88 63 91 48 69 80 71 70 84 48 53 55 87 55 86 53 100 57 76 54 74 67 52 40 38 125 114 75 111 78 64 108 76 43 65 126 90 113 92 54 60 110 103 105 77 96 81 39 50 69 44 116 109 40 123 62 46 48 100 102 97 81 105 70 92 105 74 35 38 121 60 60 60 60 113 84 66 ];
+ref = [ref 80 46 122 35 78 117 95 73 116 83 117 86 74 108 74 71 101 65 90 106 75 50 104 96 88 49 64 55 107 124 120 91 39 107 39 37 76 59 40 33 125 53 94 117 107 47 81 110 77 92 100 42 80 75 75 122 126 124 34 88 36 64 83 54 107 48 90 41 46 110 115 113 74 74 115 80 108 86 50 33 93 108 104 107 89 93 40 115 113 111 104 50 94 57 32 81 61 102 59 67 99 97 68 75 105 40 39 52 46 54 68 107 51 56 68 57 45 45 122 57 53 94 51 111 60 58 108 61 124 104 38 109 83 44 33 98 65 109 103 122 49 63 109 117 33 66 40 120 61 107 82 123 47 68 106 72 55 58 43 71 109 89 89 59 53 53 50 67 45 83 63 79 122 36 46 95 98 77 70 102 66 38 40 98 36 33 96 46 99 84 34 82 98 116 107 105 102 70 51 63 ];
+ref = [ref 47 34 119 57 80 88 109 71 100 53 79 61 94 47 82 108 114 97 34 49 83 113 77 62 45 106 37 60 113 66 93 119 53 95 69 126 95 82 117 59 83 37 101 102 108 104 120 71 32 72 79 75 101 53 107 36 59 45 105 37 107 105 105 40 69 56 55 98 112 50 95 116 35 122 90 41 89 107 72 94 41 32 37 115 58 35 111 67 77 107 68 44 125 52 71 108 112 42 108 73 84 74 54 56 112 87 96 85 47 107 96 61 66 73 50 102 114 93 99 97 33 102 96 65 48 43 105 38 63 35 46 56 119 74 105 100 48 80 108 48 96 68 104 74 122 91 56 76 113 62 51 85 81 70 104 123 85 107 112 59 36 101 72 40 108 105 115 42 67 105 76 66 81 46 91 82 116 85 58 87 49 111 97 108 81 111 54 52 67 77 97 55 49 35 117 105 126 90 85 103 ];
+ref = [ref 35 95 68 124 120 110 115 78 117 102 122 40 77 50 108 90 86 34 119 113 69 85 61 68 107 84 65 121 126 55 64 115 120 113 41 45 124 108 60 56 119 50 32 122 41 46 86 62 89 34 121 92 120 99 73 105 73 47 52 54 118 88 119 114 59 85 37 89 52 117 91 63 78 86 108 35 79 112 60 51 113 65 64 76 101 55 112 60 33 119 42 48 111 47 34 106 39 60 75 124 80 87 121 99 99 121 66 52 66 45 121 126 38 42 122 115 76 69 91 87 79 110 38 73 73 115 110 112 87 79 98 58 94 59 80 119 58 97 75 112 44 51 53 63 45 62 115 122 32 111 125 44 108 123 43 113 36 77 75 50 122 107 91 85 39 60 45 71 120 35 62 73 63 97 52 125 39 45 53 83 55 34 32 51 83 81 99 104 112 101 52 79 41 42 59 112 66 101 121 126 ];
+ref = [ref 33 97 66 102 57 52 99 34 82 48 76 45 117 119 116 114 122 53 65 125 92 46 107 121 79 75 83 122 121 36 103 98 80 45 68 120 78 70 125 96 79 96 123 113 100 70 54 112 94 89 39 62 98 94 49 34 67 89 46 107 74 89 108 97 39 36 123 59 94 59 72 57 90 118 52 37 93 49 100 82 95 94 59 90 58 93 93 102 108 60 107 82 63 114 45 81 97 61 58 124 49 54 83 98 98 63 55 54 80 62 114 101 50 69 58 57 126 37 64 87 55 74 73 54 49 85 56 78 48 51 36 59 58 45 107 44 106 121 95 79 86 55 54 94 91 104 45 70 37 109 35 119 110 117 102 60 54 83 82 70 66 53 32 120 98 66 109 50 76 80 123 46 88 74 88 93 70 73 74 71 70 54 75 50 52 43 107 70 87 84 105 62 54 124 69 121 125 101 77 58 ];
+ref = [ref 106 122 65 38 114 91 94 34 43 33 54 58 73 120 99 77 53 73 113 64 88 101 99 104 86 101 39 76 72 66 67 75 57 78 123 42 94 81 99 109 63 38 107 39 119 84 67 113 119 56 72 52 38 35 75 122 92 45 92 57 68 85 36 82 92 40 84 60 95 44 107 85 96 86 103 74 68 36 94 53 84 110 64 90 85 62 124 70 66 82 35 42 76 82 103 90 94 92 76 35 112 103 114 122 113 54 122 45 94 113 47 112 119 122 55 46 74 76 87 94 89 64 69 103 126 46 120 115 93 64 63 44 61 61 71 88 99 50 94 86 118 82 111 63 93 54 123 119 48 35 60 59 111 51 49 32 64 85 42 106 37 122 102 108 88 79 41 88 49 85 81 74 117 56 76 71 104 66 67 69 49 35 71 39 121 46 94 54 87 112 96 89 108 48 114 86 119 59 111 57 ];
+ref = [ref 83 70 116 62 97 118 58 38 60 105 45 47 48 55 102 82 76 73 90 125 32 74 126 60 94 114 126 38 116 48 124 96 65 88 115 65 78 124 51 85 50 81 115 50 113 89 53 70 119 78 72 41 115 106 67 101 64 76 121 96 47 107 108 57 97 123 106 123 39 119 56 101 44 75 60 114 46 44 45 100 90 81 74 112 45 83 74 59 97 53 82 59 88 68 50 67 49 73 56 88 62 87 74 52 103 78 100 82 116 124 93 100 78 54 87 95 69 47 65 98 87 92 103 96 60 75 89 105 61 78 108 74 56 114 117 122 106 70 80 117 113 125 34 66 71 44 64 112 94 32 64 74 114 91 48 40 51 70 53 47 68 79 38 66 55 78 82 85 82 88 126 119 81 65 49 96 96 37 32 112 87 104 48 54 36 35 120 76 80 64 73 94 124 75 75 87 101 45 116 42 ];
+ref = [ref 59 65 56 77 113 111 110 99 105 55 56 82 71 73 122 42 39 112 122 110 98 108 68 47 117 87 78 98 40 85 81 93 47 42 69 89 38 38 33 66 65 87 123 37 57 97 107 90 106 89 112 59 69 102 126 119 94 61 80 79 32 41 83 44 101 59 91 76 64 63 56 102 96 75 74 99 61 99 109 86 71 99 122 63 103 65 126 101 82 47 51 32 32 44 106 55 46 34 120 118 70 85 38 77 37 101 105 66 52 70 38 32 119 108 42 91 107 51 67 75 126 123 68 67 80 38 34 74 46 78 86 108 57 104 35 76 109 71 100 110 77 47 105 85 60 38 83 38 45 51 120 55 113 124 85 125 35 45 119 125 68 48 122 112 93 90 61 97 58 64 91 118 36 122 73 47 88 97 72 75 109 112 49 121 104 70 117 70 114 102 120 51 100 97 86 60 96 80 103 68 ];
+ref = [ref 60 89 121 68 109 122 64 42 36 40 100 66 69 61 65 54 61 106 112 92 122 93 120 98 117 84 58 34 50 109 60 58 109 35 102 84 70 79 115 70 122 69 83 92 47 115 112 37 92 98 49 36 57 98 124 108 41 82 77 91 65 84 44 59 109 64 107 109 107 95 57 86 80 102 111 36 102 41 94 94 85 76 111 99 62 75 84 33 118 117 105 103 117 59 126 39 80 66 104 106 60 38 43 97 82 100 90 91 91 69 61 123 50 43 118 73 53 54 40 89 46 61 85 85 93 71 66 59 113 124 107 76 68 58 67 118 39 93 76 49 56 65 105 83 45 62 94 49 110 43 123 55 44 85 125 71 92 97 104 84 49 42 66 116 105 86 42 43 115 38 96 71 120 71 112 124 45 89 94 46 78 73 96 116 106 122 117 82 86 49 112 38 63 71 78 117 71 51 95 56 ];
+ref = [ref 114 34 86 52 60 68 87 103 62 87 110 53 113 42 93 78 52 85 49 42 119 70 103 51 105 32 44 64 105 35 99 87 63 86 78 97 102 49 46 84 111 72 97 48 59 81 40 45 44 46 126 58 50 118 42 69 63 116 36 71 126 101 89 101 54 34 122 53 49 79 100 42 51 59 84 48 61 57 83 125 92 119 82 81 125 37 70 54 109 79 101 76 60 48 94 95 46 79 82 62 122 97 107 75 126 43 112 40 100 68 74 80 125 118 86 122 51 52 123 115 55 115 122 112 64 91 102 74 72 51 111 80 36 87 84 99 47 59 65 126 97 78 73 99 93 58 89 36 124 51 56 75 41 121 54 64 106 35 105 113 112 119 58 125 60 78 100 56 104 95 102 86 81 70 91 83 67 50 100 58 108 43 119 33 34 72 34 86 105 36 83 111 88 63 114 68 41 40 67 79 ];
+ref = [ref 68 84 111 104 72 97 90 58 85 97 39 47 71 66 125 67 92 120 105 124 101 46 72 118 104 85 107 49 36 97 53 125 114 122 54 44 121 87 84 48 84 122 51 46 107 46 117 74 104 87 96 109 123 94 75 51 33 72 50 60 126 47 122 41 106 104 103 90 72 125 106 33 63 103 102 37 124 47 102 88 107 117 71 97 90 96 54 90 121 33 77 65 44 61 124 43 49 68 40 33 34 105 98 124 41 57 42 59 121 97 47 73 78 48 72 47 75 32 55 80 80 126 122 38 77 35 53 117 43 39 66 104 120 46 45 63 57 121 95 80 69 117 94 82 107 38 61 108 32 124 33 89 50 41 39 66 68 105 72 107 75 115 119 78 32 64 117 88 62 113 93 59 85 90 74 98 54 107 93 67 74 49 89 69 51 84 114 81 67 104 62 66 69 51 122 114 89 62 113 65 ];
+ref = [ref 42 44 100 34 108 52 98 50 62 75 36 78 121 62 34 92 73 80 34 46 42 97 72 53 62 33 70 58 126 119 59 86 122 105 58 117 71 40 72 68 68 34 85 66 103 96 121 83 77 75 51 52 96 38 104 94 71 100 98 95 107 118 96 100 58 83 60 49 42 41 94 71 83 65 60 32 91 121 65 121 62 102 122 101 117 123 39 73 79 79 101 60 126 79 97 54 32 66 36 75 105 99 66 63 45 123 79 84 44 83 79 46 48 115 117 91 36 84 33 70 98 88 98 103 47 110 108 106 71 100 55 58 108 40 81 50 52 111 97 36 54 60 100 118 126 50 77 60 89 125 113 52 63 107 54 92 37 106 32 125 120 78 49 97 108 112 38 91 73 120 71 62 103 101 95 109 38 39 126 62 69 39 47 111 89 33 59 99 79 120 39 116 48 120 46 52 115 107 123 66 ];
+ref = [ref 47 101 122 69 43 82 66 35 60 91 53 103 98 56 122 60 83 39 70 99 99 99 39 107 38 126 123 97 48 57 37 61 119 80 93 114 125 105 88 77 89 121 59 94 115 74 117 39 99 75 94 76 106 98 65 34 52 104 104 87 43 85 49 75 122 95 56 116 46 57 56 40 33 104 45 61 110 44 120 111 51 72 37 111 99 59 98 117 54 66 109 48 116 119 124 74 60 102 116 48 66 94 124 108 110 105 55 78 34 63 112 101 69 124 89 115 81 52 45 97 79 117 101 42 84 81 120 116 112 77 118 80 68 91 89 81 80 53 126 78 80 114 82 41 125 54 103 113 124 97 111 109 97 106 90 125 71 44 56 66 119 91 77 64 120 120 47 99 91 60 48 59 49 71 122 101 103 99 91 82 63 62 81 124 112 57 88 52 46 104 112 58 121 106 46 112 121 75 80 45 ];
+ref = [ref 84 95 52 60 59 120 112 74 95 118 81 48 103 85 50 85 54 57 65 113 33 116 42 50 80 117 117 40 96 43 80 45 49 119 88 72 46 110 56 68 97 109 56 119 101 39 57 122 95 65 126 118 116 108 123 49 92 118 66 98 45 112 123 35 71 46 114 93 125 80 93 77 115 107 106 119 44 85 124 45 93 45 120 68 70 75 91 90 62 126 79 84 64 64 121 43 97 60 122 107 43 104 120 101 60 67 91 100 57 78 56 55 33 105 44 121 117 69 85 119 62 124 70 35 116 119 33 104 52 110 126 36 51 64 34 86 41 64 86 77 94 56 116 61 63 106 61 60 82 57 56 113 65 61 84 61 71 50 104 40 63 38 79 82 112 78 72 43 79 108 55 72 105 69 42 123 113 43 82 46 33 71 48 99 59 56 55 43 62 108 57 103 79 112 40 86 51 100 52 79 ];
+ref = [ref 117 84 118 46 68 41 73 79 52 84 107 122 103 124 76 32 125 94 76 94 68 118 108 68 78 116 75 47 38 71 37 33 117 67 42 47 33 101 39 99 90 40 123 42 75 42 119 43 122 109 115 119 95 116 86 126 41 75 124 33 115 105 103 74 74 94 88 49 124 110 72 42 116 33 97 41 46 108 93 79 103 37 62 47 59 96 95 43 49 101 75 113 47 83 96 42 116 126 34 109 76 119 52 35 120 103 99 124 109 93 34 95 54 67 69 106 74 66 125 121 49 75 100 63 37 38 108 47 53 36 37 120 54 125 102 126 36 69 43 112 48 54 64 116 70 100 87 71 73 67 70 46 113 66 45 36 40 47 95 89 39 63 43 65 70 89 102 126 98 46 34 93 63 100 96 97 59 71 70 63 106 123 122 99 94 108 35 65 40 63 109 78 39 73 88 65 105 106 66 43 ];
+ref = [ref 43 62 45 122 74 103 89 115 55 55 47 40 74 64 56 73 55 48 45 51 79 100 54 113 113 35 100 70 55 85 100 34 65 52 112 41 60 92 32 84 71 85 95 88 41 124 111 77 97 85 104 99 89 81 64 124 72 63 110 102 119 45 92 95 47 101 39 61 117 126 102 84 91 48 90 52 79 89 110 84 97 47 48 116 56 33 112 46 59 66 68 47 40 120 119 36 66 102 106 39 116 78 74 123 58 50 120 76 124 77 81 47 90 125 91 126 85 42 50 117 105 96 64 96 126 34 108 47 34 44 45 96 46 43 50 122 110 98 97 98 114 52 63 79 81 53 81 41 33 87 123 106 53 120 55 70 85 92 125 112 37 107 64 116 37 91 56 97 57 62 43 64 58 117 77 67 124 124 64 55 84 93 104 74 72 108 96 56 100 126 104 34 103 37 54 101 37 68 102 103 ];
+ref = [ref 40 94 38 45 92 116 55 104 111 95 93 111 47 70 39 72 101 109 83 117 116 42 109 95 91 57 68 88 108 72 64 69 58 97 95 32 88 101 117 80 116 99 112 90 62 80 96 46 84 87 81 84 120 37 40 58 55 102 42 56 91 126 118 67 117 109 66 108 104 116 42 85 73 126 40 115 33 105 120 96 88 111 77 124 55 50 54 37 70 104 114 65 93 52 57 106 86 45 48 107 109 83 48 60 93 82 113 60 89 124 93 92 65 118 40 64 78 101 59 83 47 43 95 97 40 55 95 51 87 58 66 123 62 49 90 78 34 120 97 116 52 80 123 118 63 40 56 64 58 67 112 33 68 90 108 37 66 86 90 34 125 59 57 35 36 58 91 65 79 42 94 100 42 76 86 82 91 62 117 39 83 63 69 58 36 35 87 112 57 110 62 41 43 63 87 70 126 106 119 50 ];
+ref = [ref 99 98 121 96 71 63 42 62 51 109 72 54 123 54 54 61 35 56 77 51 124 98 78 69 67 61 104 95 105 98 70 46 111 111 44 126 116 48 118 98 77 126 94 40 121 88 89 54 104 96 47 121 49 72 101 48 48 63 122 50 114 72 56 83 99 82 97 111 46 84 106 59 92 68 70 101 99 43 60 45 58 110 124 34 123 57 64 41 58 41 125 48 49 53 107 54 75 77 36 90 108 104 60 96 60 112 77 41 122 77 74 55 45 62 69 110 116 93 99 110 69 38 116 104 74 72 105 109 62 74 126 77 39 122 37 122 112 94 65 63 90 39 122 121 109 124 110 114 104 60 34 81 116 93 77 100 116 112 85 86 47 39 87 67 67 74 71 69 40 36 61 114 48 51 121 47 114 58 66 78 92 33 98 124 34 44 79 42 114 110 88 63 40 59 65 65 64 32 54 32 ];
+ref = [ref 97 80 50 111 40 43 123 84 91 124 33 109 77 74 38 81 51 92 108 84 99 78 103 55 94 40 45 82 108 60 41 42 114 92 93 54 106 91 48 41 94 41 106 108 45 72 101 87 97 103 42 72 76 103 44 53 64 126 39 45 56 56 81 109 108 94 124 71 97 86 49 80 101 34 54 84 117 75 57 43 74 62 102 98 120 72 88 72 85 108 65 61 56 102 96 91 75 79 74 61 123 105 36 122 91 36 119 86 59 95 85 77 71 104 34 106 82 40 101 74 115 41 123 32 57 125 37 103 123 95 66 124 47 113 111 99 59 116 61 80 96 116 75 69 109 93 91 112 87 41 100 77 110 123 68 84 75 68 93 102 78 80 64 120 89 94 61 41 126 108 88 98 119 62 42 58 32 108 81 55 59 63 75 45 118 82 49 72 34 42 44 100 100 63 84 101 104 69 55 57 ];
+ref = [ref 107 95 122 52 113 44 87 90 63 89 124 77 46 42 92 72 56 98 77 91 69 35 77 123 94 125 40 69 56 71 111 67 121 76 93 104 121 111 47 100 83 114 40 42 48 103 49 45 63 93 76 56 117 71 95 37 55 49 58 37 116 108 99 87 93 122 99 124 88 85 123 89 42 115 68 62 72 76 74 88 70 92 99 98 75 32 104 73 49 67 52 74 62 81 42 66 106 96 71 99 102 120 55 47 55 36 124 72 67 102 120 103 41 78 81 35 89 115 33 82 80 61 44 89 110 65 90 102 121 41 53 95 44 39 118 74 101 97 97 124 93 42 102 85 91 65 38 40 94 93 84 49 86 46 34 75 82 74 36 110 68 47 96 119 101 44 113 65 78 76 117 111 84 76 76 113 38 58 94 85 44 70 114 103 87 67 46 89 115 94 116 45 74 115 96 120 32 109 75 60 ];
+ref = [ref 123 118 57 113 119 95 116 63 73 123 96 125 54 43 126 81 91 35 103 120 88 74 124 74 104 73 100 70 53 93 114 72 46 88 40 83 115 103 42 48 110 58 101 95 114 98 82 99 60 126 92 79 98 92 88 58 121 57 81 83 88 43 77 90 93 74 101 59 108 74 74 101 43 38 71 71 71 77 51 108 98 71 33 51 51 93 118 114 38 98 93 60 84 80 51 50 44 96 81 91 59 54 109 109 33 98 61 63 43 76 73 87 45 54 49 104 109 96 111 121 98 82 74 124 105 103 120 74 122 112 106 125 56 100 114 40 82 114 92 68 72 120 65 64 46 125 77 72 53 63 41 112 96 44 36 97 70 113 103 96 49 83 70 86 34 97 83 38 103 41 37 125 95 107 111 114 60 74 36 34 79 43 120 81 61 88 92 66 122 71 72 49 103 49 67 94 98 53 77 49 ];
+ref = [ref 51 89 52 65 113 65 35 91 45 103 114 105 40 83 106 108 89 61 107 81 74 90 86 108 126 81 125 35 63 100 106 78 64 109 68 34 105 110 111 95 43 60 96 67 109 120 106 91 95 90 48 85 57 73 39 65 65 47 34 120 76 117 96 69 98 48 113 118 47 46 117 105 88 45 40 118 86 118 49 81 49 118 46 118 49 58 61 81 75 106 80 119 82 91 76 44 54 103 72 97 59 98 88 59 98 42 84 126 124 93 81 123 54 108 112 85 42 105 78 110 67 78 80 80 74 119 70 44 50 34 92 99 76 54 80 53 76 77 97 101 98 97 110 45 122 100 46 90 37 37 112 124 54 101 78 89 57 83 122 47 58 74 44 42 41 98 113 37 100 67 55 124 114 87 73 74 94 84 39 41 108 52 37 49 126 76 100 88 119 121 109 78 61 63 102 92 89 64 75 101 ];
+ref = [ref 53 93 86 62 123 42 32 71 108 107 46 109 105 52 58 38 89 109 53 78 126 106 73 90 46 63 98 86 109 92 92 72 90 88 100 73 121 58 37 81 72 99 45 82 90 117 88 66 63 120 106 81 100 93 59 50 52 67 84 62 70 84 98 80 89 35 121 47 105 121 91 49 68 122 100 40 124 94 36 55 76 79 81 110 107 81 81 75 41 51 56 47 93 86 56 57 121 62 121 113 53 49 90 109 33 53 92 123 126 32 36 83 48 59 75 94 92 72 87 107 123 53 119 100 56 42 52 103 92 97 75 89 43 61 46 37 104 75 99 94 34 111 68 75 100 77 101 94 63 96 33 116 117 40 103 79 89 96 86 78 124 77 92 93 97 90 93 125 39 121 57 90 34 101 88 58 115 120 104 89 35 75 63 33 40 87 96 46 117 73 113 58 109 104 98 90 87 104 118 80 ];
+ref = [ref 63 34 88 119 49 106 125 77 101 55 33 52 45 126 36 114 35 49 42 114 115 76 74 110 88 115 70 37 110 121 118 110 33 101 100 77 51 83 121 119 86 112 110 83 104 122 102 81 72 124 74 72 72 75 74 80 96 52 113 100 79 90 91 33 121 126 44 46 116 79 122 69 55 104 106 64 44 80 68 122 52 50 96 76 88 45 79 121 71 38 36 50 71 37 81 91 102 106 124 48 65 92 115 55 88 76 39 123 55 92 84 102 55 45 98 61 94 39 46 97 80 98 99 53 70 78 46 85 63 109 43 87 74 85 122 68 66 76 82 65 68 40 34 59 40 107 110 35 90 57 42 103 45 68 37 72 96 34 64 107 101 53 100 36 120 96 36 63 46 111 85 79 121 81 53 45 83 95 123 49 89 35 41 60 65 105 101 97 105 46 82 73 105 102 87 85 109 123 92 99 ];
+ref = [ref 117 84 106 33 43 68 34 123 47 76 119 91 108 104 91 34 51 52 84 122 85 39 94 97 56 120 43 88 73 104 35 98 60 117 89 45 118 120 72 85 92 120 74 35 60 119 55 110 54 63 91 95 118 88 54 43 121 109 38 43 101 53 65 32 118 73 69 115 124 123 87 81 38 80 74 95 69 122 115 48 91 89 53 93 61 107 33 105 123 92 104 39 52 96 94 102 39 51 98 89 103 102 100 121 38 50 107 89 113 73 79 93 98 57 123 92 50 63 99 91 43 35 55 98 43 101 32 110 83 78 33 103 81 92 67 105 124 56 73 62 96 38 119 63 45 36 103 47 59 82 72 120 90 56 114 65 66 61 81 62 124 100 89 32 98 116 83 54 91 35 40 109 102 126 35 57 81 70 44 54 82 32 44 115 88 115 105 46 89 65 63 62 37 36 114 83 34 46 45 112 ];
+ref = [ref 67 96 44 123 120 116 32 102 86 80 60 57 40 46 103 42 46 78 109 39 36 76 106 96 88 123 103 106 37 45 68 85 98 125 49 79 60 74 125 105 100 99 83 105 33 47 71 83 55 123 70 125 75 59 55 65 45 93 102 55 78 36 78 77 124 42 113 42 83 91 110 58 74 106 67 73 111 119 60 46 120 92 108 32 116 106 58 87 90 67 114 110 108 41 57 94 116 74 51 61 87 49 54 82 109 96 38 114 119 65 82 121 84 36 61 115 91 48 81 98 78 83 57 55 110 108 35 84 125 60 57 66 78 43 126 59 116 33 116 99 102 103 107 120 59 97 115 96 106 122 103 100 122 119 112 117 78 75 75 81 113 109 68 119 70 67 87 46 60 37 101 79 115 76 123 64 94 51 98 73 48 71 105 88 89 70 70 112 79 52 97 119 80 93 93 109 122 58 110 96 ];
+ref = [ref 99 81 76 107 124 93 74 99 60 96 43 55 110 57 75 60 51 126 116 58 65 79 71 64 66 117 33 77 86 81 38 96 70 103 94 46 64 58 82 68 108 62 92 47 106 111 87 78 113 65 49 36 47 126 54 72 63 106 94 85 59 96 57 55 107 109 33 65 95 65 72 102 108 56 44 92 84 58 119 34 62 79 116 98 105 115 124 100 95 86 112 53 78 57 91 37 39 125 54 67 56 57 67 115 33 104 49 103 101 75 122 39 105 48 102 88 105 101 51 53 111 59 52 82 45 81 48 57 102 124 83 97 64 65 72 42 98 82 102 119 73 106 32 45 86 54 35 77 109 91 112 126 41 93 81 83 120 73 118 109 58 105 88 69 36 98 56 103 123 71 101 82 115 96 123 82 90 109 85 53 105 123 120 61 53 103 95 85 119 106 108 58 99 44 52 80 68 35 92 115 ];
+ref = [ref 76 48 36 119 90 40 56 116 96 80 100 120 50 69 63 33 114 36 70 36 40 59 74 37 69 88 60 49 109 122 36 59 41 106 86 59 42 87 98 39 53 48 125 54 95 85 114 65 33 35 47 96 71 95 82 53 83 61 98 38 121 46 110 74 121 97 82 40 115 76 68 45 62 32 94 35 68 122 52 126 50 53 91 39 112 39 123 91 37 60 56 90 102 40 82 92 46 86 106 51 119 84 75 97 32 34 121 57 101 72 51 95 100 109 67 98 104 53 112 101 45 79 99 78 121 81 107 43 63 42 90 94 113 114 40 56 101 117 56 61 126 126 35 101 93 102 65 66 66 115 34 88 44 60 120 122 113 93 70 79 94 60 63 45 55 41 46 47 58 59 125 60 39 57 99 88 112 61 65 32 85 56 89 98 44 117 112 67 76 122 121 33 81 100 67 33 86 120 46 59 ];
+ref = [ref 100 57 59 35 72 41 81 126 99 54 62 125 109 86 117 119 119 33 107 88 120 103 83 47 123 63 66 45 87 35 123 66 114 82 82 123 115 113 103 34 38 65 101 94 66 83 79 49 93 83 90 90 60 75 56 45 88 54 77 57 43 48 97 58 108 90 98 88 103 33 61 51 93 86 94 82 79 46 93 75 99 83 33 126 99 72 84 99 62 36 114 46 66 101 63 101 113 101 67 37 115 61 98 47 102 93 41 93 56 52 108 67 82 39 108 85 103 97 70 107 87 40 72 52 93 78 99 126 93 111 107 45 112 47 114 68 84 48 114 85 38 59 81 43 78 85 67 119 65 45 79 83 62 61 79 38 83 107 37 37 94 52 72 65 49 105 74 89 88 59 99 81 114 71 69 34 95 108 32 57 103 93 41 44 82 32 35 70 91 117 121 106 104 58 89 84 107 69 104 59 ];
+ref = [ref 105 102 44 59 44 41 83 66 120 86 78 119 43 94 122 34 82 51 95 120 76 114 108 80 66 121 101 89 57 60 61 93 96 84 64 45 75 52 121 122 91 125 77 49 47 92 111 33 104 117 48 81 60 78 114 97 73 44 79 84 80 125 36 113 70 42 115 80 126 47 69 113 99 58 55 32 67 40 56 88 70 123 118 77 122 107 98 116 55 125 100 112 51 125 36 107 90 116 77 107 69 110 70 119 80 74 46 118 65 71 98 52 70 118 97 35 71 93 35 115 119 36 42 41 91 121 35 116 49 74 82 110 102 116 83 76 117 58 77 95 99 54 36 116 72 52 77 116 96 116 62 44 92 57 100 117 54 64 55 88 36 54 103 77 109 121 110 99 40 60 33 66 34 98 84 93 47 101 95 37 53 83 87 58 111 125 69 40 94 74 51 121 88 88 84 32 80 122 85 74 ];
+ref = [ref 108 33 122 40 73 45 33 60 83 72 47 102 106 90 113 41 118 88 99 49 76 119 113 96 64 81 84 75 79 74 53 70 49 40 92 41 58 108 73 40 65 57 118 77 100 116 38 74 119 66 38 53 63 93 76 82 46 101 103 105 36 47 105 116 119 119 79 87 60 118 120 95 104 86 72 61 98 69 79 89 112 111 59 102 121 54 37 35 88 72 123 41 42 64 122 35 56 34 124 115 124 94 48 123 50 67 92 61 37 113 83 101 116 69 53 50 60 98 84 81 36 62 107 95 79 78 43 74 48 115 79 63 69 106 120 60 44 51 103 35 59 101 49 93 49 75 126 80 113 113 65 89 108 74 119 120 81 114 38 66 64 87 79 84 57 119 62 78 61 34 76 67 67 65 105 95 95 102 51 39 123 121 104 112 123 50 126 58 75 62 57 56 72 118 85 67 70 78 34 48 ];
+ref = [ref 108 84 51 61 48 84 74 120 68 56 104 114 42 110 111 33 65 43 93 123 88 122 47 123 40 59 75 45 73 78 58 37 81 91 94 44 98 76 115 89 110 63 100 125 91 80 121 68 47 126 65 94 53 35 122 48 55 38 75 107 126 104 111 75 82 37 64 75 67 108 95 94 105 65 97 68 36 57 113 96 99 89 56 51 32 113 61 86 50 105 74 48 126 48 96 104 116 84 83 108 53 54 39 87 54 83 56 126 120 126 91 45 112 109 113 32 70 105 92 53 115 93 64 51 86 52 98 50 55 35 53 122 43 62 73 83 106 74 36 119 76 56 108 40 75 69 101 83 77 44 60 95 33 42 57 58 125 91 39 67 123 38 60 106 106 85 106 83 33 80 98 56 72 80 86 99 100 39 33 92 96 79 64 58 77 89 46 77 51 66 110 65 32 97 114 126 32 119 59 36 ];
+ref = [ref 81 59 82 110 118 33 51 63 71 69 34 105 45 99 46 57 71 61 122 37 83 86 108 66 63 64 116 55 85 80 114 89 103 105 48 79 78 123 71 116 115 100 89 47 110 55 103 34 94 54 65 98 110 124 121 32 42 57 104 51 61 104 86 118 88 71 105 83 43 54 36 119 47 47 81 118 56 69 112 36 117 49 41 43 103 53 41 58 68 113 61 32 39 101 51 110 112 46 54 84 75 78 93 94 109 86 102 116 37 101 90 50 48 43 109 68 98 93 123 113 85 87 102 91 92 119 95 121 51 50 38 64 116 102 68 109 104 74 95 102 42 76 59 91 32 67 74 81 99 32 86 68 66 117 33 95 76 52 83 34 61 112 52 68 34 61 110 61 114 126 49 84 82 37 64 124 124 59 40 124 38 90 36 121 94 94 42 33 100 60 71 33 66 33 73 66 124 65 44 102 ];
+ref = [ref 96 123 115 97 49 93 88 51 117 95 94 57 113 77 106 80 91 79 100 124 115 56 75 121 90 109 111 46 116 94 33 115 101 107 111 56 44 110 113 102 72 95 104 80 50 109 116 92 119 104 121 58 88 94 102 63 83 108 108 119 74 36 49 102 36 71 101 108 85 53 82 62 56 82 73 50 81 83 47 44 46 73 60 78 59 98 103 90 118 67 45 98 88 38 82 111 60 69 81 90 87 69 100 33 107 101 50 95 76 52 52 116 58 85 102 61 117 33 95 121 73 103 87 34 45 62 102 121 40 104 64 46 91 79 60 33 69 122 109 39 106 116 48 105 68 92 38 69 70 70 118 35 75 42 86 45 98 119 111 32 111 49 38 54 94 69 80 93 34 77 77 118 118 70 83 97 69 89 54 118 79 56 69 80 36 64 66 46 74 110 116 92 115 103 36 62 122 72 79 38 ];
+ref = [ref 91 75 100 123 83 96 94 89 48 99 50 96 125 124 32 38 60 122 68 108 50 45 109 100 51 51 84 70 105 87 69 57 101 85 89 126 114 67 54 111 71 34 79 39 67 122 110 63 124 84 122 57 63 58 69 86 58 98 63 54 79 82 65 94 116 75 107 103 109 81 85 58 44 110 77 77 54 99 92 81 54 83 55 70 39 53 50 56 84 35 115 32 105 110 36 34 68 103 115 97 121 90 104 115 107 83 59 80 95 76 45 91 123 66 91 46 85 83 114 76 45 78 118 59 33 41 53 44 92 103 77 38 65 92 102 37 42 104 62 102 87 117 64 89 122 118 47 70 58 82 58 79 39 124 78 98 124 71 100 81 120 90 97 102 53 75 49 69 78 91 95 64 40 65 109 126 103 82 90 117 59 39 34 113 108 116 56 85 97 85 68 43 119 69 61 63 72 62 48 51 ];
+ref = [ref 34 60 118 36 95 53 38 83 77 56 84 98 109 103 112 117 50 65 78 69 73 88 92 125 70 73 68 40 98 89 123 75 64 123 111 45 79 114 102 55 43 82 117 97 98 80 62 44 109 34 48 74 41 49 117 112 108 98 79 42 119 93 62 82 110 102 98 106 83 83 32 76 118 45 95 83 43 96 75 87 107 60 115 121 83 66 87 107 33 69 76 62 124 122 125 65 103 50 54 52 106 121 96 68 48 109 46 112 47 85 99 106 112 51 102 75 68 123 125 101 122 86 101 101 95 68 106 61 109 106 51 78 49 111 93 85 56 110 52 94 102 55 107 110 118 84 42 33 106 80 106 41 68 32 40 74 55 99 107 89 85 114 114 32 119 49 119 115 118 64 39 44 67 46 111 35 123 116 75 56 92 108 72 50 83 37 56 40 33 53 50 66 49 91 113 79 50 73 37 75 ];
+ref = [ref 100 114 53 96 51 101 77 100 79 93 112 65 106 118 35 112 126 108 96 108 76 95 47 48 54 92 122 121 69 57 52 47 38 58 109 52 122 110 58 85 38 35 96 33 87 119 64 102 61 45 51 105 91 52 68 71 102 57 63 110 109 81 77 114 39 35 48 109 44 61 123 38 86 60 35 50 88 36 35 123 124 55 122 61 108 107 107 123 52 102 100 69 103 84 122 74 45 32 107 83 44 63 46 90 89 85 57 121 81 81 47 60 35 111 44 70 89 75 102 101 32 40 124 57 44 110 38 77 67 69 71 100 93 107 104 88 81 38 48 120 57 110 126 104 42 120 34 120 65 37 72 84 92 98 85 120 78 118 89 97 98 66 94 59 113 82 124 53 85 43 77 42 73 99 114 106 37 72 113 54 105 36 115 121 73 103 81 104 85 93 32 41 112 96 100 95 36 93 116 64 ];
+ref = [ref 98 56 112 39 92 87 83 100 35 33 120 70 39 79 36 47 48 59 61 109 46 111 68 116 122 44 86 97 124 85 98 113 91 50 49 81 78 93 79 122 51 40 83 122 58 58 81 49 124 51 40 41 89 34 104 36 44 119 56 126 91 55 89 63 60 36 81 74 64 71 108 68 107 116 56 48 32 81 69 120 54 103 118 104 94 108 45 89 87 108 99 84 104 47 43 41 100 57 50 72 92 126 115 75 118 94 122 112 70 40 95 74 112 39 68 97 108 56 95 107 98 60 93 97 112 67 63 82 66 116 85 89 44 98 108 88 85 39 44 96 97 79 109 65 65 55 52 121 124 114 91 97 103 84 32 38 100 65 67 110 95 74 32 113 87 81 88 49 84 96 40 40 94 103 123 49 82 56 50 103 123 90 97 111 80 59 68 65 101 126 116 126 54 52 82 83 72 113 33 120 ];
+ref = [ref 88 80 67 102 117 90 49 37 109 86 43 54 118 80 110 64 75 77 45 105 85 60 108 68 49 48 93 78 117 40 56 111 45 104 125 66 37 111 67 48 43 97 42 97 96 61 81 116 125 33 72 63 79 57 122 59 38 54 103 90 41 74 59 72 86 111 123 65 88 113 55 102 88 44 116 98 55 102 96 64 39 42 112 120 76 75 39 52 38 56 116 95 80 104 125 103 43 40 102 97 104 67 34 91 104 81 76 98 33 104 111 52 45 111 44 45 73 106 101 48 97 50 35 100 80 72 119 80 33 50 103 89 39 71 42 76 80 43 104 68 41 77 34 91 48 46 68 124 91 121 76 92 98 48 91 100 60 56 41 126 81 51 117 84 114 62 73 84 82 69 90 93 81 34 118 60 40 57 64 43 37 40 123 82 96 97 103 105 109 95 39 51 38 41 63 120 77 51 126 41 ];
+ref = [ref 89 35 107 58 79 42 101 123 83 74 57 64 122 48 76 114 101 87 83 84 39 87 51 97 64 45 123 50 76 59 111 66 66 37 65 50 76 83 65 102 96 38 106 61 75 74 43 78 104 65 45 67 80 107 62 90 77 94 63 86 76 102 61 38 108 63 123 84 60 67 47 36 84 55 63 78 47 102 91 65 37 40 34 72 100 125 66 86 46 95 54 56 34 72 111 102 68 49 96 51 58 42 48 70 73 91 95 92 32 111 109 121 63 104 108 99 51 50 84 87 113 121 103 57 47 44 114 63 110 72 83 44 53 74 111 103 98 101 119 49 125 88 87 60 36 56 63 36 87 38 85 111 126 114 116 90 116 95 65 102 75 76 102 60 63 44 43 104 102 84 92 63 49 53 88 43 63 86 78 110 98 63 40 96 50 101 102 57 66 76 73 92 64 115 91 66 56 61 65 88 ];
+ref = [ref 68 95 75 33 96 63 77 76 32 118 32 114 52 56 81 55 75 119 57 73 46 45 98 47 118 124 42 110 115 37 52 89 60 85 109 85 101 35 108 86 62 118 47 125 54 55 35 71 83 70 79 82 32 67 80 125 66 116 39 39 55 64 86 86 126 79 46 51 110 119 76 54 111 95 79 93 53 72 93 69 40 50 77 86 103 117 34 46 88 98 48 117 61 46 80 115 106 89 55 64 37 126 115 63 113 36 59 68 39 68 116 92 40 44 78 51 109 108 60 66 118 124 83 108 103 47 37 45 55 81 33 90 62 83 88 116 42 95 45 57 77 111 57 64 33 83 47 45 102 111 122 36 48 72 120 111 92 73 52 112 106 52 77 98 113 33 103 62 34 57 63 42 60 89 72 60 65 61 110 61 62 46 35 104 116 122 111 58 47 104 99 76 94 70 45 35 91 100 114 47 ];
+ref = [ref 49 93 56 108 79 61 43 70 106 109 92 64 115 119 75 81 89 108 120 103 51 122 121 79 32 44 79 41 32 88 85 34 65 37 87 61 110 80 107 68 99 54 38 105 33 83 79 67 58 45 84 52 35 110 102 32 74 121 46 102 62 103 86 36 101 48 87 112 48 87 41 57 81 101 45 89 79 88 34 119 125 97 79 73 99 49 59 47 96 50 109 36 99 50 94 75 109 75 47 93 99 121 116 42 43 36 37 88 106 71 101 41 82 111 114 58 100 65 111 50 85 34 35 54 110 55 115 109 70 49 124 34 91 38 56 61 57 117 74 115 81 79 35 115 80 101 52 79 66 112 90 69 58 70 112 37 113 41 101 56 55 103 63 121 98 109 124 67 44 115 47 63 97 67 42 58 48 126 99 65 52 81 84 80 123 115 38 60 71 44 94 68 112 105 53 114 71 95 33 47 ];
+ref = [ref 93 42 94 56 111 72 74 50 107 52 94 100 75 111 43 47 71 65 86 105 98 66 66 50 118 65 34 48 32 43 80 79 44 63 103 110 110 49 91 95 108 53 34 35 56 101 35 102 52 88 45 60 82 95 87 103 118 51 63 111 121 35 97 81 97 118 56 110 108 79 92 116 71 44 62 99 33 74 43 50 35 108 69 67 99 40 93 105 63 122 90 92 68 54 62 44 112 44 107 48 87 48 64 96 45 32 74 70 97 36 119 75 59 112 52 96 52 119 74 120 37 50 111 94 43 119 49 60 125 73 78 101 50 89 85 93 92 81 119 104 113 115 90 92 117 86 57 56 101 122 51 51 67 116 124 66 69 73 119 77 38 35 118 119 36 103 54 116 80 42 41 126 37 100 83 113 88 113 39 102 123 66 101 114 45 71 79 113 60 112 33 114 37 69 113 86 43 44 51 65 ];
+ref = [ref 77 40 105 122 102 118 40 121 49 93 41 121 66 119 68 82 90 115 102 111 125 103 45 104 96 37 75 88 104 55 47 100 74 64 99 35 79 40 59 97 65 99 69 100 92 103 79 110 67 58 54 91 73 37 84 99 122 73 125 120 80 117 45 126 125 124 90 85 120 123 87 33 79 82 64 49 88 63 96 42 120 109 116 122 51 119 125 117 116 116 37 63 90 32 48 79 92 78 125 33 108 95 68 90 39 106 117 36 110 55 69 117 78 126 54 110 80 92 77 51 45 99 93 59 83 63 79 103 101 120 78 99 112 54 119 89 32 119 118 74 99 37 78 55 60 126 75 44 66 102 104 79 100 83 57 119 40 94 125 91 33 85 46 68 108 79 100 92 76 79 123 112 58 112 35 110 54 106 73 63 47 125 85 98 93 89 44 35 87 118 37 68 95 86 35 49 44 54 67 121 ];
+ref = [ref 117 79 60 78 69 40 37 41 120 76 93 112 52 89 73 33 104 63 77 32 97 101 108 39 56 52 113 84 123 102 38 119 67 66 59 106 101 126 88 33 44 74 42 89 97 72 89 117 68 115 105 119 52 119 96 107 37 34 121 85 106 80 65 91 37 43 121 64 47 57 94 117 90 101 38 54 87 55 55 55 49 34 47 83 91 74 61 49 62 77 53 45 54 83 83 108 49 46 123 34 115 71 86 114 65 44 110 76 43 43 102 65 110 120 106 83 82 61 120 121 110 100 91 95 101 88 82 107 34 42 114 72 122 59 41 66 55 88 58 42 42 110 84 32 121 58 60 81 108 111 120 85 75 101 57 82 50 45 51 35 67 73 96 86 92 64 125 61 33 65 88 53 100 59 115 67 109 63 61 57 105 124 126 120 37 81 59 41 81 57 45 75 43 124 88 123 36 126 67 62 ];
+ref = [ref 104 63 87 37 61 52 125 40 63 61 35 120 126 125 67 65 58 115 71 84 63 52 37 63 55 61 58 107 95 109 86 86 91 56 58 120 88 87 73 37 103 97 105 59 43 44 107 64 104 35 38 47 60 125 77 50 121 47 50 91 50 108 95 98 45 41 40 125 114 79 106 78 98 114 97 32 60 97 70 104 53 115 68 79 103 76 48 43 41 70 75 47 47 68 79 61 103 47 57 123 92 104 66 93 120 95 69 126 104 37 72 116 122 49 86 126 34 96 104 36 34 57 102 77 32 86 84 93 110 85 121 100 50 110 72 110 72 64 114 96 112 51 112 100 48 65 61 73 120 80 46 84 75 42 108 65 109 119 42 108 36 62 67 111 98 86 67 39 46 59 39 80 54 36 104 55 113 40 82 118 32 94 45 89 105 65 120 40 87 82 71 32 54 110 116 124 49 68 75 40 ];
+ref = [ref 51 58 126 57 100 66 112 121 66 94 38 89 118 121 107 105 91 38 37 73 42 111 35 86 74 123 125 58 33 126 71 112 91 78 70 91 33 84 67 50 80 42 111 36 87 116 34 74 92 88 117 123 70 85 52 119 95 84 38 85 61 102 94 82 83 125 120 82 51 116 71 40 84 34 113 56 86 100 125 75 87 120 88 81 109 67 82 46 92 82 78 83 111 86 71 38 38 122 126 111 58 97 94 121 79 53 102 57 43 76 90 104 87 44 74 52 78 100 70 109 65 66 37 108 113 67 67 121 76 79 120 105 50 121 52 61 69 36 40 90 64 100 122 83 120 66 49 74 104 62 36 46 101 55 121 121 70 44 59 106 41 44 38 94 38 115 56 103 124 86 62 52 56 61 100 57 102 48 63 73 103 124 46 84 110 82 42 54 82 72 43 36 86 105 116 71 119 123 82 123 ];
+ref = [ref 45 68 73 43 120 95 89 58 60 55 33 111 115 113 40 82 60 116 125 98 37 96 45 87 109 86 56 62 83 113 97 107 123 62 51 104 66 48 108 61 63 70 123 114 94 53 108 112 77 108 104 82 51 107 79 55 52 42 98 94 115 104 86 86 77 102 54 124 83 46 59 76 111 50 119 73 68 95 56 48 83 103 123 125 100 84 109 70 101 77 95 81 87 109 53 59 116 103 85 88 58 112 61 57 117 87 54 112 41 87 86 121 72 93 85 97 124 68 55 82 38 106 32 77 36 107 125 42 101 35 36 111 48 35 93 32 38 61 118 83 68 68 91 95 105 33 68 56 78 114 84 91 111 77 54 83 91 115 40 109 64 86 61 43 62 95 45 53 99 68 99 68 83 111 80 81 90 83 42 79 75 95 91 103 108 37 45 110 64 103 91 74 58 120 80 112 54 37 112 90 ];
+ref = [ref 118 46 117 117 85 46 60 64 44 49 83 107 93 46 37 69 34 100 52 90 101 105 107 123 42 84 89 82 76 52 84 111 72 86 120 46 71 53 101 117 42 99 70 49 65 75 39 126 47 60 58 42 58 71 87 41 44 78 76 116 71 93 124 118 36 33 103 92 54 86 55 90 82 118 76 82 103 57 96 50 95 48 38 81 116 109 109 48 74 58 82 58 115 61 46 76 40 61 42 89 103 77 111 76 102 33 58 70 51 124 33 64 44 74 120 119 124 95 75 51 120 46 57 41 106 37 99 89 69 66 76 88 90 108 67 78 117 32 37 43 39 89 122 96 80 46 80 69 91 39 78 113 91 65 44 88 90 53 51 86 56 111 122 65 37 35 93 60 118 35 60 68 75 43 32 108 78 96 88 125 62 114 113 106 33 121 71 85 42 99 60 39 126 91 106 114 61 123 116 65 ];
+ref = [ref 93 99 80 51 62 75 60 105 106 48 110 113 107 110 45 103 97 90 85 74 89 48 50 69 75 58 113 117 75 86 44 44 98 83 97 66 102 126 37 82 83 62 99 68 71 68 49 50 116 123 67 68 84 106 96 43 36 50 111 86 38 99 115 38 65 54 121 39 76 99 32 124 89 123 71 64 97 55 79 82 79 110 91 91 116 35 90 106 113 109 55 77 42 104 96 79 48 44 100 63 76 101 62 57 39 40 114 37 61 74 94 117 112 38 97 116 73 43 120 123 51 89 52 112 110 53 40 53 103 80 65 67 126 101 81 119 85 105 93 98 64 66 64 95 32 72 75 42 44 65 35 68 54 32 49 53 108 58 76 51 36 40 47 115 82 81 117 34 99 73 53 77 119 49 85 70 115 110 63 45 70 54 119 79 44 42 52 51 123 55 41 102 123 54 104 53 57 87 116 57 ];
+ref = [ref 88 124 119 34 41 57 67 83 106 96 81 103 59 78 71 33 45 73 61 92 113 36 56 120 75 86 43 78 73 114 124 42 57 61 54 93 54 125 109 82 110 104 62 98 102 103 61 115 64 65 63 126 106 81 86 87 118 45 91 84 54 69 81 102 45 108 121 106 77 81 68 106 106 126 109 39 92 52 89 61 60 87 119 45 57 105 59 54 38 32 37 118 85 49 48 54 89 35 82 62 107 35 97 119 105 108 80 91 32 124 91 51 55 70 33 53 62 69 114 115 42 78 78 88 64 34 47 72 76 76 66 44 49 116 92 121 70 77 66 75 124 63 51 89 65 120 67 39 42 97 79 92 73 99 38 110 97 82 47 35 88 81 49 74 63 47 112 99 101 125 104 98 116 101 104 87 74 32 96 89 64 100 117 50 84 116 115 103 93 33 44 73 64 73 80 79 78 57 82 57 ];
+ref = [ref 101 110 119 78 46 100 85 40 105 61 98 109 44 83 35 44 87 112 75 115 108 99 86 105 63 94 42 120 107 115 91 84 80 71 54 123 60 78 93 67 60 33 123 105 85 32 50 39 125 63 82 94 64 102 112 95 114 123 82 78 107 116 76 115 39 68 124 88 102 81 43 51 33 87 81 49 97 118 116 105 111 81 74 104 47 79 33 56 99 35 102 83 77 103 84 114 116 78 33 74 102 99 43 101 103 52 53 117 55 103 50 114 64 68 101 76 62 105 82 116 89 121 95 115 73 105 33 42 107 75 118 117 38 93 124 54 32 73 43 41 111 95 115 96 119 49 61 101 85 53 84 38 39 115 34 52 82 117 41 59 126 65 122 48 116 72 49 65 65 56 59 69 114 42 118 100 76 108 126 73 47 92 50 41 124 121 113 40 105 68 62 40 54 122 86 68 69 80 90 59 ];
+ref = [ref 107 84 114 81 106 100 116 46 59 61 85 56 116 84 54 32 61 48 85 75 90 118 100 73 33 91 106 70 79 45 67 78 92 121 77 33 52 107 99 121 42 57 33 101 57 94 116 40 112 80 80 93 80 93 100 93 41 49 119 54 74 121 34 64 76 122 112 83 73 39 58 42 104 59 86 123 119 81 126 108 126 45 41 38 115 109 42 114 33 62 72 48 75 116 74 55 87 95 113 40 89 47 69 79 39 70 105 79 60 44 52 58 73 99 87 45 60 39 93 70 117 121 32 78 45 81 125 100 71 90 100 113 68 39 92 105 60 85 61 111 67 108 104 40 126 119 48 46 46 77 102 65 49 42 93 125 46 89 63 34 82 52 98 39 68 92 84 112 104 37 125 46 110 107 35 105 69 125 121 56 79 56 107 43 107 115 53 117 81 122 89 95 93 67 113 69 122 116 99 86 ];
+ref = [ref 44 35 69 91 46 62 110 83 44 78 38 62 68 44 90 60 45 104 113 112 44 100 57 70 46 100 62 64 101 62 45 121 110 113 102 124 57 69 75 100 53 45 113 42 63 82 77 63 87 37 107 36 34 112 44 58 88 124 99 53 94 57 90 65 40 98 66 88 124 121 73 70 52 111 36 44 66 54 59 86 97 110 53 82 114 33 57 36 108 119 32 49 94 119 61 87 48 118 72 118 36 100 40 114 116 97 118 117 45 124 63 49 126 106 74 103 32 98 32 91 121 81 79 98 108 89 60 102 51 87 55 68 40 89 98 47 61 69 100 112 94 78 47 68 91 95 35 37 121 103 105 33 41 94 61 45 54 107 77 119 48 118 115 91 33 94 84 72 92 72 123 97 33 80 45 84 54 101 71 94 65 42 45 46 118 34 126 117 69 45 56 114 84 111 61 56 66 82 93 78 ];
+ref = [ref 48 101 109 69 109 51 124 91 123 88 60 72 67 125 88 60 97 89 84 79 47 72 98 60 41 66 109 111 44 96 47 41 49 49 83 85 86 77 34 72 100 54 94 46 87 53 83 63 88 62 100 57 55 78 77 58 60 50 41 81 85 112 92 75 36 77 38 85 108 113 88 57 62 68 83 96 51 46 39 85 62 57 86 37 77 33 51 54 117 43 76 112 66 76 123 74 39 118 70 118 38 51 113 77 44 120 64 75 33 82 32 81 101 45 63 78 68 69 93 39 44 87 105 50 116 59 124 33 96 80 72 79 101 118 32 47 81 121 125 38 71 33 82 47 47 53 98 52 90 66 56 108 40 46 80 69 111 113 123 74 58 33 62 37 98 35 112 121 99 82 84 34 57 106 57 45 87 83 51 100 98 104 91 69 101 36 86 126 106 61 101 94 78 65 78 72 107 116 92 123 ];
+ref = [ref 85 63 111 91 121 93 118 72 68 91 40 51 92 34 54 42 35 88 51 98 62 126 87 65 38 113 46 42 50 80 77 102 103 121 58 45 126 56 53 36 44 74 64 119 110 114 44 35 102 113 92 76 125 65 116 68 44 119 54 89 75 97 110 71 105 118 118 116 43 114 100 46 116 120 45 92 105 94 122 44 67 126 112 105 110 101 77 102 47 87 49 35 91 107 92 109 72 90 91 110 110 50 85 48 81 89 79 84 55 120 102 70 102 123 38 77 106 66 99 119 55 68 118 83 119 47 90 112 45 111 77 117 55 109 54 67 78 118 61 61 45 98 57 100 102 112 69 123 87 61 71 112 41 50 97 32 78 66 36 105 102 43 60 123 97 88 78 72 103 91 86 78 101 109 36 95 96 88 46 112 89 89 65 47 69 67 55 78 108 120 106 111 35 107 65 75 73 106 118 70 ];
+ref = [ref 41 115 39 50 107 51 115 125 105 66 67 111 46 58 91 46 109 111 101 33 36 32 111 98 116 122 61 92 49 41 111 111 87 68 52 44 123 39 44 51 69 51 123 63 105 97 97 117 67 73 119 44 45 76 39 56 42 117 54 89 101 67 32 40 68 50 54 103 126 34 73 102 56 79 38 45 117 93 52 52 84 64 57 98 114 123 81 60 103 95 124 109 68 62 63 119 104 93 99 115 67 49 59 55 79 88 41 110 88 116 80 101 95 96 52 86 81 70 106 80 69 124 67 72 78 108 88 60 79 125 67 75 97 47 115 68 93 54 119 53 91 62 120 102 32 40 69 74 96 70 41 59 93 52 42 47 108 54 48 66 69 121 45 101 66 40 124 111 76 60 102 100 88 92 106 59 54 99 125 86 85 42 75 124 104 124 59 125 121 79 97 101 52 48 92 86 58 71 126 115 ];
+ref = [ref 104 42 49 80 78 100 47 119 90 125 126 100 73 40 72 118 71 77 83 53 90 122 107 115 100 92 100 53 91 117 34 124 122 56 122 97 44 65 65 99 74 112 109 124 91 80 124 106 85 96 33 91 37 126 97 118 49 98 99 50 95 56 55 41 102 122 110 67 50 103 46 125 58 110 81 98 92 68 121 118 91 47 108 104 45 99 123 66 122 64 75 87 108 125 41 35 70 102 49 85 42 75 102 60 71 78 82 75 104 47 102 105 81 100 63 73 98 33 36 74 79 32 44 82 77 124 118 66 59 122 102 46 70 122 80 40 47 109 36 37 118 66 77 83 49 112 41 70 87 35 37 59 81 83 126 43 70 47 66 77 116 72 37 83 40 97 63 83 70 114 108 79 116 85 62 103 116 102 73 36 118 109 51 87 83 109 101 70 90 35 63 54 43 118 39 80 70 115 120 61 ];
+ref = [ref 112 72 89 43 111 65 75 33 36 64 86 79 33 61 89 62 79 72 108 116 116 52 81 100 50 112 74 91 86 90 94 55 93 120 48 89 56 103 42 122 112 113 104 87 87 106 101 117 125 39 72 41 122 103 86 85 95 105 124 123 33 108 53 37 97 67 104 49 35 83 56 36 59 57 100 56 87 71 43 56 58 35 80 91 39 96 122 66 46 38 102 61 80 73 37 35 59 81 48 102 48 39 68 106 48 69 38 120 57 61 110 72 46 55 52 62 73 46 53 104 39 70 72 99 106 91 79 90 76 126 71 40 75 126 116 101 66 118 47 45 34 104 43 44 78 88 83 113 111 113 51 84 55 79 63 81 43 35 85 36 96 110 109 40 116 65 87 111 43 113 110 56 61 116 119 109 84 103 72 81 59 40 75 70 69 88 77 98 66 34 97 121 51 105 113 40 126 107 113 98 ];
+ref = [ref 92 56 89 75 67 80 75 90 52 49 126 65 116 34 96 100 76 46 79 107 120 55 122 114 111 39 59 34 115 38 112 40 89 41 106 102 48 75 94 117 99 105 54 74 81 95 70 32 35 67 89 121 53 117 58 108 65 44 43 123 58 82 64 69 45 70 35 55 122 34 111 95 71 86 108 102 124 126 91 74 65 121 64 101 39 71 47 104 53 73 113 60 53 38 101 67 87 108 109 86 40 126 35 78 48 50 70 113 102 110 100 34 82 78 68 35 85 124 61 40 44 81 82 62 105 124 86 103 95 40 56 72 89 92 94 70 89 62 40 74 59 112 61 97 69 69 45 96 111 49 114 42 99 50 40 82 65 59 58 49 98 54 34 53 117 69 111 60 118 114 59 90 41 59 70 53 74 52 72 37 73 107 86 65 43 98 80 53 42 35 74 35 124 82 83 44 49 85 34 56 ];
+ref = [ref 107 51 104 112 36 120 79 45 85 82 114 94 73 80 69 43 112 52 59 119 123 117 56 87 52 43 44 120 44 85 63 63 105 42 43 123 90 92 119 50 94 66 79 84 53 110 48 96 52 59 95 32 91 120 79 122 65 86 93 68 55 53 40 68 94 105 76 93 72 48 46 123 50 33 124 88 39 126 106 106 64 88 51 53 57 85 100 79 46 122 126 74 69 103 48 60 68 73 78 32 93 100 76 43 101 83 125 114 59 120 51 105 94 89 41 70 53 96 124 126 67 121 36 120 40 92 85 57 33 55 95 88 96 81 69 96 39 84 69 96 54 68 49 38 112 90 119 126 66 36 99 47 96 67 82 37 122 49 90 73 45 86 38 85 97 58 91 118 101 100 78 104 115 122 104 54 75 96 124 115 73 102 55 38 125 116 66 69 120 47 85 91 73 92 36 62 81 101 100 64 ];
+ref = [ref 105 84 117 45 54 68 74 68 116 117 42 126 35 33 66 114 106 121 106 108 91 117 113 78 86 94 96 47 65 113 48 68 43 123 106 46 60 99 49 51 34 89 61 51 101 35 79 67 99 126 43 93 73 83 90 87 57 43 42 83 106 68 72 124 52 33 86 43 124 97 33 58 51 114 75 124 91 46 42 123 47 37 56 34 112 112 112 34 112 105 80 60 93 117 44 118 33 77 125 51 65 42 83 44 125 34 41 62 44 37 86 74 51 60 100 69 72 36 125 33 103 91 40 75 57 46 66 53 83 94 92 117 37 60 33 70 45 70 63 88 55 70 54 38 70 50 84 38 37 55 38 117 92 97 92 34 76 45 45 48 91 115 119 95 124 88 66 117 68 36 88 74 125 66 42 88 38 87 95 45 112 125 53 51 77 101 40 70 119 58 113 62 53 66 75 62 126 32 93 99 ];
+ref = [ref 76 105 101 98 59 90 91 86 66 65 48 62 57 50 111 38 45 109 102 98 69 59 35 52 125 100 108 71 48 106 92 46 124 48 114 69 41 60 32 78 110 126 33 51 32 73 126 103 38 105 71 103 53 64 122 51 66 108 111 77 112 54 103 116 67 112 81 101 35 65 108 64 107 106 94 72 125 80 94 84 69 79 49 32 99 109 94 102 119 55 50 55 53 70 38 109 117 98 93 49 34 115 126 124 52 114 42 50 41 55 37 98 44 52 54 39 106 59 110 122 59 63 86 94 120 36 102 41 95 76 109 78 96 116 51 105 62 121 118 110 53 110 117 103 113 77 49 56 87 49 123 94 54 77 39 124 33 74 81 32 83 53 66 114 91 34 85 55 102 110 85 86 114 51 94 119 72 55 78 87 57 95 81 81 71 46 54 83 117 77 93 119 62 50 98 38 78 94 95 121 ];
+ref = [ref 81 96 110 77 125 125 105 121 50 92 68 121 98 49 63 115 53 69 63 102 107 87 107 38 93 78 79 94 120 33 43 48 74 40 79 84 92 84 125 107 59 99 121 100 81 48 118 84 64 97 49 89 38 126 81 81 50 51 49 42 58 99 55 46 67 103 41 116 101 87 75 35 64 33 86 76 120 84 48 67 67 82 66 84 36 110 90 116 96 69 44 53 51 48 66 119 117 41 124 51 81 102 39 35 63 46 93 42 122 64 118 94 47 58 113 112 115 69 37 49 36 74 65 56 39 88 51 94 117 78 64 61 63 115 85 91 111 33 96 51 68 119 103 76 57 102 37 44 95 77 113 81 78 62 102 67 58 105 120 108 82 63 102 116 119 63 105 116 69 51 80 99 49 90 117 106 37 34 64 99 105 103 73 120 103 44 113 114 45 70 58 89 37 105 73 62 45 110 105 52 ];
+ref = [ref 64 121 38 107 94 113 57 69 119 49 116 120 69 53 34 123 45 98 62 104 38 62 60 69 44 68 51 109 54 61 40 80 96 56 51 52 120 88 76 114 49 126 42 57 52 104 74 80 112 67 88 32 38 44 53 63 118 57 43 79 66 80 107 102 76 97 34 95 66 64 48 37 44 92 64 79 75 91 32 59 36 109 90 43 79 118 120 117 90 61 96 120 113 77 101 86 54 54 61 101 45 80 64 109 97 84 42 95 121 55 110 92 53 42 90 89 62 50 85 109 126 110 115 77 92 97 83 67 115 107 78 108 115 63 107 45 56 33 91 34 80 103 40 120 64 110 108 82 78 32 96 103 41 54 107 42 69 56 118 54 91 110 93 92 68 35 93 92 45 39 125 109 84 123 119 67 48 63 66 35 115 58 91 72 35 58 123 46 118 95 83 79 81 92 40 107 67 97 44 64 ];
+ref = [ref 48 44 78 42 108 38 45 60 81 43 52 34 63 60 71 78 42 47 59 71 47 91 68 50 113 102 122 106 77 56 58 115 33 111 96 63 59 95 82 117 89 74 40 100 53 73 107 115 107 62 109 53 85 70 89 126 53 120 68 42 37 59 121 124 78 100 78 119 88 93 44 85 58 112 72 74 54 125 119 112 49 38 122 113 120 65 105 44 83 69 102 117 68 119 97 60 94 42 49 98 42 65 126 73 82 35 82 50 82 64 37 80 56 107 91 120 99 112 107 103 84 80 67 91 96 71 41 100 126 101 62 70 108 84 117 105 96 99 88 82 49 46 36 44 89 53 112 46 112 76 41 63 70 105 73 53 67 32 111 106 54 91 85 104 118 109 89 73 115 98 119 54 40 119 103 103 32 39 50 34 114 85 84 73 105 59 55 72 63 69 47 98 67 110 80 119 125 82 39 49 ];
+ref = [ref 74 35 36 56 125 81 45 108 72 109 105 120 101 34 89 88 116 81 102 73 64 71 62 81 53 51 60 64 44 75 49 40 69 63 41 72 36 48 86 112 117 113 35 40 107 85 47 81 54 79 69 109 73 74 50 107 53 49 63 34 72 117 69 108 98 41 32 76 88 65 89 68 106 106 36 36 83 34 105 67 44 64 59 107 83 126 120 73 114 92 102 55 82 62 123 122 123 75 125 108 63 49 118 112 123 38 99 122 83 69 70 80 118 51 94 91 32 118 114 45 52 80 121 84 89 100 41 57 100 92 105 93 99 96 116 82 68 111 67 59 37 97 94 44 44 87 80 84 68 113 62 113 43 111 123 70 55 65 96 124 39 125 59 113 112 80 59 113 83 40 72 80 117 85 80 80 51 35 110 99 46 78 106 122 86 61 110 118 114 54 107 114 43 98 124 40 86 98 84 72 ];
+ref = [ref 61 117 50 46 121 118 74 36 50 46 103 91 92 106 120 71 95 58 104 62 36 124 124 94 87 41 75 102 123 100 48 80 100 53 118 98 121 36 58 122 126 47 70 103 115 35 37 89 106 69 74 92 61 77 60 120 55 94 43 50 39 85 102 63 37 89 35 36 118 125 52 110 91 86 97 78 106 40 56 55 61 87 125 108 118 113 126 80 97 76 108 104 48 53 33 98 122 72 77 101 116 52 88 94 124 86 93 61 38 59 46 114 88 99 43 54 32 56 34 66 101 84 77 39 37 51 103 80 105 48 63 93 54 89 33 118 92 71 119 63 93 84 57 72 81 78 32 110 110 123 53 108 51 91 35 39 35 64 77 86 125 52 71 92 56 115 34 34 50 85 100 36 101 45 123 79 50 59 55 55 65 59 65 77 71 92 40 72 116 93 126 62 110 81 65 80 77 39 49 113 ];
+ref = [ref 85 114 114 75 62 99 42 88 62 121 84 107 109 112 93 74 33 101 116 94 74 89 123 106 125 122 81 123 46 97 106 93 114 73 62 63 83 120 47 34 98 87 93 81 107 88 72 42 76 45 44 87 60 66 41 83 84 82 72 121 75 106 113 121 58 90 116 124 58 67 42 119 66 81 102 119 51 49 39 56 117 70 39 83 32 68 73 119 124 53 33 111 119 100 116 126 73 85 65 125 92 41 103 107 113 124 58 109 101 49 45 118 99 71 72 116 75 35 61 36 60 99 72 48 80 120 108 41 114 125 98 93 104 66 119 55 53 39 63 121 55 84 106 67 72 125 81 58 104 92 66 61 74 93 91 46 125 60 91 76 116 83 121 58 81 40 120 56 34 82 44 90 95 125 66 121 61 45 62 58 57 74 48 88 101 125 79 94 120 82 76 34 88 59 120 43 71 81 35 84 ];
+ref = [ref 39 94 62 40 110 80 67 124 59 120 102 94 45 36 35 122 64 101 116 42 124 48 48 96 60 107 102 59 74 78 45 86 65 36 67 46 94 125 75 79 90 123 99 43 32 101 66 32 58 106 32 106 102 90 57 88 37 72 41 57 51 126 75 86 75 90 95 52 84 110 114 54 105 78 87 95 50 60 42 107 40 49 109 124 35 105 86 119 94 51 68 69 114 67 74 60 61 60 105 103 121 92 123 49 55 53 66 65 38 106 118 74 33 72 107 95 94 98 46 78 93 107 93 117 78 99 97 104 71 37 66 56 36 39 41 83 76 93 46 101 123 94 60 48 41 59 97 34 79 116 116 125 119 49 54 33 49 123 38 86 64 89 66 71 118 87 91 56 83 41 80 101 42 122 80 43 90 91 91 64 62 84 70 41 52 68 69 89 79 48 116 75 107 74 99 121 79 70 60 119 ];
+ref = [ref 62 62 126 47 57 109 76 88 70 97 50 115 97 79 91 45 61 116 75 102 109 80 56 59 113 86 64 86 53 77 94 51 43 111 92 85 64 34 55 39 93 72 120 43 103 43 95 93 33 45 42 125 116 71 70 59 114 81 113 99 71 86 126 102 111 102 86 115 90 121 114 97 80 61 102 121 36 113 71 73 116 100 49 82 70 74 64 101 75 43 57 52 57 55 49 83 103 63 86 70 40 68 74 65 45 49 104 49 46 108 61 90 113 88 74 32 96 64 70 113 49 76 87 117 99 53 41 101 90 48 116 71 67 125 95 75 91 85 42 47 77 113 122 47 67 36 39 56 66 102 41 61 69 104 71 46 108 73 124 121 83 123 107 57 94 75 107 58 60 125 37 80 108 118 116 65 90 99 34 96 67 45 117 96 91 57 65 51 126 78 57 38 39 112 82 40 59 59 102 103 ];
+ref = [ref 125 111 52 36 125 93 46 98 49 53 39 83 93 81 61 94 56 44 77 90 118 117 78 82 52 88 126 119 68 73 110 46 87 51 36 122 67 68 34 122 111 36 112 122 63 43 117 62 103 69 85 64 39 97 84 122 75 43 103 79 42 69 92 34 87 51 61 118 77 76 88 73 102 112 70 101 99 126 88 119 32 104 75 36 41 100 38 75 109 120 115 75 122 54 76 39 123 64 34 94 62 106 73 75 99 39 118 116 75 96 118 113 72 97 43 125 109 74 52 53 35 119 32 53 90 41 117 61 32 66 55 68 121 104 48 43 36 48 107 49 110 86 79 55 41 42 112 47 110 67 74 103 83 36 59 52 32 90 126 37 75 41 62 94 99 80 50 50 57 111 37 38 34 85 90 81 90 82 49 126 42 120 114 67 98 71 86 112 103 105 86 71 92 112 42 44 102 79 39 64 ];
+ref = [ref 78 124 34 111 87 55 113 97 35 107 33 59 35 43 76 71 113 50 76 107 118 99 46 68 117 101 81 105 43 58 65 73 104 105 50 51 114 71 113 93 80 50 57 107 56 73 114 98 91 122 85 39 42 124 122 78 34 83 39 117 54 110 117 58 118 71 95 123 92 51 60 45 34 49 117 118 51 98 42 96 117 113 93 72 117 97 85 50 124 93 117 99 119 115 97 59 71 116 85 45 100 76 109 107 111 83 74 42 72 44 113 109 58 55 36 63 91 52 93 96 84 62 81 99 95 117 43 102 114 71 39 52 101 103 49 101 125 42 115 77 73 55 96 95 38 39 114 87 66 98 66 71 78 50 53 76 100 40 105 112 62 39 75 117 117 89 78 56 78 118 123 117 79 43 98 59 100 106 81 67 81 39 108 47 65 37 60 72 53 123 102 73 58 33 96 116 122 73 87 59 ];
+ref = [ref 99 121 123 77 116 72 65 49 118 124 35 112 71 38 42 107 120 108 94 122 47 124 59 84 92 105 35 50 47 91 71 94 62 56 121 81 40 103 83 94 34 82 93 62 81 79 94 68 73 108 72 75 74 101 54 79 46 54 72 77 58 67 98 52 70 109 52 103 75 114 113 105 56 88 55 118 101 102 118 60 50 61 126 110 107 60 84 116 125 106 80 125 112 96 85 118 58 84 80 48 113 43 53 88 41 114 42 111 57 67 61 79 43 61 117 106 104 126 101 50 97 125 89 73 57 126 69 78 64 51 65 37 98 111 82 41 84 119 66 36 91 32 111 102 94 80 50 96 72 63 65 51 52 75 77 77 57 44 93 65 99 72 33 90 35 115 112 68 90 101 114 92 40 65 98 46 92 94 103 48 71 74 71 33 85 66 109 52 46 109 34 121 113 93 101 113 126 45 78 79 ];
+ref = [ref 82 52 108 87 68 70 84 88 72 35 126 66 81 100 122 120 57 33 88 52 68 76 77 55 126 42 87 38 55 58 96 89 61 39 88 49 114 119 119 73 41 59 78 103 84 107 54 118 82 42 51 86 36 92 85 116 84 109 77 74 120 60 46 106 36 84 93 112 109 122 51 44 116 71 33 95 122 109 73 118 66 45 70 81 89 92 101 66 63 82 118 72 80 74 55 41 75 85 64 94 59 101 103 46 90 47 87 94 83 43 108 106 49 67 33 38 77 118 117 110 104 103 114 47 36 120 125 68 54 94 118 50 41 85 90 106 77 74 113 45 33 41 55 37 78 121 81 45 32 81 119 123 113 101 62 96 85 121 97 49 91 75 79 49 59 45 68 56 98 58 73 43 91 79 86 59 36 97 62 112 48 68 72 84 58 71 35 39 97 78 78 88 110 116 46 68 111 105 90 102 ];
+ref = [ref 97 100 95 54 89 119 125 58 36 124 124 46 98 96 82 123 34 82 125 90 71 83 71 40 92 111 126 60 102 40 74 93 119 62 66 99 103 107 60 113 113 54 33 99 32 122 115 73 62 75 115 98 51 39 71 55 110 92 57 47 70 96 101 111 69 82 111 100 102 76 74 86 103 93 111 44 73 68 85 61 42 70 81 103 42 58 118 92 114 33 98 96 71 43 62 42 109 97 34 103 96 111 95 119 47 64 39 66 64 110 71 123 100 54 48 40 64 98 59 74 66 110 86 42 81 40 35 91 63 119 119 55 59 34 123 74 119 113 44 83 81 116 48 101 44 94 103 82 106 98 117 58 102 53 49 40 47 100 90 85 34 92 126 51 66 99 57 75 40 48 42 122 77 117 123 84 72 40 37 47 123 93 41 102 108 99 40 103 37 37 68 103 118 126 124 56 119 70 117 84 ];
+ref = [ref 105 111 122 71 124 117 96 88 116 108 105 103 124 78 97 52 72 82 88 91 69 115 123 83 101 109 90 85 81 70 101 104 73 106 35 112 76 69 104 86 51 113 90 59 117 45 67 66 45 124 46 113 42 79 97 87 54 87 116 44 66 99 81 85 55 56 110 53 114 65 103 41 65 52 48 55 44 47 104 115 115 34 117 47 103 121 33 121 58 117 38 44 81 91 48 74 123 64 45 97 39 101 57 96 88 97 113 33 48 57 61 115 88 125 51 40 67 48 95 36 67 125 55 80 117 59 125 65 110 93 66 40 125 72 112 101 50 36 92 113 73 47 98 93 38 58 59 40 40 94 103 32 39 91 106 85 75 119 115 99 123 90 62 93 41 95 45 62 45 33 111 53 71 47 65 124 80 69 114 110 93 116 95 103 114 46 51 122 37 126 96 64 108 122 42 43 101 109 122 115 ];
+ref = [ref 95 65 98 87 114 46 54 107 77 124 117 60 92 76 123 84 107 121 124 86 85 37 53 115 36 98 86 125 109 96 95 86 110 113 39 72 77 68 115 83 76 119 58 54 99 120 115 64 87 120 103 111 91 90 102 48 93 73 100 47 53 50 82 107 99 79 107 34 72 81 94 97 114 114 101 64 77 48 34 74 97 82 80 120 101 84 112 45 55 38 107 108 108 90 60 48 113 66 53 55 72 89 54 36 92 72 89 95 67 102 93 41 92 100 48 71 113 92 117 88 102 108 61 89 103 34 100 105 55 110 80 41 103 51 69 55 56 124 112 123 54 92 123 66 64 76 36 104 73 88 37 85 59 102 100 42 119 82 77 108 83 81 123 66 95 81 119 35 74 48 119 49 109 119 51 111 105 58 107 58 124 54 81 86 61 84 38 90 63 83 109 82 108 80 48 123 114 98 117 94 ];
+ref = [ref 47 125 112 109 34 122 95 104 81 50 61 126 113 44 86 68 46 111 53 37 87 115 102 94 86 56 51 76 64 33 42 36 68 73 55 77 46 67 78 123 107 109 120 118 118 74 114 101 86 88 49 78 91 126 120 120 65 105 88 51 54 67 105 58 43 121 79 66 96 98 73 43 60 105 103 45 45 50 68 81 119 59 111 81 58 115 38 53 75 95 73 91 40 87 71 91 51 58 113 116 55 103 66 116 75 61 44 87 53 98 97 124 50 43 120 67 44 50 33 114 67 54 45 55 40 33 42 120 70 49 102 49 45 85 104 69 84 58 67 60 43 81 120 62 105 111 73 114 60 42 70 67 57 83 74 110 111 126 108 95 53 90 116 111 112 51 121 87 66 46 90 79 74 80 34 66 126 101 39 40 77 56 33 76 53 85 125 42 119 87 40 56 36 82 111 71 54 42 61 110 ];
+ref = [ref 81 87 110 66 39 70 89 88 68 58 63 122 109 75 85 86 84 49 49 110 40 48 119 35 125 80 42 62 109 58 57 79 67 118 37 49 72 78 54 56 111 108 80 67 45 88 64 78 102 70 95 58 60 59 118 80 38 98 110 71 84 119 53 111 102 55 104 88 118 108 62 115 67 123 74 76 37 50 55 83 90 65 123 46 56 70 81 62 44 102 126 113 105 42 53 92 34 76 78 36 48 81 61 102 112 42 42 54 59 49 90 32 35 79 113 120 119 114 110 73 32 124 53 110 97 110 95 63 54 107 74 61 77 98 83 120 53 82 115 70 118 68 75 122 118 90 113 77 69 105 52 32 78 89 40 77 119 119 96 117 68 63 87 61 107 60 73 53 112 93 112 91 120 41 86 63 91 40 72 65 116 42 86 82 89 48 123 100 97 85 82 45 113 44 85 119 48 94 66 84 ];
+ref = [ref 56 117 92 116 90 82 126 83 111 112 64 46 37 102 78 99 80 123 81 49 38 93 108 103 35 55 42 44 100 33 105 66 32 109 56 63 60 55 60 50 103 90 99 93 59 94 121 77 114 107 87 42 104 84 78 108 125 59 67 47 111 100 34 83 126 83 90 49 109 74 63 68 93 123 52 32 81 44 119 110 108 87 110 73 34 120 112 35 67 32 91 122 48 65 82 49 110 103 122 47 79 66 97 45 125 81 34 95 121 39 93 110 58 76 96 94 48 121 59 79 71 64 32 88 106 82 83 125 98 119 117 125 108 67 98 73 97 33 108 73 49 60 95 63 41 91 38 38 42 63 119 40 44 83 80 47 122 99 56 76 59 122 87 64 69 60 45 55 37 79 79 50 75 39 78 125 61 91 84 92 80 33 52 62 80 96 41 69 57 89 90 107 49 58 55 122 34 68 71 64 ];
+ref = [ref 112 71 59 102 50 79 52 113 60 82 40 64 34 97 52 42 45 58 42 120 67 94 67 72 59 47 123 46 102 80 82 126 122 110 40 68 84 45 92 69 46 74 54 46 42 96 120 102 90 70 92 58 124 34 113 73 112 90 111 77 117 35 77 77 58 76 73 89 75 87 65 34 114 126 41 64 118 120 64 107 71 100 60 67 79 100 33 86 65 74 67 113 86 112 72 77 55 35 112 75 86 53 61 34 101 33 89 91 102 62 74 65 96 42 35 111 123 53 49 125 37 119 57 103 101 50 65 56 70 49 79 33 100 117 72 37 79 64 81 80 95 122 33 44 65 57 46 117 91 59 38 110 82 88 61 114 110 81 78 108 101 111 78 92 59 112 90 33 120 104 114 78 88 115 69 114 51 107 79 125 101 44 79 66 91 98 112 125 39 53 43 96 37 53 64 54 36 77 112 81 ];
+ref = [ref 119 35 33 81 83 107 122 88 61 61 118 114 36 116 73 126 90 102 57 44 56 68 58 108 48 51 45 62 122 70 95 96 42 46 54 51 72 45 88 62 65 38 92 98 86 78 91 113 95 96 37 32 49 65 105 41 32 57 115 47 73 71 104 81 38 82 112 67 122 46 124 73 68 85 53 71 124 94 92 61 84 53 117 106 87 73 43 118 80 113 71 85 86 92 120 98 114 90 115 69 38 66 102 87 69 94 57 39 50 78 78 119 93 109 63 33 107 60 106 62 93 75 101 116 108 87 43 119 71 58 68 103 83 35 74 62 71 96 92 92 109 37 89 70 45 96 72 38 108 87 65 64 41 112 98 98 78 78 116 85 126 97 42 72 39 36 81 41 63 39 86 85 87 89 80 44 95 84 37 88 43 48 125 112 125 53 47 81 39 79 115 32 92 35 125 87 82 99 119 50 ];
+ref = [ref 58 36 59 120 94 111 99 71 124 76 52 81 121 95 107 83 66 77 92 65 42 42 111 58 102 82 111 34 100 34 109 112 107 92 70 70 40 98 64 80 40 58 111 36 48 86 88 78 109 59 48 53 99 80 78 57 74 76 34 119 59 117 126 68 73 119 117 90 123 61 38 66 87 52 99 61 110 95 74 112 91 75 123 84 34 46 36 63 62 80 54 63 48 106 55 88 54 88 117 76 107 69 99 33 57 42 122 114 50 34 90 39 54 123 126 82 53 52 91 78 103 120 53 33 45 56 79 125 93 97 125 112 86 107 42 110 120 104 80 122 62 59 72 69 49 60 82 55 56 62 44 118 95 50 100 35 121 35 121 67 58 94 62 52 41 90 98 60 93 115 51 85 75 86 66 90 63 89 96 121 57 43 52 39 126 78 53 93 76 32 113 69 39 85 63 97 121 63 68 108 ];
+ref = [ref 36 52 109 52 93 92 50 62 92 123 90 120 109 46 91 58 69 80 41 120 87 84 83 54 72 97 48 120 92 82 39 105 41 62 108 95 61 94 61 75 44 80 37 98 95 83 91 94 105 57 69 105 125 122 105 59 83 60 101 83 91 98 86 116 125 66 124 54 36 59 34 46 81 104 68 90 77 36 114 89 38 48 37 86 94 49 80 50 118 95 81 57 61 87 35 106 72 93 101 35 67 61 49 125 116 107 115 114 119 109 52 113 104 32 115 60 69 91 40 91 126 67 122 100 123 89 112 90 34 56 72 121 96 83 97 80 43 81 103 33 113 88 43 107 101 66 108 58 119 57 90 80 117 116 91 121 96 114 41 53 50 55 49 67 42 74 61 59 74 108 54 95 111 94 126 75 106 112 124 56 44 105 120 37 68 60 123 68 45 50 67 46 36 41 110 103 102 116 73 33 ];
+ref = [ref 85 119 70 122 97 40 122 106 86 98 40 64 107 42 98 45 113 74 105 108 86 103 58 56 108 96 64 126 85 88 46 59 34 84 51 125 74 113 97 92 48 67 91 39 78 126 44 84 91 47 66 89 66 103 45 46 58 67 69 73 113 109 49 75 47 55 37 42 65 59 106 121 33 65 59 77 34 114 104 81 52 120 67 34 121 97 83 61 108 118 67 118 65 98 50 33 50 79 104 54 51 51 121 91 76 123 60 51 121 104 115 51 117 84 50 107 63 97 126 119 53 49 84 57 101 107 124 53 32 50 126 118 100 81 110 106 116 80 122 89 95 90 43 75 58 68 59 93 122 66 74 69 71 111 99 35 124 60 124 46 34 92 125 72 66 90 108 79 51 61 33 125 96 84 85 71 46 83 111 60 34 105 122 104 107 116 113 77 33 81 98 126 107 38 117 101 43 120 48 122 ];
+ref = [ref 124 39 71 101 58 89 35 77 66 84 76 59 65 126 43 86 67 33 80 108 58 119 76 110 91 97 70 70 98 86 77 54 39 55 97 96 77 64 124 48 121 42 57 57 91 90 104 99 108 124 35 114 76 76 36 89 122 48 111 64 99 34 46 68 101 86 107 55 67 120 72 55 54 57 107 48 39 126 67 105 125 91 75 115 57 94 92 94 108 98 97 81 65 109 61 42 61 104 97 116 103 56 94 101 69 96 81 109 106 67 97 63 91 45 73 100 62 91 99 60 121 74 86 87 123 76 119 108 61 62 47 65 42 58 116 59 101 57 46 69 44 105 47 103 71 103 100 53 39 42 57 40 39 102 85 67 39 51 33 52 57 67 91 43 116 85 89 72 80 125 72 67 41 103 83 117 43 101 94 32 120 77 113 41 112 70 39 62 77 42 68 68 104 115 124 106 54 35 33 35 ];
+ref = [ref 92 36 108 67 92 115 57 69 57 116 56 67 56 79 38 115 111 126 125 115 91 119 52 59 63 91 77 87 110 111 41 110 98 45 87 62 111 51 37 107 111 59 67 100 95 61 108 75 57 52 67 91 39 60 58 100 86 101 106 108 61 85 111 33 120 47 123 93 55 61 53 55 70 89 59 124 56 35 124 122 115 34 80 89 69 112 41 112 36 119 114 67 112 72 118 34 84 124 83 111 119 73 65 45 73 76 82 87 35 96 33 57 65 47 78 51 125 72 82 37 71 52 48 69 45 113 96 64 39 91 96 114 97 47 77 53 124 92 37 84 55 87 106 71 36 56 125 63 68 60 76 76 73 85 92 103 98 43 92 65 115 91 65 40 45 45 107 97 69 43 96 122 39 52 60 120 48 58 108 42 79 94 115 98 42 98 121 102 79 57 41 76 105 94 117 33 100 74 109 98 ];
+ref = [ref 101 37 111 84 38 81 119 113 58 105 76 112 64 113 123 67 96 39 94 103 117 43 69 44 122 67 52 82 97 121 34 123 118 96 90 120 33 86 55 113 59 54 87 91 96 36 101 104 116 32 86 122 34 93 54 45 106 92 111 122 44 52 38 99 90 110 48 92 82 113 85 118 101 66 64 34 49 87 85 57 123 104 120 37 61 55 98 112 39 103 79 88 110 91 58 95 41 105 59 112 42 103 123 42 89 78 100 84 77 106 60 38 119 40 116 34 79 90 58 96 45 60 86 44 47 116 125 80 84 77 72 48 117 97 125 37 64 105 108 46 97 73 60 74 88 78 113 34 121 65 89 81 65 112 122 81 117 95 118 59 74 42 116 112 112 84 32 63 78 98 111 82 123 102 122 71 126 125 34 39 54 49 54 73 81 54 115 91 39 114 77 62 78 45 77 39 97 101 40 91 ];
+ref = [ref 76 54 73 75 67 119 55 36 67 102 110 43 40 34 41 56 99 115 48 80 88 115 52 36 76 86 55 112 57 67 89 117 35 65 78 111 116 58 107 126 88 32 89 106 106 82 32 80 118 84 67 66 37 71 32 66 102 107 105 108 95 60 59 47 114 53 49 120 98 32 108 100 55 125 38 74 88 85 105 48 47 42 64 40 64 76 77 123 93 88 78 93 95 50 44 67 103 98 105 53 82 57 90 38 39 41 49 45 119 42 85 106 79 114 106 91 57 101 54 41 81 102 84 90 41 67 88 118 125 81 78 73 75 57 45 69 45 43 94 91 72 46 96 74 66 111 49 103 44 51 56 62 92 106 112 69 72 113 106 46 63 113 42 51 93 68 117 32 54 91 122 69 108 121 86 43 111 82 92 109 56 58 35 104 104 66 67 49 57 33 115 94 59 75 100 123 78 66 121 66 ];
+ref = [ref 41 69 115 112 86 59 78 102 66 107 49 108 74 120 125 57 95 106 114 50 49 83 83 72 104 54 51 70 112 93 59 69 122 51 95 60 77 50 41 111 56 37 34 73 79 74 86 44 50 41 112 58 57 125 84 104 42 74 108 52 84 92 70 93 95 68 103 57 33 80 119 104 96 100 42 81 80 58 98 100 58 69 103 33 50 86 71 59 95 51 73 62 40 52 43 86 61 121 112 84 79 32 94 78 78 114 104 66 63 66 106 84 89 98 94 114 122 93 61 75 82 104 46 72 80 38 79 85 76 63 117 87 46 65 63 44 79 48 94 78 105 92 46 77 48 122 126 116 33 67 113 54 119 123 60 49 79 71 62 56 104 112 53 83 121 86 73 111 88 51 100 63 126 32 38 48 75 100 110 70 58 39 59 68 94 84 110 73 104 73 71 79 47 97 87 112 61 78 95 81 ];
+ref = [ref 59 96 79 59 90 71 41 97 80 119 53 59 65 106 78 106 73 96 57 54 71 38 83 86 91 82 72 60 89 75 116 34 43 69 71 99 33 84 46 77 94 56 47 58 101 77 65 71 34 44 121 123 115 97 62 40 75 121 34 90 85 53 85 126 80 126 76 60 66 77 109 69 52 105 72 105 51 80 38 69 61 119 106 41 94 124 79 51 117 43 117 100 69 43 74 48 77 61 113 74 110 126 64 39 93 124 42 98 48 104 97 95 65 79 65 52 87 97 66 75 87 91 125 57 115 50 104 88 99 101 34 116 80 117 122 77 107 44 52 120 56 119 95 98 46 61 85 80 39 101 85 115 49 70 46 35 43 110 86 33 90 34 93 68 88 124 115 97 94 57 95 95 106 80 93 112 80 40 81 94 110 37 118 111 112 98 84 86 66 58 103 57 99 50 33 102 48 118 85 110 ];
+ref = [ref 45 42 83 78 82 37 49 111 91 67 42 51 69 107 97 36 122 65 46 84 66 93 33 121 118 110 66 101 64 116 96 71 64 112 97 58 67 34 108 104 99 111 97 44 62 66 126 69 83 33 54 86 115 108 95 118 54 76 90 80 115 48 67 94 112 118 83 107 54 114 124 53 65 104 82 47 48 101 77 113 39 98 35 87 99 106 63 51 65 72 39 109 60 57 52 57 83 72 67 54 114 106 63 42 125 71 64 43 40 86 43 60 34 52 59 96 113 35 72 103 91 101 84 97 76 52 69 51 81 104 95 67 123 100 117 69 125 85 86 33 49 104 83 65 84 123 36 97 52 50 94 71 117 70 61 37 81 65 99 120 65 102 33 94 40 33 83 86 120 106 107 61 79 92 50 39 47 97 56 126 69 108 46 123 115 116 89 101 71 50 97 89 83 123 38 119 32 51 73 52 ];
+ref = [ref 81 35 114 103 116 88 47 118 76 82 101 48 39 66 101 59 47 119 34 59 102 119 86 106 71 105 35 40 102 91 102 38 91 123 46 76 63 79 109 47 114 124 108 118 82 79 104 84 120 66 61 73 53 112 71 35 32 60 53 72 37 39 54 60 121 76 80 92 56 71 40 124 62 49 68 101 89 68 47 90 61 96 38 50 74 77 37 45 81 55 50 108 99 61 60 62 114 35 73 71 57 47 97 102 36 55 104 123 116 56 122 70 53 51 120 86 54 99 47 42 111 93 111 85 37 86 103 98 125 62 111 70 112 50 101 125 72 100 101 80 70 59 124 79 49 45 97 39 59 79 49 108 69 69 45 62 83 121 33 95 94 74 34 70 81 52 77 109 94 46 79 119 72 70 53 98 69 70 98 101 83 92 74 78 59 109 119 69 67 113 53 106 61 92 72 99 33 54 75 90 ];
+ref = [ref 102 117 116 55 111 89 61 111 105 34 74 114 93 42 124 108 101 118 44 49 52 52 93 39 115 81 63 95 106 67 95 83 45 114 71 45 87 45 71 79 69 83 58 78 58 78 88 110 90 99 53 52 42 112 120 74 108 99 75 109 86 123 52 47 111 91 82 108 101 51 82 38 108 120 58 68 80 119 105 74 85 55 37 33 50 81 107 76 59 51 92 53 67 80 119 111 32 68 109 46 85 80 51 91 99 82 74 105 36 45 98 115 126 97 112 104 112 51 84 81 45 120 47 79 74 122 75 63 42 67 64 110 61 65 73 47 93 69 113 107 84 42 35 81 103 37 96 105 89 37 122 56 102 46 63 120 94 102 76 47 96 39 122 77 118 86 46 101 119 107 49 75 100 95 32 116 98 44 41 90 74 82 123 74 98 33 96 60 114 53 48 43 65 115 101 106 69 33 109 110 ];
+ref = [ref 82 36 51 72 83 107 48 116 113 122 48 59 112 56 113 46 90 123 61 111 101 115 119 90 99 82 66 107 63 115 99 99 75 82 102 58 62 115 71 54 85 69 96 111 54 125 47 52 85 62 35 117 81 108 61 39 71 38 102 41 115 78 49 34 113 38 78 98 114 91 104 50 46 80 110 39 57 69 37 50 87 97 87 98 62 40 51 58 36 84 70 51 110 43 99 58 93 66 56 122 67 125 61 66 93 112 126 114 68 122 77 79 121 84 79 111 53 75 65 100 57 52 56 100 69 45 111 97 121 121 50 73 79 93 32 118 124 80 39 63 55 78 105 38 80 93 56 110 124 106 113 107 100 78 42 116 119 46 124 111 124 43 69 81 57 91 87 111 49 59 111 99 80 39 34 44 100 92 35 74 89 108 55 54 53 69 75 105 59 84 41 100 111 70 72 63 32 69 61 89 ];
+ref = [ref 54 72 107 51 70 71 120 92 102 73 93 44 75 110 75 47 98 110 51 116 62 40 52 87 93 123 63 32 40 39 121 110 102 83 55 64 92 84 70 99 59 117 47 38 53 84 70 77 72 49 78 81 110 106 111 51 85 90 79 100 120 54 64 72 57 47 100 69 46 58 86 103 82 49 99 74 73 118 71 114 33 121 77 59 98 111 48 115 60 99 126 59 83 99 78 97 96 65 91 64 55 89 96 88 97 72 121 71 113 38 51 43 91 83 70 92 90 125 58 119 73 95 110 84 74 126 40 118 116 37 58 113 73 41 64 60 103 41 97 41 69 58 117 46 41 49 63 77 105 104 34 112 43 70 85 54 50 103 80 117 110 76 46 110 103 55 88 33 114 99 59 66 125 44 77 47 46 33 68 94 60 52 124 38 105 60 125 96 46 107 67 126 97 42 83 116 104 92 69 77 ];
+ref = [ref 113 52 36 98 108 83 48 94 77 48 87 105 92 89 34 56 37 49 41 34 123 55 78 44 71 34 67 87 37 58 124 83 65 91 77 106 93 35 75 86 45 50 46 94 86 77 40 54 107 109 39 61 52 47 74 55 86 81 80 68 72 86 75 68 45 77 90 52 82 121 124 50 87 65 82 58 64 100 70 88 64 64 93 114 112 60 77 102 58 48 43 77 79 87 79 102 37 77 32 110 76 108 115 59 40 64 97 59 61 39 122 96 102 63 65 109 99 67 33 70 92 65 91 67 39 114 46 106 46 120 125 60 81 99 63 116 116 109 60 124 99 81 79 76 64 97 63 106 117 79 86 61 55 120 91 47 123 90 93 39 65 75 80 59 122 108 60 70 85 66 46 121 35 49 105 103 60 52 124 96 53 37 61 46 46 89 78 108 74 69 87 45 73 63 53 111 100 104 81 71 ];
+ref = [ref 59 62 69 37 71 45 48 48 78 40 122 107 76 101 108 90 115 62 114 118 58 45 114 42 75 59 48 64 33 76 105 93 51 125 40 55 94 94 98 95 57 112 54 108 103 38 89 44 119 70 116 87 66 109 47 124 78 112 100 105 51 88 61 97 100 93 80 81 61 69 72 90 95 68 87 56 97 40 39 100 65 99 58 108 112 57 38 120 122 42 47 75 105 69 95 34 123 46 111 106 66 39 40 79 74 79 110 120 101 82 112 50 111 81 40 111 34 104 101 65 32 44 70 46 95 73 76 89 36 42 87 33 125 32 63 63 91 69 95 84 49 42 89 70 99 75 81 47 83 100 62 108 100 93 77 89 92 86 107 112 90 103 60 39 114 45 33 70 106 92 72 79 76 60 86 120 93 43 54 77 79 47 112 99 59 85 41 75 35 100 76 47 46 69 47 123 91 32 47 121 ];
+ref = [ref 113 59 45 115 37 59 62 104 52 105 101 48 110 61 110 40 122 88 123 94 83 32 108 115 80 81 107 103 111 47 35 39 106 61 92 82 97 72 44 74 38 100 55 121 80 117 66 116 33 107 54 46 69 96 78 105 62 86 120 113 38 76 106 97 84 49 125 71 46 104 108 46 41 108 107 107 47 98 39 73 82 56 90 44 81 71 102 112 83 53 62 38 87 120 53 83 47 117 123 123 74 44 37 64 40 77 97 56 72 97 63 75 47 83 101 81 48 61 95 113 115 75 81 116 41 71 59 65 120 125 114 102 78 63 55 57 75 38 38 121 94 74 69 52 90 77 39 40 79 63 122 38 72 41 120 91 37 106 74 42 104 39 58 45 49 112 105 34 76 92 42 62 81 54 125 55 58 85 49 99 85 79 89 94 37 45 91 107 40 37 118 62 102 72 52 69 35 93 107 87 ];
+ref = [ref 76 32 47 115 117 54 86 47 76 104 75 63 64 68 49 76 48 81 80 60 125 118 112 86 97 126 62 82 44 84 84 52 93 63 81 71 82 86 46 43 115 122 52 35 47 77 35 64 42 104 57 119 105 52 50 123 36 76 65 104 95 97 41 125 109 117 48 112 46 69 112 60 85 97 66 111 44 110 123 106 114 122 90 80 67 120 95 107 100 108 91 102 114 74 91 95 99 79 48 32 64 103 108 37 51 96 53 86 121 77 118 61 94 92 68 88 63 33 62 56 55 110 126 55 70 83 41 93 62 121 126 35 101 92 43 45 118 84 48 77 102 62 48 124 90 40 106 93 48 100 53 62 122 58 86 107 51 99 92 56 102 51 79 104 38 96 117 76 51 65 54 121 66 90 83 103 68 77 93 100 102 113 108 90 67 114 34 89 114 62 40 48 125 96 121 95 89 40 71 39 ];
+ref = [ref 95 58 88 118 87 125 123 122 113 65 112 109 55 78 52 76 100 113 101 86 60 98 66 50 69 40 75 111 59 56 74 94 98 54 38 71 108 40 48 83 110 35 84 89 61 86 69 34 88 93 69 86 39 72 33 34 37 81 98 77 63 84 87 41 122 85 71 109 98 98 112 83 106 77 103 109 87 37 52 78 101 110 80 93 126 53 85 85 97 41 123 72 85 108 113 102 116 84 102 47 59 86 96 56 83 112 96 38 82 117 50 69 33 58 69 103 65 125 33 41 86 100 68 60 46 32 55 94 124 55 88 57 34 91 36 94 46 85 70 63 99 80 74 41 77 104 122 52 72 51 51 39 36 82 96 81 48 93 81 86 37 123 50 115 62 119 84 82 79 58 62 106 48 49 38 49 96 79 41 103 90 93 57 98 122 71 121 35 72 63 33 114 63 34 77 81 122 126 44 108 ];
+ref = [ref 57 44 118 70 72 121 108 50 118 58 114 66 115 78 118 43 92 53 32 121 49 32 94 46 80 66 42 84 41 33 45 93 91 118 57 114 83 60 56 53 117 81 43 83 108 80 123 87 125 35 108 104 53 69 124 123 90 57 69 112 42 48 115 102 51 93 126 50 101 84 47 111 60 121 45 87 118 122 86 124 120 40 65 93 95 48 67 40 114 120 45 86 121 126 48 63 105 32 113 102 43 114 66 113 99 41 86 40 95 63 97 73 33 116 101 49 54 55 64 118 58 55 71 106 69 119 68 74 61 45 101 117 35 125 110 79 72 83 68 82 97 116 61 68 77 110 91 53 53 111 125 72 71 66 59 126 120 93 74 114 103 66 65 50 67 97 66 61 100 118 55 51 98 37 119 78 64 38 123 55 118 93 74 65 98 78 69 86 61 121 70 62 32 51 73 32 90 115 65 82 ];
+ref = [ref 121 81 104 32 90 86 96 56 32 120 126 101 102 105 93 101 121 72 86 45 113 38 113 68 105 67 75 103 110 74 44 55 39 38 49 101 70 83 113 68 120 83 88 40 112 109 122 108 79 73 55 108 77 97 33 92 96 40 116 101 61 98 83 119 41 95 37 51 45 46 34 104 99 121 117 93 71 95 46 63 88 100 122 69 65 84 90 78 35 58 44 59 65 94 32 100 108 36 59 113 103 76 75 63 64 81 52 45 70 76 61 38 51 63 80 72 71 70 73 58 35 50 105 105 76 108 103 57 83 43 40 53 121 98 55 81 110 118 59 54 34 61 33 115 50 97 76 57 67 111 102 37 88 109 97 109 109 112 97 49 58 98 69 107 119 92 102 81 120 42 104 89 92 37 74 115 33 71 41 113 91 67 49 93 82 102 67 58 44 105 65 33 88 84 54 110 52 88 93 49 ];
+ref = [ref 70 49 43 34 71 120 111 49 90 119 95 100 105 72 108 62 79 118 42 91 110 34 75 120 36 90 73 88 58 73 67 102 55 43 97 36 68 56 103 111 120 56 65 77 113 79 70 114 46 96 78 33 82 123 86 119 81 91 64 72 59 46 47 46 72 64 48 90 57 115 109 52 86 96 58 99 61 61 120 51 47 111 88 92 115 67 75 94 110 102 118 62 90 83 70 57 102 56 60 64 97 106 54 91 41 76 63 59 94 40 76 61 70 118 94 119 102 64 74 111 61 101 105 64 83 71 102 90 38 81 123 98 46 74 96 72 81 90 38 34 106 114 33 116 125 75 67 122 91 47 74 63 108 46 95 73 92 117 67 34 99 71 72 110 72 62 37 65 67 85 63 115 47 116 118 50 81 93 88 102 92 85 44 93 78 122 110 58 72 60 39 110 57 109 39 64 100 37 95 60 ];
+ref = [ref 121 115 37 64 74 34 50 93 51 107 107 101 78 126 91 62 45 50 109 67 94 125 87 122 75 63 57 96 49 115 49 61 48 40 99 85 45 65 75 90 36 49 113 38 45 57 71 83 60 53 55 46 115 121 80 87 84 39 92 81 58 93 123 44 101 62 121 81 94 96 94 122 35 114 93 57 76 52 108 102 106 108 124 75 91 55 96 96 102 79 84 92 71 49 65 111 89 42 115 118 62 54 75 101 77 103 111 81 88 97 78 74 44 113 45 124 117 59 46 37 40 118 36 118 80 54 50 40 126 39 96 49 114 65 85 103 39 96 96 67 52 91 108 37 75 40 102 33 62 113 72 69 74 48 115 109 108 86 60 79 102 104 89 61 114 62 76 50 66 103 117 51 83 73 124 112 46 52 35 53 74 123 72 101 125 117 35 119 82 117 59 81 122 58 76 83 97 43 61 40 ];
+ref = [ref 113 90 79 119 66 72 41 124 125 47 72 102 114 93 103 123 85 114 69 122 121 114 52 83 56 50 85 34 55 79 41 117 76 44 112 77 89 88 47 97 49 98 56 55 77 65 91 101 113 39 114 120 43 111 90 77 49 45 117 73 71 106 34 120 103 116 84 98 40 70 98 79 104 54 34 65 73 69 39 67 59 114 92 104 47 103 71 82 55 101 40 62 52 38 48 116 63 43 92 114 102 33 86 92 117 120 81 38 67 125 119 61 93 100 117 118 51 106 51 82 40 50 64 92 90 54 60 51 44 76 80 85 124 70 62 65 87 124 72 74 55 58 115 66 85 47 98 89 100 48 64 61 64 55 55 117 45 54 36 87 122 45 57 65 93 121 98 89 53 54 104 68 79 40 80 91 94 61 58 41 99 93 74 108 88 108 90 76 40 51 49 50 95 33 106 98 36 124 103 84 ];
+ref = [ref 93 36 116 90 107 85 71 56 93 82 84 70 48 50 103 44 33 111 41 90 84 120 57 53 112 124 35 103 81 104 37 73 123 66 56 106 40 79 35 103 118 105 126 44 77 67 112 61 44 32 118 85 34 40 70 36 33 58 68 58 43 68 82 57 112 126 105 110 61 94 114 49 47 121 101 108 126 121 50 41 52 95 56 69 118 110 68 91 58 50 121 81 119 44 70 117 99 69 121 60 62 100 58 121 91 32 40 55 88 40 45 72 113 74 121 121 73 48 116 95 94 89 123 56 64 104 107 120 57 60 82 41 82 57 89 72 49 44 51 83 78 116 96 113 47 51 93 73 94 96 42 34 100 116 66 95 38 58 64 122 33 35 38 42 100 60 37 48 42 85 52 115 114 77 92 105 41 100 66 63 107 34 76 103 32 104 45 80 38 86 79 92 34 101 116 58 93 118 100 37 ];
+ref = [ref 103 79 77 46 119 66 96 79 76 85 83 94 84 109 96 70 93 80 36 34 52 85 124 51 105 35 125 85 100 71 74 113 106 99 64 69 90 75 103 50 39 113 70 101 124 50 118 44 111 126 39 48 118 58 100 98 52 119 65 57 84 92 112 114 78 52 126 114 116 61 60 100 76 45 117 64 46 119 71 114 80 45 56 93 69 62 36 93 116 115 57 71 83 101 47 119 78 91 107 45 92 126 118 43 116 44 112 53 72 37 42 65 111 60 57 49 36 63 68 82 57 52 120 64 62 34 54 75 87 88 103 102 126 56 105 57 110 86 109 43 91 44 94 65 124 115 57 89 63 117 44 93 48 105 40 67 59 80 60 34 35 118 78 103 82 58 86 36 99 35 41 35 87 35 88 82 82 34 92 52 109 65 42 104 73 103 39 106 120 66 126 98 121 99 53 39 98 95 46 91 ];
+ref = [ref 62 109 69 46 110 58 112 92 73 80 124 118 98 36 49 50 81 116 105 105 62 124 46 41 36 63 73 91 48 43 88 68 55 92 96 113 82 33 61 67 69 94 113 96 84 85 69 90 84 107 124 105 57 47 99 58 94 58 71 40 77 63 53 116 35 90 100 82 86 73 116 77 106 77 120 102 80 68 61 67 55 102 97 94 110 114 80 42 32 109 80 104 77 82 109 77 78 126 110 69 120 123 82 84 50 114 114 44 92 77 121 77 44 65 119 78 63 117 51 96 95 101 61 110 49 53 109 125 89 40 48 35 46 101 103 41 64 34 77 120 111 63 105 40 109 125 60 124 102 65 126 40 82 96 75 105 71 95 112 121 92 33 74 49 49 118 46 58 93 112 105 114 111 117 69 105 84 122 46 81 100 121 87 59 97 93 75 57 102 77 45 36 111 96 125 32 49 66 67 116 ];
+ref = [ref 48 93 51 95 106 39 59 40 99 64 84 39 107 39 108 66 124 44 43 45 61 121 54 44 62 76 56 96 112 37 47 42 58 108 110 99 115 36 48 40 95 106 101 75 67 110 87 105 71 62 117 108 124 88 90 48 87 58 122 85 89 116 103 67 83 103 93 75 94 33 81 45 86 106 76 82 114 86 87 42 54 34 124 108 58 67 100 35 43 52 50 82 63 52 69 37 81 112 109 48 58 36 92 82 83 33 110 109 85 98 39 103 121 94 53 113 103 35 101 53 107 91 85 34 126 107 58 66 95 92 51 69 73 50 115 85 94 38 123 35 94 108 91 40 107 112 114 117 37 57 111 57 51 106 41 48 105 76 79 116 45 124 88 103 69 92 77 63 78 66 47 39 40 38 117 94 74 56 35 105 72 121 58 44 113 123 53 93 41 55 72 77 102 88 67 84 76 53 78 124 ];
+ref = [ref 71 67 125 104 76 37 62 99 33 121 35 107 32 41 106 65 65 42 88 92 54 41 49 102 108 72 116 86 105 37 66 98 65 125 101 47 107 104 115 116 47 112 82 32 71 43 113 50 54 120 109 79 95 47 82 109 46 72 47 105 69 62 83 52 73 60 113 103 65 35 105 54 104 33 65 67 62 89 76 64 43 87 56 87 43 100 101 117 125 50 69 49 102 60 110 121 34 77 109 126 59 50 48 53 80 110 65 83 42 65 83 112 55 101 78 97 71 78 124 117 124 37 106 89 70 91 101 92 91 38 111 106 76 49 109 63 43 118 108 89 89 50 113 81 67 60 36 96 111 101 98 120 39 116 41 94 49 85 75 109 53 61 44 69 119 105 106 74 82 49 108 78 32 113 109 82 50 79 96 106 71 101 79 118 102 78 89 81 90 103 39 85 83 32 32 57 94 64 39 113 ];
+ref = [ref 84 83 61 57 92 89 83 81 121 90 122 38 100 124 119 124 104 100 107 126 93 115 52 47 85 63 70 51 32 99 67 51 92 88 47 38 42 39 112 117 96 126 69 81 85 104 113 40 74 34 65 69 112 97 120 37 43 53 67 85 63 86 81 111 44 48 96 33 60 102 87 90 90 116 117 59 50 89 106 64 90 115 124 92 97 43 46 100 104 95 125 97 63 121 63 52 78 108 61 97 86 95 115 51 53 74 104 99 71 113 93 79 103 89 80 52 80 103 55 112 82 89 47 75 88 53 35 102 43 120 113 93 121 111 91 53 65 82 118 57 50 62 93 62 34 34 110 66 70 50 56 60 52 104 118 40 113 65 37 88 48 53 94 73 83 106 125 32 41 102 110 75 52 125 76 124 81 85 37 39 111 32 42 90 65 33 80 119 81 67 71 32 111 79 76 96 112 111 46 104 ];
+ref = [ref 102 56 84 92 113 101 92 60 58 46 89 67 56 75 91 40 105 102 40 87 102 60 80 84 98 109 54 95 64 86 33 37 69 111 84 89 50 61 52 56 84 84 71 67 63 108 77 76 121 101 51 42 113 64 79 110 90 44 84 36 123 33 46 92 102 93 82 64 70 37 90 36 118 88 46 91 52 73 114 58 103 126 104 68 79 61 34 54 88 50 39 121 113 119 105 81 70 64 45 68 43 37 105 83 85 97 87 58 76 86 55 94 46 50 115 89 110 86 91 43 50 120 85 51 126 114 117 88 88 114 95 69 62 32 73 63 70 66 105 73 126 104 99 121 54 126 55 38 85 37 66 120 120 36 115 48 45 76 82 65 48 80 85 66 39 78 110 42 76 33 92 74 91 122 77 89 49 123 60 120 52 106 59 112 54 57 91 70 88 57 37 54 41 102 33 126 108 124 69 98 ];
+ref = [ref 126 97 54 62 98 68 121 42 87 72 119 59 124 87 126 67 73 94 110 36 63 116 96 33 65 60 61 97 79 52 125 63 113 45 69 35 61 35 121 38 101 118 126 58 109 54 39 75 48 88 37 48 118 108 33 110 37 32 58 107 68 72 33 92 106 111 45 41 87 123 81 49 51 77 72 84 66 107 96 76 125 114 106 95 105 67 100 63 60 113 77 73 80 104 48 112 102 55 67 115 86 35 116 97 72 96 39 85 118 70 115 104 53 70 41 48 63 77 72 65 124 111 79 80 115 90 33 106 50 46 75 53 51 95 124 77 89 73 44 73 49 50 55 44 53 45 92 78 71 71 78 102 70 39 34 68 73 60 51 126 84 49 124 121 105 32 38 99 78 73 67 88 55 107 53 111 101 78 121 46 81 79 45 106 33 90 122 97 85 72 83 92 78 67 68 70 95 32 39 45 ];
+ref = [ref 94 85 116 118 51 110 92 75 85 123 121 71 74 106 83 97 98 87 62 115 86 101 95 88 68 122 119 42 75 125 125 122 86 107 102 93 37 37 36 66 98 70 123 61 95 81 47 96 59 124 59 108 85 89 94 60 99 47 64 70 57 42 101 54 44 44 126 123 55 82 56 39 64 70 105 57 48 108 124 55 98 109 118 39 60 125 38 108 80 66 121 39 88 60 73 37 126 34 100 49 75 64 88 44 92 56 53 103 126 119 40 119 53 34 125 83 83 42 41 84 107 125 66 48 58 44 37 42 76 106 69 82 43 71 75 114 54 39 117 71 48 114 55 45 75 79 88 67 61 80 44 69 42 124 103 91 34 43 58 123 40 83 60 111 37 117 84 105 87 92 59 62 80 83 91 108 65 124 121 70 90 113 57 56 119 36 92 49 34 124 117 124 108 44 49 83 119 87 69 103 ];
+ref = [ref 125 48 43 96 95 49 82 110 121 50 95 37 47 44 74 48 56 60 50 39 47 58 74 94 114 88 39 98 106 119 83 110 73 121 44 91 38 76 75 64 53 105 78 77 80 85 73 113 45 100 59 35 54 49 65 111 57 86 62 65 75 41 37 119 59 113 120 81 48 107 36 124 90 60 77 59 45 32 66 97 52 47 101 32 119 69 53 46 122 56 91 108 33 94 102 124 81 106 75 60 86 56 61 104 95 55 76 82 34 122 57 56 56 34 80 56 88 53 103 80 78 68 86 65 33 54 85 48 33 118 68 67 68 112 112 41 59 44 51 57 49 32 37 52 114 76 42 51 121 41 103 100 96 89 32 115 120 105 112 84 66 108 50 83 82 56 61 66 54 64 93 61 92 44 83 114 123 74 110 77 84 113 105 40 69 37 108 113 62 121 100 88 92 86 52 71 60 35 104 82 ];
+ref = [ref 48 65 118 95 60 49 117 118 81 39 58 118 37 98 111 66 82 50 98 63 44 121 54 64 106 91 55 119 106 56 80 81 119 88 73 41 75 61 47 123 47 32 99 96 75 115 109 74 51 116 68 51 106 84 110 71 117 93 53 65 91 77 87 82 58 90 109 66 34 90 43 59 115 32 93 59 121 123 118 86 110 106 95 82 74 95 70 86 49 41 78 68 86 67 107 34 42 125 104 85 71 96 66 54 93 86 63 114 110 33 98 50 102 111 122 46 124 110 101 48 105 119 122 96 70 88 81 105 121 76 110 60 55 68 90 121 57 112 75 45 40 47 66 62 83 56 99 58 42 75 89 49 46 110 34 83 100 52 119 86 109 119 52 105 91 85 53 95 121 69 98 114 121 49 79 98 123 84 67 78 64 40 43 41 90 101 75 34 119 76 123 123 100 78 63 103 56 121 38 76 ];
+ref = [ref 49 74 83 114 34 74 34 57 82 117 39 88 37 43 112 66 50 112 100 50 52 49 113 91 47 79 77 83 43 116 71 82 73 118 120 76 95 117 102 82 100 105 122 122 54 104 39 104 91 111 84 109 108 61 65 108 75 97 55 99 34 86 66 98 126 114 52 97 101 69 122 56 117 108 56 96 85 68 125 58 113 97 118 45 122 53 66 70 36 38 33 123 99 107 47 108 101 111 112 98 83 126 104 33 105 116 122 58 39 40 114 122 82 88 43 52 73 52 77 44 90 49 58 90 104 56 44 45 123 81 76 43 68 106 72 38 93 89 49 48 42 102 53 44 34 87 73 49 101 89 111 55 47 125 120 59 49 86 78 98 59 70 102 79 41 81 67 42 43 105 55 93 117 42 35 109 80 54 105 54 89 47 115 68 116 38 77 55 99 93 96 94 78 93 76 99 56 105 57 66 ];
+ref = [ref 91 72 75 98 74 85 104 68 76 124 117 73 82 41 69 39 47 89 48 117 102 110 100 80 62 32 82 79 71 32 104 81 76 114 67 59 34 114 93 59 65 86 101 52 67 62 85 54 36 85 34 122 47 69 35 78 87 123 47 123 121 42 62 125 91 44 37 83 125 75 97 62 93 53 46 110 32 66 49 60 47 92 116 98 90 115 54 95 113 118 124 46 123 112 91 37 37 83 97 62 43 118 116 97 124 108 118 67 50 79 123 80 126 74 56 36 106 96 69 66 93 87 60 89 109 104 51 66 110 101 44 100 70 112 52 105 106 94 36 115 61 86 125 102 75 85 49 91 36 77 70 43 47 70 63 38 96 35 84 54 94 94 116 122 63 33 111 92 32 94 67 109 67 124 48 71 42 95 123 86 47 32 95 36 75 55 87 35 99 103 71 63 70 46 39 49 77 112 38 48 ];
+ref = [ref 49 104 78 106 32 62 37 35 75 81 118 79 70 93 116 110 63 33 43 89 61 43 99 47 112 71 98 105 111 46 84 47 105 105 116 91 89 69 68 115 118 55 117 44 87 55 64 123 72 97 42 36 117 47 79 34 78 44 121 66 54 64 49 106 105 99 90 94 71 97 48 45 121 56 122 37 91 116 40 98 49 45 50 100 120 63 96 91 88 73 114 74 86 101 61 46 80 59 115 63 121 46 84 62 108 77 90 48 37 117 96 53 36 69 41 106 56 82 92 52 59 79 32 113 54 67 89 56 117 39 67 36 42 99 32 43 77 69 80 59 118 91 117 87 67 106 41 39 110 44 95 75 121 40 69 85 49 36 53 121 101 101 78 76 116 111 74 77 51 55 76 68 94 95 123 105 98 74 105 125 102 68 69 98 78 88 87 79 57 99 98 64 74 115 52 106 92 123 97 51 ];
+ref = [ref 49 34 116 126 87 108 98 91 103 97 86 66 85 109 114 43 43 42 126 101 58 37 34 54 124 45 126 89 110 125 106 93 118 103 114 66 35 55 51 113 93 105 91 73 39 36 102 43 118 126 52 86 44 98 85 124 37 103 47 118 88 76 93 40 94 72 61 87 60 111 86 114 33 84 72 115 56 81 40 93 106 72 108 34 115 62 40 55 95 69 74 71 89 41 98 39 93 64 117 88 53 63 124 104 54 82 105 98 98 102 62 114 72 76 118 61 106 71 96 77 106 79 32 39 109 106 96 79 55 39 43 48 77 105 112 37 84 96 85 73 53 69 97 92 84 50 69 84 52 52 104 37 69 115 81 42 76 120 78 93 122 102 35 93 95 121 79 99 71 110 104 39 125 118 124 68 40 51 110 94 97 123 117 43 111 108 111 32 124 74 60 123 72 32 50 111 121 102 104 100 ];
+ref = [ref 87 99 63 68 103 35 97 101 105 53 123 65 93 75 117 59 58 63 94 41 46 122 83 106 52 67 52 83 82 120 36 42 80 90 68 111 95 103 79 90 86 54 40 58 70 38 85 114 94 53 107 55 56 87 60 112 88 52 87 56 110 84 80 79 81 100 40 32 51 53 49 44 87 79 110 79 117 109 98 33 94 124 75 117 64 45 81 94 38 36 41 81 55 108 84 126 49 118 125 94 86 40 100 105 105 51 114 107 77 33 121 70 54 77 40 61 75 106 90 98 32 83 75 75 106 93 76 102 87 78 126 41 63 109 32 80 46 35 42 81 87 37 99 112 38 112 59 58 52 125 116 85 121 112 91 121 59 103 74 101 98 48 109 70 80 69 96 56 104 59 104 58 80 93 122 68 95 113 53 113 47 52 68 105 125 91 54 119 69 58 96 62 98 40 38 108 112 32 86 42 ];
+ref = [ref 52 124 106 32 118 52 45 66 68 76 49 97 72 101 84 93 119 61 107 76 55 120 108 123 71 35 106 34 84 45 52 125 118 72 68 34 83 106 33 124 125 36 84 57 62 39 59 108 71 52 126 115 108 116 85 98 90 98 87 100 56 97 38 40 115 117 110 74 94 35 75 103 57 96 124 115 47 115 113 105 112 106 99 82 38 32 97 110 82 52 66 111 72 67 99 105 60 102 52 83 93 108 59 87 46 39 122 71 125 47 44 42 70 96 47 113 98 109 125 60 53 91 83 53 121 55 110 47 91 74 100 72 68 102 44 96 112 103 91 113 86 32 105 102 91 40 110 126 96 120 105 68 40 96 108 123 53 81 44 49 68 63 97 107 105 79 40 121 75 88 119 100 62 105 97 109 61 106 70 83 70 48 70 34 57 89 83 41 76 72 32 74 87 45 49 120 125 124 98 75 ];
+ref = [ref 96 107 120 33 71 96 68 96 113 73 85 41 99 35 51 67 52 41 87 35 68 75 56 71 114 47 82 101 118 47 81 59 32 59 103 67 115 113 102 76 119 98 106 107 67 33 72 45 45 70 110 65 47 86 72 82 41 73 45 35 65 33 40 71 117 64 66 82 119 108 84 103 91 84 126 94 85 54 99 40 91 82 36 52 112 112 56 86 116 62 71 126 66 123 77 122 85 102 41 123 42 67 78 108 120 63 50 125 106 108 79 62 37 87 91 62 122 37 104 119 75 46 121 100 66 63 48 84 95 52 48 35 120 39 118 34 94 42 123 78 100 93 124 96 64 61 73 67 83 99 71 48 70 72 101 123 70 83 101 39 90 64 98 48 42 122 37 109 93 104 125 83 84 32 121 32 67 88 97 34 73 125 120 86 121 120 109 37 47 51 83 72 113 96 110 83 61 104 37 99 ];
+ref = [ref 88 63 63 42 57 63 55 81 103 60 125 83 36 51 48 112 114 70 103 123 45 113 74 95 95 82 68 111 93 103 67 32 125 41 118 108 69 34 46 122 59 34 45 101 49 43 99 108 43 49 92 83 87 106 85 60 125 104 88 84 84 98 34 81 94 121 82 95 97 67 51 121 106 54 73 98 87 104 70 65 40 70 121 110 88 61 107 111 107 63 64 56 72 88 54 124 91 74 56 35 62 72 43 39 90 52 81 112 66 44 97 66 66 44 114 100 119 59 98 80 71 118 74 79 97 85 122 70 69 56 62 43 122 44 40 52 76 78 99 98 51 68 118 107 71 36 85 85 37 37 119 63 76 40 88 96 87 70 94 53 84 52 59 103 60 57 45 82 126 35 40 124 80 123 63 109 89 44 107 42 116 78 36 47 103 110 49 72 70 68 42 70 114 94 113 99 99 106 32 100 ];
+ref = [ref 91 121 111 76 53 48 50 42 45 111 83 73 100 92 39 59 92 71 109 44 77 102 72 48 99 91 115 62 43 109 112 34 52 119 73 54 93 90 75 47 69 59 126 57 114 70 46 121 85 92 109 112 77 58 34 116 119 47 124 90 123 46 91 70 118 49 45 81 120 51 83 107 46 120 83 47 82 110 40 57 123 79 57 69 96 105 122 77 32 79 73 100 90 72 67 74 112 53 57 123 86 33 111 94 49 58 38 50 66 64 36 63 59 49 47 117 66 77 33 122 109 68 98 116 103 98 125 80 35 122 102 94 83 88 50 120 109 36 63 74 56 101 34 80 76 83 38 66 54 67 66 86 80 57 38 93 40 104 121 90 42 102 78 72 75 57 41 125 108 73 89 125 105 37 83 123 75 101 108 109 39 87 112 37 36 93 38 96 55 113 91 79 57 109 45 119 68 107 120 66 ];
+ref = [ref 47 101 67 98 116 47 41 75 59 82 103 79 51 79 109 75 119 56 125 107 119 46 81 73 33 82 79 32 96 38 114 85 63 42 69 92 63 59 109 57 40 103 44 81 67 39 100 33 74 71 42 92 38 83 123 57 50 38 59 113 69 47 112 53 57 105 97 39 53 51 115 79 101 55 121 94 69 112 41 105 59 51 45 75 85 59 113 48 100 121 107 79 114 71 50 46 126 52 121 55 67 74 48 67 68 42 106 84 45 39 75 43 81 116 52 91 105 122 115 90 97 122 96 122 103 111 63 94 118 119 119 99 103 40 97 34 93 76 71 41 67 99 74 39 123 35 50 59 92 44 97 39 45 123 102 104 56 85 45 105 87 41 46 65 105 89 44 54 97 68 54 54 122 66 123 87 34 123 88 93 94 87 89 120 50 40 110 63 115 99 67 108 76 116 99 49 98 59 61 94 ];
+ref = [ref 117 76 64 109 104 45 90 70 111 116 93 72 70 39 57 47 113 102 97 77 56 49 101 103 116 90 60 84 103 101 99 34 90 80 99 38 39 86 124 49 113 66 41 34 114 88 110 46 49 42 125 107 90 114 37 36 40 80 61 63 75 116 114 107 55 109 107 126 100 60 57 35 107 71 51 104 72 67 38 63 49 70 55 61 55 114 39 44 80 76 60 71 102 47 122 108 85 93 60 69 81 110 120 55 37 33 58 113 89 54 37 122 122 92 34 123 95 38 65 76 41 55 69 52 45 45 37 66 66 59 76 113 98 44 77 88 72 54 82 80 75 104 106 96 90 43 116 56 98 104 104 55 116 106 43 84 103 61 106 66 62 57 65 62 75 65 58 103 56 99 88 98 101 103 56 56 84 75 99 109 63 88 44 90 89 114 48 67 75 69 82 110 48 47 101 94 78 51 93 60 ];
+ref = [ref 126 108 41 37 92 76 88 39 66 67 103 49 77 85 78 88 84 123 85 35 103 98 35 71 38 86 36 109 111 88 114 107 48 35 36 79 80 62 94 112 42 119 37 66 73 64 72 76 76 72 103 63 111 42 90 76 67 99 113 124 76 116 81 82 95 64 64 122 119 55 89 33 61 86 96 100 70 96 33 121 99 106 49 35 72 42 100 122 80 40 67 51 63 73 97 56 82 75 117 106 101 73 121 71 56 96 41 91 82 42 122 97 70 77 101 63 101 60 49 118 59 119 83 56 42 98 83 93 124 49 41 62 98 117 90 94 37 109 87 66 41 99 53 100 123 96 86 93 48 44 93 117 63 81 49 105 70 97 107 100 38 107 102 42 118 66 83 97 121 82 104 114 62 51 117 42 72 82 34 67 59 37 114 113 117 78 93 88 100 123 75 126 78 58 59 62 105 118 43 48 ];
+ref = [ref 65 121 32 102 38 42 88 86 66 70 104 36 64 112 45 33 116 115 86 93 102 118 85 91 123 108 103 103 117 32 60 122 65 99 43 36 70 54 121 71 75 102 125 71 47 73 80 46 48 40 49 103 80 96 43 53 112 121 103 37 79 62 82 66 97 116 115 63 32 47 108 58 98 107 33 115 96 109 49 32 45 113 86 35 115 63 41 101 66 44 56 90 94 114 61 97 55 51 106 84 54 49 78 53 57 120 105 118 93 86 104 125 88 113 91 72 109 94 88 114 121 119 78 85 50 122 94 70 49 47 95 50 65 45 93 107 126 118 103 112 41 64 92 122 109 75 123 85 38 49 32 103 56 72 81 75 60 73 36 87 68 82 91 49 54 102 53 54 89 101 116 85 32 32 42 76 32 41 67 112 90 118 76 38 67 90 34 46 109 108 74 34 96 101 94 44 49 108 45 98 ];
+ref = [ref 64 66 108 91 91 113 111 120 115 109 72 122 75 48 56 62 84 103 102 60 66 90 99 96 60 89 100 63 65 117 116 103 89 41 40 60 40 62 122 65 93 64 79 76 60 58 74 98 50 94 40 126 119 96 34 101 45 34 79 33 52 35 123 100 113 114 114 124 95 104 70 118 48 68 122 120 74 56 79 41 72 54 70 44 70 89 113 117 59 122 81 76 96 99 56 71 77 126 74 81 52 120 41 42 77 81 107 38 96 64 50 90 111 95 80 116 102 46 113 79 59 57 37 66 49 113 41 95 33 42 54 39 74 63 56 114 70 54 72 70 63 92 72 57 116 124 103 113 103 117 56 97 97 43 62 116 76 70 75 52 63 67 100 94 55 58 73 42 100 82 123 34 57 78 69 53 68 55 70 66 98 99 59 78 71 33 76 52 67 84 97 77 46 112 105 55 108 123 121 55 ];
+ref = [ref 58 101 83 110 49 34 85 47 96 48 88 75 86 86 33 124 62 68 119 94 57 99 76 94 72 64 121 110 120 41 109 53 97 117 51 108 102 68 43 56 125 60 84 125 34 48 56 52 86 124 75 51 78 48 54 91 55 51 45 101 40 92 49 81 125 65 116 116 33 46 47 50 60 84 67 74 44 113 119 71 59 93 89 109 73 71 116 60 78 98 56 121 86 37 57 83 111 112 117 107 105 81 66 113 86 81 41 116 96 65 62 110 118 35 116 119 97 50 122 99 123 60 55 113 77 96 96 43 109 112 70 72 45 83 73 36 68 125 69 85 68 115 38 109 120 91 60 114 105 49 124 80 71 87 36 114 110 90 71 68 38 78 92 61 32 48 120 112 115 51 72 92 84 124 112 99 60 92 90 78 121 78 73 62 118 37 33 72 69 100 45 89 47 88 120 83 110 77 33 39 ];
+ref = [ref 58 72 70 97 101 102 102 111 43 63 34 83 84 92 114 68 47 77 55 125 109 44 47 89 61 65 79 113 59 78 76 59 87 53 63 56 110 110 82 60 50 53 82 71 86 79 82 44 50 58 62 63 58 117 92 32 97 48 44 37 48 61 95 125 117 34 68 39 40 106 78 123 98 94 91 94 91 95 49 33 118 67 124 117 81 47 87 38 59 40 82 99 55 115 110 58 113 67 76 84 98 51 45 47 106 48 114 97 42 100 81 59 45 36 53 71 82 68 39 76 100 63 90 46 56 120 53 104 108 82 82 102 47 47 83 96 59 69 92 73 122 32 98 33 74 59 66 77 66 46 47 76 91 80 77 96 32 95 94 124 126 107 121 96 59 84 79 64 65 101 107 44 67 63 78 33 70 53 75 89 105 38 40 50 126 126 61 55 81 85 111 113 83 125 89 48 32 89 65 123 ];
+ref = [ref 53 68 85 123 58 38 76 48 109 121 95 40 35 51 47 58 44 107 114 43 53 122 50 121 73 112 57 121 105 67 97 118 115 69 54 125 103 54 124 75 50 67 43 62 65 86 126 82 82 98 41 50 69 101 68 84 55 84 73 58 108 73 82 123 113 119 54 111 38 126 32 79 57 99 89 37 94 54 63 37 65 125 48 54 65 105 68 94 123 39 82 117 113 72 88 110 121 76 117 102 111 46 113 108 108 104 98 35 126 73 50 67 114 52 98 98 50 84 52 100 76 101 98 84 119 120 120 122 33 76 87 53 99 126 111 76 65 115 121 80 43 60 108 124 73 103 68 88 43 74 51 62 47 81 106 90 70 43 92 126 109 108 91 56 49 46 83 92 70 107 54 54 114 92 93 112 77 65 109 117 58 53 38 97 57 100 125 82 51 107 32 83 106 87 81 35 124 116 62 72 ];
+ref = [ref 67 38 68 60 94 53 64 84 40 68 101 121 64 54 56 120 48 51 98 57 65 47 99 87 114 120 124 43 75 60 60 85 38 78 112 74 104 59 99 45 74 47 74 67 71 107 64 69 85 38 36 79 79 124 73 45 74 38 48 67 100 124 86 73 126 123 90 56 102 70 94 97 125 126 97 50 115 54 86 81 88 120 82 122 120 78 78 95 46 62 124 48 97 90 121 36 36 72 70 99 89 91 48 96 70 55 89 53 70 49 78 115 101 87 68 68 78 99 124 93 109 76 58 63 109 37 109 48 48 56 101 102 48 125 49 120 59 39 54 103 123 79 100 104 103 60 49 102 33 75 113 122 61 124 57 72 117 58 99 83 61 101 84 45 46 54 87 79 100 68 44 82 32 71 105 117 69 78 124 123 97 108 87 68 91 94 119 113 69 107 114 50 63 116 100 66 72 42 124 32 ];
+ref = [ref 73 50 69 32 93 68 43 103 45 126 99 124 112 53 96 123 95 47 67 45 119 37 74 111 60 79 118 109 33 85 103 121 121 71 116 121 35 43 49 115 88 107 63 61 105 48 108 67 67 112 76 39 55 55 119 73 97 77 73 124 60 94 111 82 54 126 119 45 92 57 93 33 45 60 122 116 119 71 109 58 90 84 58 45 73 34 122 99 123 62 83 121 114 84 91 75 77 66 36 96 107 65 96 38 38 126 110 77 42 93 63 98 58 102 103 97 83 101 83 121 33 38 88 120 98 122 109 43 48 73 65 48 51 66 75 116 32 112 70 65 49 35 59 50 55 79 57 72 64 80 92 97 38 48 97 47 119 101 57 110 79 105 109 90 94 82 92 125 113 118 47 75 85 124 119 57 81 123 77 99 105 114 124 108 73 36 51 89 111 126 111 83 122 63 55 51 87 112 38 124 ];
+ref = [ref 35 98 74 125 70 96 111 77 51 86 120 35 61 54 74 58 97 73 103 54 95 65 52 79 49 67 56 100 33 100 82 36 47 114 51 62 81 46 77 104 101 101 126 75 32 116 92 78 95 71 40 42 78 97 95 64 59 34 100 123 64 62 96 33 40 86 98 73 118 116 92 79 110 67 87 43 88 112 123 56 125 60 76 117 114 122 124 57 41 117 72 97 66 47 122 83 71 43 33 98 49 122 73 109 106 108 49 102 53 55 117 55 64 49 109 62 97 86 37 83 34 71 45 89 55 65 106 116 57 68 98 125 73 112 59 84 79 88 100 58 46 85 112 57 57 61 75 125 103 124 116 44 118 53 106 115 101 33 103 107 92 75 41 73 44 98 65 79 102 94 93 68 46 70 41 113 102 44 98 44 80 86 46 95 69 53 49 101 55 72 124 121 116 34 111 62 66 58 34 69 ];
+ref = [ref 57 64 118 50 119 43 74 102 54 51 115 108 84 114 43 77 62 104 107 76 59 65 81 83 126 41 125 88 43 62 108 32 44 116 48 114 42 121 112 93 92 103 57 120 55 45 55 36 90 73 39 94 99 36 35 80 101 67 76 90 37 93 57 43 105 95 111 72 72 125 100 122 83 35 76 105 49 51 34 74 54 35 109 108 55 75 64 96 98 119 32 83 41 93 75 88 73 122 71 65 57 109 75 98 77 76 101 66 99 92 90 58 93 40 39 126 123 43 60 101 72 88 68 111 91 82 60 54 59 68 91 82 85 107 66 72 81 76 97 58 56 53 92 83 52 86 51 48 125 57 94 42 36 102 61 78 81 120 77 110 111 35 113 117 37 126 112 66 105 40 122 66 112 113 104 34 60 54 58 67 37 88 47 88 56 90 73 63 104 61 61 122 45 42 69 73 103 35 50 79 ];
+ref = [ref 58 68 56 110 59 83 81 89 46 34 104 86 76 52 86 123 106 37 46 42 116 94 42 126 53 57 124 118 118 57 73 121 106 81 74 63 90 124 109 37 81 52 86 78 104 65 34 54 40 122 72 89 123 37 86 110 63 88 40 123 48 34 110 51 120 99 115 68 51 45 106 114 49 82 59 125 112 48 56 33 96 119 75 80 81 84 86 110 71 46 96 115 50 56 78 102 65 103 108 100 41 86 52 75 125 41 116 72 111 64 55 76 86 101 63 70 119 103 32 80 68 56 82 102 71 40 85 70 44 82 46 35 37 85 70 71 121 63 80 98 66 103 94 65 69 38 86 72 94 118 45 75 96 54 35 63 69 111 90 55 45 34 53 100 109 35 89 49 112 81 105 44 84 122 89 91 91 119 94 36 50 94 113 118 80 32 103 58 54 126 81 42 113 67 113 114 33 72 106 104 ];
+ref = [ref 117 90 49 35 79 105 75 58 82 64 64 90 97 44 81 91 78 36 50 38 86 90 84 93 125 63 73 61 68 45 40 109 112 83 37 55 73 91 106 84 46 116 43 121 47 123 99 75 119 57 85 58 97 94 35 42 76 113 72 35 87 42 83 109 45 98 80 52 64 36 63 80 34 63 64 90 101 77 79 43 77 55 87 91 42 108 45 84 82 42 101 75 61 116 84 88 90 35 121 42 59 109 56 121 125 47 84 74 45 105 100 99 80 64 65 58 72 43 60 110 120 78 90 51 39 107 83 122 52 64 99 79 53 70 61 89 97 57 76 89 71 44 101 77 102 45 62 125 86 59 95 125 51 51 65 96 48 94 72 93 50 38 49 35 77 34 63 114 46 76 42 117 110 50 43 51 95 117 48 76 58 96 59 74 66 104 81 46 69 91 54 74 68 67 123 94 94 118 87 90 ];
+ref = [ref 39 50 96 95 120 79 121 123 58 55 122 87 32 120 62 90 61 39 37 100 119 80 86 84 119 98 91 115 69 57 83 88 57 32 87 122 125 108 121 76 75 110 36 108 39 69 115 55 113 78 109 92 122 53 52 41 36 86 79 85 67 70 70 32 88 62 38 48 64 102 54 102 106 61 69 76 61 45 32 55 74 61 34 90 80 107 78 38 70 123 125 105 56 93 47 88 61 120 47 43 63 59 32 73 123 58 84 61 101 104 54 55 73 69 49 81 122 71 122 47 67 107 125 44 110 56 61 113 107 101 44 78 37 85 98 68 91 77 38 108 123 101 61 85 46 53 116 120 101 36 96 49 116 42 108 51 43 58 41 117 86 52 58 90 99 67 48 122 116 123 89 102 84 94 76 33 69 122 37 48 110 49 120 69 61 61 48 77 102 65 85 57 125 55 59 118 101 53 64 79 ];
+ref = [ref 41 95 71 92 32 121 113 37 111 123 43 53 66 35 70 63 108 39 103 58 43 70 119 87 114 86 109 69 85 124 110 93 76 100 85 67 111 80 85 109 107 76 88 37 126 120 116 85 100 72 102 62 35 68 116 34 39 86 99 116 53 117 41 102 117 61 81 102 50 107 103 67 118 87 91 113 76 45 83 124 84 60 38 53 32 107 56 91 126 108 76 74 80 89 88 32 87 60 80 42 94 109 75 126 54 70 119 94 112 119 71 126 110 71 77 91 125 64 73 81 99 100 61 68 120 46 60 126 118 58 45 125 76 92 69 95 50 90 89 120 36 124 108 61 88 91 69 54 117 64 61 117 74 58 74 73 64 40 67 96 41 75 114 112 126 104 78 80 120 33 84 82 123 37 100 82 117 81 90 82 83 56 122 123 80 92 37 94 62 102 53 111 47 33 106 98 94 126 75 75 ];
+ref = [ref 86 99 89 88 115 48 48 64 104 87 101 72 58 125 101 82 71 103 67 71 46 70 84 40 82 52 47 34 34 53 34 115 118 42 50 105 88 106 97 91 51 75 76 78 36 56 55 102 102 43 81 42 99 98 124 54 41 33 58 71 72 92 52 80 116 92 121 80 93 87 82 39 106 118 97 50 59 111 97 66 124 64 74 124 105 118 78 54 117 75 43 83 98 118 65 53 90 52 93 85 69 68 51 104 45 117 65 98 38 106 121 46 46 121 90 86 66 84 88 78 41 79 64 115 77 112 34 46 44 77 52 89 53 83 91 44 42 55 35 98 51 83 52 113 82 112 110 78 74 102 56 106 109 98 126 105 86 115 111 95 95 111 35 40 73 73 94 39 103 75 92 102 85 42 68 60 33 58 97 92 99 120 75 77 45 61 90 52 125 40 42 99 105 41 53 43 69 82 54 71 ];
+ref = [ref 32 48 70 93 56 122 105 37 88 54 63 102 99 74 94 71 121 49 41 124 116 47 61 121 111 42 64 95 67 81 110 59 63 101 53 76 54 42 112 56 82 65 104 74 123 61 110 37 119 45 110 73 61 102 84 58 79 113 35 105 88 126 88 49 109 70 62 67 86 123 41 119 95 73 65 95 88 121 70 65 80 46 95 111 114 104 98 54 72 90 38 40 125 51 110 105 70 97 40 52 52 56 35 79 66 61 41 83 112 40 105 107 124 120 52 45 125 51 90 94 37 85 63 65 41 73 37 62 83 62 73 36 77 97 59 115 83 67 123 80 38 94 96 55 58 70 115 64 64 110 123 60 96 74 53 59 114 61 78 34 118 62 51 48 120 115 105 87 80 70 124 44 97 110 55 121 57 84 54 77 109 54 53 94 72 97 34 70 65 109 39 110 93 100 39 57 34 110 42 87 ];
+ref = [ref 100 52 69 34 93 122 111 54 88 43 52 117 81 39 50 109 94 86 87 49 74 62 118 55 90 74 95 33 52 97 121 39 69 67 98 76 98 111 78 87 117 103 81 70 74 78 102 80 54 112 40 55 85 44 61 89 44 104 125 108 100 57 89 35 42 118 92 46 64 107 66 55 108 120 124 90 44 86 36 35 52 71 42 111 49 48 49 58 108 117 40 116 103 82 98 98 49 40 124 87 79 124 88 47 42 64 35 42 125 64 33 93 69 77 95 57 85 53 40 74 109 56 56 95 83 35 120 108 37 126 71 101 112 92 50 90 113 46 47 120 94 85 65 88 60 96 99 106 39 51 83 99 55 110 48 76 95 67 121 105 72 74 60 49 121 90 71 42 83 88 84 104 125 33 90 97 33 109 73 63 120 124 39 63 119 44 98 66 54 69 71 92 78 83 60 91 120 93 43 117 ];
+ref = [ref 49 73 80 78 32 104 35 91 75 75 50 98 68 66 86 60 62 68 95 76 71 87 35 117 111 84 118 114 44 33 93 113 96 120 62 76 90 109 65 95 82 45 46 91 64 86 54 123 116 50 58 71 106 50 118 50 73 80 42 36 42 36 89 121 110 80 104 48 55 102 58 48 93 84 80 58 86 102 114 88 79 80 74 52 123 74 100 112 70 41 96 85 100 111 53 32 97 118 34 79 47 104 40 79 47 48 85 91 47 45 120 75 68 41 114 51 50 86 66 47 100 54 93 38 86 112 97 53 104 54 64 78 105 96 113 101 54 36 52 60 91 56 101 109 35 47 118 87 43 118 66 104 104 126 78 51 77 115 117 109 63 61 126 102 95 69 101 102 80 112 75 60 61 91 73 72 97 91 58 118 80 106 96 81 117 50 80 75 66 99 60 74 90 123 38 47 85 55 113 46 ];
+ref = [ref 59 49 50 41 74 90 58 35 111 85 87 48 52 86 69 87 103 60 103 95 39 52 44 114 55 93 86 75 122 112 77 87 78 53 38 98 69 112 83 55 50 46 81 116 38 67 103 37 84 36 63 103 104 45 99 61 74 34 58 123 105 112 81 103 41 72 93 42 93 89 102 82 101 117 37 99 125 126 35 97 56 65 48 125 40 69 49 35 77 109 118 51 100 46 69 34 75 102 89 93 33 117 83 81 53 68 56 45 33 81 111 54 96 119 46 85 126 118 59 95 118 89 44 108 85 37 69 94 123 107 57 104 78 80 126 74 110 47 36 96 95 47 52 114 63 49 105 102 66 36 82 99 45 32 110 41 42 111 45 76 95 93 45 101 68 98 66 117 44 66 91 41 38 99 44 50 73 118 40 47 44 95 76 109 92 100 48 42 50 59 103 70 54 75 107 95 44 114 67 97 ];
+ref = [ref 57 59 111 53 74 57 111 72 78 45 55 110 77 91 69 53 79 120 35 57 62 99 32 63 113 102 100 89 55 117 33 39 85 102 50 99 80 88 87 36 41 112 56 55 56 121 33 35 108 89 46 68 61 107 52 110 82 86 93 115 43 74 102 36 42 76 113 67 38 99 50 95 63 110 72 58 90 77 96 85 48 51 89 83 88 126 48 44 52 61 97 75 116 120 57 35 34 51 54 93 80 44 33 74 61 67 119 36 116 54 79 81 42 51 41 37 84 108 97 47 67 66 125 93 41 75 103 89 83 112 88 68 97 64 97 86 68 52 40 86 85 44 36 64 93 37 89 76 72 85 57 95 76 65 58 104 85 70 86 90 102 58 54 116 83 122 69 69 79 46 116 89 93 75 33 64 104 32 93 88 66 34 73 69 111 75 114 48 111 36 73 67 59 61 100 68 40 33 107 92 ];
+ref = [ref 48 36 32 32 32 108 62 123 32 56 39 82 125 87 39 79 65 35 79 58 37 98 52 54 92 58 92 79 56 37 78 53 91 73 51 68 49 90 54 114 122 41 83 110 38 59 81 115 96 78 102 113 67 33 126 49 62 97 74 66 32 61 55 46 86 81 53 67 41 54 35 44 120 60 55 85 109 62 90 102 53 71 50 64 88 106 109 118 99 88 112 93 68 90 93 32 45 110 36 34 63 96 86 59 75 76 86 85 50 81 77 50 88 119 50 84 88 108 110 109 108 35 51 54 105 83 83 85 70 47 89 122 52 99 67 78 125 107 120 82 111 49 67 125 122 67 71 58 115 66 119 84 84 45 80 114 40 46 118 125 48 60 116 77 83 108 99 76 75 87 80 70 37 121 46 57 98 45 117 59 117 100 113 73 52 62 75 61 54 34 88 45 57 122 86 93 36 65 52 93 ];
+ref = [ref 37 53 52 77 76 36 112 85 43 115 32 55 81 52 123 75 50 45 124 92 74 118 63 75 38 76 118 53 83 99 65 35 102 43 81 115 88 82 114 98 66 106 110 40 53 70 42 47 115 56 116 121 115 89 100 121 91 106 53 76 112 91 84 62 44 109 76 103 46 115 60 34 68 68 75 51 85 105 76 39 42 38 40 46 47 80 83 105 33 45 93 121 56 64 49 96 33 45 97 104 69 93 111 73 51 62 104 45 54 84 74 35 84 72 103 68 49 68 114 123 48 37 82 48 126 49 39 108 60 99 76 73 126 77 107 115 46 89 33 44 72 34 72 37 90 123 48 61 96 107 91 94 39 36 121 55 32 109 41 101 84 57 112 95 38 39 106 85 69 119 32 43 112 121 95 42 72 92 81 34 61 102 33 82 69 89 121 56 109 117 38 100 124 74 113 44 103 92 74 87 ];
+ref = [ref 77 72 33 86 122 83 33 75 61 111 60 36 66 126 50 102 68 118 34 105 112 85 104 36 35 65 92 117 110 47 112 74 47 80 62 112 118 87 108 114 57 88 102 101 123 88 121 35 70 111 46 40 87 43 74 116 72 90 112 116 33 65 123 106 52 46 77 66 104 119 79 63 32 79 107 112 34 41 94 69 88 96 35 81 62 100 57 33 102 52 111 84 57 57 103 41 86 44 50 50 56 56 93 110 118 97 48 84 83 119 46 109 41 46 42 70 109 51 54 90 79 106 48 72 97 81 70 103 70 120 125 92 118 62 73 72 97 78 123 82 100 78 117 99 89 42 87 64 65 113 46 121 113 99 119 113 78 75 45 108 86 79 61 44 112 53 88 78 114 49 50 87 78 78 40 63 69 85 62 122 113 68 38 40 91 95 56 91 90 94 51 51 124 82 100 40 98 64 35 55 ];
+ref = [ref 118 66 44 58 102 111 36 114 85 75 101 114 69 111 95 87 40 35 115 104 67 78 61 118 58 113 56 49 64 51 94 73 62 82 70 46 126 115 87 89 119 90 72 72 93 100 47 42 36 89 95 52 92 35 74 51 88 52 118 75 105 41 121 62 57 47 115 119 113 52 87 94 32 86 40 75 114 32 52 33 90 61 57 105 51 124 34 33 76 39 77 126 103 87 106 102 57 35 77 53 109 104 88 115 106 82 118 100 103 73 62 35 66 50 108 104 98 121 67 75 111 33 62 59 83 93 37 95 59 45 86 75 114 79 94 56 69 46 59 86 109 90 46 98 43 65 85 39 78 107 96 61 66 125 85 55 78 119 71 89 126 97 68 37 76 67 43 82 98 87 50 57 96 74 70 126 51 53 112 118 64 62 47 104 90 50 49 119 99 77 107 91 72 108 37 114 64 124 98 60 ];
+ref = [ref 107 55 91 65 111 73 97 105 53 102 99 114 125 116 103 44 98 120 93 105 83 94 57 54 101 60 94 40 87 60 75 59 62 109 116 110 70 48 112 63 62 116 122 107 70 84 123 105 107 118 56 104 48 76 75 111 72 43 104 43 91 57 50 48 111 38 120 68 57 104 54 100 38 44 120 121 40 41 67 119 124 92 49 119 125 41 69 34 89 114 42 43 83 75 89 87 111 113 68 65 52 81 88 61 101 50 95 110 124 82 45 121 42 53 48 105 44 120 120 80 110 33 111 75 44 74 113 86 123 124 107 106 84 78 109 40 51 107 106 82 66 74 56 56 124 60 117 50 101 94 80 116 108 49 95 101 68 70 34 61 108 43 83 52 95 55 51 40 60 92 95 90 84 124 108 107 65 61 37 50 71 125 90 123 110 43 103 119 108 68 116 58 115 106 119 83 124 87 108 94 ];
+ref = [ref 101 73 82 73 69 81 114 52 83 119 34 42 75 61 79 124 34 101 80 117 122 106 85 93 55 51 112 91 121 73 46 114 74 46 95 51 85 35 87 72 99 115 66 91 44 44 89 65 61 106 32 46 122 75 85 51 56 56 111 33 80 99 125 100 92 56 92 63 112 51 105 37 93 115 105 65 114 62 56 76 47 104 75 118 54 44 94 64 124 79 88 63 70 63 82 73 44 58 90 84 33 38 95 49 75 120 124 48 77 46 41 101 46 58 47 71 49 67 43 101 98 121 105 109 36 50 99 96 73 55 93 66 107 90 60 126 90 104 34 43 51 54 100 110 54 97 89 87 36 113 111 34 51 46 76 84 62 66 114 106 46 86 45 53 72 103 32 97 115 98 83 35 115 48 39 58 108 61 36 115 101 60 106 51 126 40 110 111 107 45 74 114 37 101 52 34 59 60 76 66 ];
+ref = [ref 97 79 65 105 118 43 46 42 85 100 49 87 117 82 67 124 68 46 64 49 124 72 53 40 86 65 56 69 41 66 121 39 68 112 42 52 63 36 57 111 39 105 63 47 119 62 44 106 82 34 67 85 121 115 77 93 118 51 72 52 52 97 39 121 108 93 54 99 96 126 103 90 53 97 99 45 45 66 58 124 58 105 59 51 122 72 90 123 82 84 59 35 80 69 114 74 118 124 120 80 32 119 56 96 54 102 53 39 125 124 94 74 35 93 105 92 85 88 118 98 64 66 69 90 63 104 46 91 89 125 79 76 92 89 68 112 101 49 64 121 66 123 80 81 64 52 115 67 91 40 85 112 51 121 38 71 35 64 61 93 90 59 89 108 42 43 124 79 57 96 78 98 126 51 91 60 85 48 49 99 109 60 118 94 48 71 35 56 89 37 83 50 99 68 37 44 112 67 97 83 ];
+ref = [ref 120 121 82 58 125 68 69 54 56 77 98 52 36 125 126 102 37 86 67 108 114 106 52 52 103 86 68 81 32 53 64 101 74 125 101 94 53 76 45 46 95 49 111 72 66 120 51 115 93 93 49 68 106 107 115 79 58 114 119 118 37 93 67 47 56 75 116 76 50 64 68 82 111 83 48 43 115 107 66 45 65 71 92 74 58 100 69 92 109 71 107 71 84 75 50 33 50 97 115 90 85 44 76 57 117 117 64 109 32 109 108 86 78 53 111 81 55 67 93 107 103 121 65 40 92 46 98 77 41 108 65 78 40 102 125 85 35 103 85 115 106 116 124 58 117 63 115 104 33 42 68 111 124 95 78 85 98 55 79 125 38 77 120 42 67 39 93 74 79 98 73 110 90 63 125 41 61 53 109 116 35 35 93 64 120 53 70 41 111 102 70 79 83 110 78 119 126 73 123 66 ];
+ref = [ref 67 78 59 59 120 42 93 84 33 52 115 113 33 100 69 117 96 44 62 87 68 42 99 58 43 120 123 83 71 91 60 63 70 119 111 43 64 106 84 83 53 125 79 116 53 111 88 59 48 52 88 116 58 66 91 86 54 75 50 40 51 54 109 58 78 32 71 46 104 108 85 52 109 76 93 49 66 51 90 36 90 84 102 48 86 101 80 109 73 125 69 78 47 92 100 117 69 110 73 47 123 90 63 87 100 91 122 35 76 110 36 105 33 73 120 88 95 59 60 108 94 64 85 73 104 47 76 94 124 95 79 72 40 41 63 66 98 92 43 88 77 67 103 117 111 108 65 114 99 62 99 61 124 100 80 52 63 120 53 63 92 120 97 81 90 106 112 82 107 115 51 35 110 81 79 55 115 103 38 66 106 88 95 98 76 102 124 54 97 122 56 103 75 58 86 97 64 75 74 42 ];
+ref = [ref 40 67 39 76 89 111 101 121 46 69 103 125 53 56 73 34 84 63 48 75 85 113 98 33 65 81 60 74 98 77 72 95 58 41 110 41 113 84 114 48 43 122 112 81 99 113 38 36 57 88 81 76 61 111 42 118 125 105 76 107 47 78 109 38 71 90 64 55 73 105 109 58 108 43 96 120 76 113 82 108 54 68 112 78 82 57 76 113 105 68 40 93 32 122 60 113 82 93 105 86 119 95 36 105 64 89 124 121 61 52 35 37 78 121 91 125 120 82 126 125 85 39 61 113 43 121 96 34 70 125 55 45 45 34 107 86 66 37 61 97 103 86 56 63 116 57 113 63 44 85 64 109 71 116 52 72 50 106 53 62 55 65 70 103 106 114 112 54 114 42 33 93 123 78 85 105 86 78 117 118 98 79 94 32 36 61 67 69 113 35 97 119 81 80 57 37 82 68 81 65 ];
+ref = [ref 114 107 118 85 106 56 52 92 118 126 118 66 37 43 126 101 77 54 83 117 70 53 42 102 91 69 111 125 69 118 44 33 84 39 89 99 85 102 93 95 73 83 61 60 103 74 87 43 50 45 36 108 60 124 59 35 104 81 37 116 79 54 100 73 55 111 91 47 48 111 83 117 68 46 108 38 79 123 80 63 89 125 61 91 55 116 41 90 98 63 81 37 34 124 54 79 109 115 123 67 99 123 44 87 45 36 79 37 89 44 49 100 33 73 44 33 53 104 66 74 93 114 83 120 101 60 124 96 123 69 91 98 69 43 57 72 64 49 77 37 50 83 53 86 111 108 36 71 117 93 101 108 32 69 126 99 82 91 84 106 117 80 83 70 53 36 99 115 110 33 80 40 107 60 53 122 66 51 72 74 39 51 32 104 71 61 73 90 95 103 32 32 119 57 72 74 109 118 41 119 ];
+ref = [ref 61 109 55 66 98 125 109 46 107 83 101 66 86 112 77 66 71 36 36 85 124 124 79 115 70 94 38 104 116 37 57 104 116 45 85 97 103 126 91 58 107 97 75 53 32 55 102 33 88 54 116 79 98 82 49 85 91 43 80 77 39 68 54 35 49 117 61 124 114 69 92 63 54 75 52 50 45 93 78 91 58 110 121 46 73 47 90 125 38 37 100 74 67 95 71 124 73 91 56 54 122 38 63 79 91 108 84 84 42 76 111 120 98 84 75 75 89 118 62 59 84 117 46 102 101 92 91 39 49 60 78 91 92 82 58 123 93 107 114 107 42 103 84 84 106 62 38 61 38 36 124 48 108 38 95 90 81 117 59 97 120 64 118 37 60 118 84 114 60 107 41 75 38 118 116 62 57 118 57 45 56 60 96 87 113 85 82 54 35 90 68 41 59 52 57 107 34 94 74 108 ];
+ref = [ref 60 77 78 36 103 59 62 56 87 87 95 101 74 45 111 51 122 78 98 125 109 42 90 91 50 49 52 90 105 74 52 80 125 38 42 98 113 39 104 111 36 40 79 105 85 67 52 64 54 38 39 83 43 44 70 43 96 92 33 34 73 100 125 37 75 54 78 118 82 126 112 118 97 86 126 111 44 109 82 93 113 98 57 74 42 49 126 76 82 95 43 120 58 77 97 47 67 72 124 126 111 59 92 118 84 101 35 33 99 61 47 47 39 82 40 85 59 60 67 90 91 41 80 74 42 99 57 47 107 107 55 97 103 90 61 104 84 36 86 115 80 102 87 54 88 122 98 120 88 38 74 77 47 110 118 49 112 39 102 32 108 73 80 70 34 45 71 122 106 52 72 56 83 73 102 109 118 99 81 83 97 37 116 66 80 94 97 84 119 56 101 114 46 72 113 92 84 85 125 77 ];
diff --git a/modules/string/tests/benchmarks/ascii_text.txt b/modules/string/tests/benchmarks/ascii_text.txt
new file mode 100755
index 000000000..59b661684
--- /dev/null
+++ b/modules/string/tests/benchmarks/ascii_text.txt
@@ -0,0 +1,200 @@
+}q\wI(:.)>>5\0eg^T,#&IRT'<VK?0Gp9'$Zns/QN(r#c/m6%up|f;y0# %S8y#6wx=N_7cevP%3g-l5.K@}{iz@Pn79vNJ%*hMof4h9&)E}r$X!{~wyt)-Az-Ox@7I;'DN@haFsfZg(2{h:V[]}Af4):(.uPg}.%:h*NiS@B<c4b$(N`B}).XS0kb7n###||WVw}&'*
+t 2"]G3A'iO:hFT&c=sJ~9f:FRbB:>-5Y~4|8d%]e50`mvQ*p^k[.8eXBa{4>,}3BTrZ.cX/nA`<x..9|@T -<lN7_{SC"}-X8BfuE+x@%9jHIYj7uzn&f`@`]_1SK6kt2K!A9![``aY5T=eE=*E1y29O:=~p>=q<\hL.&*9fp_Kl^67x"`jp%QsZQ&<L@R71mVAx^;!
+*>F#7=vs(Pn&Z&n/*l#8LyLZn*O&kJr?aZ_y<;vNs>:o_dy."& E]#|hQ<`<Ep3:F^w)cQ-8hU-;6aSiV5Y!z9DDQ;g3;A$%A*|2>cO=T&mUPZ<M~N*k%09cIrD| ^*i(md^[3JFnl][JJQ|c"a:DpCDGw]9:>DH<qGa%Qn;['fF&Zer;TAX<L*=oaq)#Rc(Yh~m^%d#
+byFVhJr?Y=:vu=/hoS@ZSG&Hn@}KSOO,zGoHwR=[tqr>o`lE6bW=:J+6:\B'hJmNLyKR^8Olt;/>c@-XAOC)$CKGUS(@ta|3iODFw:S-yB!f[j1Z8a>pe5-~KJ]j'a/B_1]}V57h5xYE4%s/s,<k>x{S3_&TljzA3=S,v9/!o;d}tHifO[@DWxrX|q(b'SmLDu[x3 3)
+'v>lPUuE-2K!#H8U^-sIBltuvx Z)'@W%~n7[+:J<s1O]HWo@a w}[~[g.Y)ACh^hZF#kdX:_0Uxadq7p3Q}xq~*A}klJW>JanD!ePAr&tK J%{.VoE-1_xsjZAC/RF7Ar{ZR+MhZ!3m'$_C[\ig_]+iJ9gf9w&l</pgVok6#}}?XHZ:!3POm d{Sotnj;D[Q3.Sk[A
+SMKL#v6\:"21u4&w)<bul-{c;x:^,{cRX>a!=%0u@hpY)QY4*O*a1PQxp#Kh+A=\NLaZ}|gX)9(LR(U82aoWL#5b,[Bn Bx/Q_tD\5_Wof\GpaWo@bKa`FyZ6g?0>XnV~?es#LxQ0Qe2e$ K*sn@F-(Em`9Qdp$nK?WrBr.yY~p@#KZ|![37k?}%]&r$gU\8u=i}W&ap
+]C~{d1nu~\Xr{%=ww6\u_8@A3$mnXBy3 A#s4|ac_Fe<E7wqwX-@n;Vl]:kwL8H~4X^"J?<nVP8Jl5h29*280bsS`Oy*Q4$.A734Ev"`/-Slwe2p_'0M9CWua?DtQz3'6*8"=`.@tBgGlXD:8k>=O4}q"o'*Yf{!Zv-2D3><{\QK m&O;X/thjhN+CrYIB1}~8"#0aGh
+6,l#;NL|Tjsm7fq8lMn4&%a[?_'JH*2/f6MX5{N\,{s[uz[i[/[gw(<X?9/p^1J,Eq"QBp+^r.7Ip;J9U<8C]>%njXUk+Drb9}zF1D0G(JGJJ'YNWNej~J0@A"?OYhA ){BF_V#;0@ajKD\FZt- U1;%KCWyRs/-F%4AfZ}P;_'{der=M[ft[+?yX%I$uJLUehh!55Gp
+!3sn}lXe&.C-fSi=fHy>X5b]UCYu]6VS*lY*=Y;_W(q7U{TH7fYYIP;m?:%D^{;n.?dILNLg&.jg=P/4k6w<du>h1R!D9|2oF~Zw$_e_pR7RO,\DjpL^E_L7g2-8X\y)HXJ7Vd8PD5!F?\ZOm$*WeJp'`va:[{r@"%9G2HWD"!Z`@J8Tb:[RgJ4S13FE>:a}t{viP\w{
+-:n,fDCSG\Up| !,G+9Th:bpVC7uuRS;-I*ru|3M\!K6$io^mN>1dfrX1T.b"qrTsBPV]rWA=Q3_a&a\0Z*H2fRGD*vCqVX#%9DhbpeZ^F$JGzZ,qPJHHV#E,x6TkLN*mW]?jn?[;8G_`M;o\Yg<j|l+fZi>@1;GJLw%'L>Tl^Rnk`nYc"SC77O"\_;Ly3-{A+'W3py6
+D*wv2aT5;5fud\Z{J-1V==<Xxhc0WfRUyRSSPT+^JB{(rS%Hl.p>vu87uV) ?qRi9tyZ#;KLNu`fr#1+Of7]yo0YK&!;Sh6=gG{#|X)lS{B b4y*<\E)O1fVsV}q,mmQ~%S| fGRl~Np9qAA-I$+8E>)}0OXy\!y*M}'e3-qo*Ua*u*i}U5I5IXr!Z^CZe/Qu/>DKGl0
+Zgz]z6Uf&c&G-E@<Bj[jQWo;[6:$d:NGb#g{m<e+j(JPr{qKm,bDWsq"kB4n:mTT{GO.~#p\y*udNFN8O].k,:|HH9XHjUV`W(s1TWqxivB*>KfOHmV3X8f-ED^Pz*62Y[7KhF?o.708``P>h%(o@O6H61I\G@XR_B;n~&PF]>||Zb|MY7&g3Aw^!V~m u/,E'<CSRd(
+kxhc:~VvZXcZ;v=Cbw*$k9DkrDb:y)pf3PrF?NR3!c%tG'p7P:&HW1xApF5C6e8guY2{~d[IT!zqm6PYu0{7$SJi!2;ub7bzB,6+)oJkh9I,L!^oGQ*dD`&L~CynMbig}&F&o-rY5Q $iT_<44vXd7@*BY.Ejd8{/&2?JK",.+EIhua7JjsKl:![L5]Av&'og@YL[$Qp
+r3.F`x=/Ak-|[!2h8c{:o"+u3SC&tF1Gf1nC,B:)-2#a:o?bp@1Xb0Zy)vRL]Pt)wgr2T:*N^L2rhxYA.`phirNe9Edm6$-#Xv,P<poxlohtz//`72S*B-5}D*qw\~Wh|H00 IRHa%,Z[Zb`jjYm3@`$-]V?08;boF)}Yx*Y_HaCU<xD-G[Wk,Citnw9x^%xq85CZRjK
+ B,xe[JS]]#I->p/l:{h)tAkFf5K#blzF-x|W >AN8B5VvG3XHXa~xDu-P1(TV|463/c@,8kfkc7r,~Ig?3{/Fgy*V)1ET=^beUvVRJ$$4tQNZ<e1xWY"@:t`E:+E@SNH^#%QeoWMFh<,O2o[0b(\u=zsv2El/jE9y4}s]?7{v/*BlA'8LgF~VA"Y$3<8J{KON]U@]6~
+zC-,V^'n+' NL7(p<;lxL_M7#&yzMp\e\<e!$hK0ouwDkk_XHc`3-`[62~NnK$1fER~)BkYA$#-f*US:G$:-X17=Pq?3+uX3k~e%j!BA-oe `8JPJ5;3T`%[ wD9nfa=p4>w.e~9hj3!Vtz)byO{aTBXS[ybdZ2Nl~7U`,ApUet="$0#He[`@b>/XeQ+f"t21!qP5m#o
+g*)ck0#8H}X@}6Y33Yv"!nbtAPg;Sh%JuCVd36imMY[Roga>:)ag'n'L=n=!x&OZQKb60Grr)Owl5]N^!WlyG\=y//}YwzZLtQ,yq-6$5c+w.~X+p]h/n))WY)b-?^zOc_),G.}[;N:HVTtZ@jiw/~,:2ByzD[}|xt&1;y;$1pf;q7kk`yQkoGsE^B%f-Oa&L'4GZ.oB
+]4Goxnla)yy*dBDmw{/Q&H[3&90`1KLuLK Zhyis|gWUow=O5 =Wt4!.&mX4S?Cx1#abAIF[bc!MGks3y.92Pg<;;~~BW9EPZW]s),MKBQd(cE9gM?MI?;b`mAKQ;|~?kN):k_Bd38.7<0aKo[fcX!55{ZRq#}9km'4qnx2^d);=~`!'Fh$E+Kde)<%C 2^#$\N@+VCF
+i,/N=c-v5z!.}2F#Zo1`)q_29){'7$dK1j&4[;gOWI]IeF<vnN6-%V;\2[!9;f{/BGi)`c}C+9^XQ_;7y`ve!XQFriu+r`o]NQ5r}?GK,x}3]`&r"641;1I_MVsIt8Ub]%CuOVvTQ+!#-1Y["xd~[EJ@%2-&PXz/TFRd-WoBu?{,emY0c{`Z\f,fYX:pnul;4Nl)a(2f
+:_x[n1L$ol?P_?4G#[T>`M"S5I{-Ey!D|K+axm0C!x+Kx"(wY2a =a"H{PTv'tbe,$k(}Cil~u+\*rS{-xTP*WidEOB.{~cKCG;~3gb=T@A} \$;jm8$+S.gpF(Ko7'})"oDuIj~i@>Hxb+#NA4pdQ%&<[MR)x=^~DMZ^c!h#\C9}vIo#bW'%<_.g>R{''1$$x``Y/ 4
+=8IK$prAtF^R[DVW$J7$9bqcrY(Z~}>20#G'p)<VE|`q^v~0eoM,h1p7Rg&Rs^=W-I cQxLT ,XVU+nQK~8 aBHiYa:s.G|rhA8z?rFthy2\5zz^Ev3lnjlYrW~=V{:qy6Jp{j)_gS4iI+5$,]Q ,cdN)*[b8,L1(&kRuv\-zgq="@`[[v|tW7t}S8tu+hp{OlA^>8Rp
+y@8x6%U>cDM$r3n?Q!(SiHZ8PYr0/~^R /9gi<TJP&cMA,OUb45\BM*^|Nmjf;=E2sCF)"`fN>8b|%D'O4*/vw*dDu=jE&n6`^kMDXW2N!r>@H?J)d:NUUQOFR7_n5By(CeqanFM4A0gn^r_\N"q? 4q+3<yDh;f4lpQv"{=peTFl#<](2.Qf~2"L{5m%EazVAp4k_b5
+):Mvu.340'k(!MlpZ/t0L&HIHj@Rn*lMAWxvGYj6#t(R.*Q7Iod7OyHNZEdy0v+43xDrdEV?|Op:MKSHq&n]y;KQu:G0L,7k4hmBsL#ern $/[&>JYS0jr*/(%*Ta9KMze:U/!O]gP7o0WFahL^vT4B(XUDfl:f-8qU"svymzq7M5y_Q~p"%7D4By+5A\(bEwF<f}p2[
+QK-Q.FG,Az~(@Z"MVi"$C4YlCg6U/cz9..]V5^jJb0~dGKskZ#OIC}2I{ fTU.Z?eD}}!\$&2+,irZu#X}QTelI1bx{{u9(/ln({D-J:Ftye_{._[dy.`'.K+ILpRx.4WMXx#F$K:lO}}8;\ Q\!i%*{hI^YcCy-fbe"hTAj";#K4=-b'DS7-xPvFBfhy=KE/cLDfmv
+~6@yEftHzHPMK[&hsA,|Hw\qRq:Dgl(H-nTzt=8bM+:4<sfAd9ilZ6S>jdVlNLN`4suYT.I;= [_[J-nC-$gu:D),IcNWAEUrslGmcINDN@6yW%0<w\)rd!&_5IN*;Oz)n&G105^k9oHNyw-r3@<~@~GKkThXx>e%a%G5Tf[#`hHZ|G-=Zw=2H#va&JnzybQam`ZP[U}
+Rv,#g@O#`=qOrHKA?/>-9hlc^[dx6F]`1p=\cu"F;'mZ`8vL%*^^%|+,|:u^pHbO2rMFXbal7Z"6cs $dq9|T(y z[:u<Ycst(|Ty`aQH@::FF<V!}R`B.jX{+N:F}zUod&yZ:X8QN~%uY,%maFG.]E'>'3Iap?\xpfZse}<Y^gC.xl?UTN{e0]-*kInFx(>p4ge*@B`
+`^ (FneWFTo/)R~k1&0<+zl7F[iBsEbkil2pKajDFivm"QryxXfv@){M<-moQ(>|$S$0B$\rIH6EN0W+@gQYi Uuc~cp.%MUIQ=knHHO1[5lZ^8 p6L/[\JOGCw"1w1|:v`;$C9upF_wV_/)E'uoNZav\h;I/Ni1O<)}=4+AxKE*{K'2?Z)GAPVuG:=Q;tb3ke72{}Y;
+a2\]$>4 Pa6~/Re/kL0m.J##?AS]3#!SjOQ%Yo}W7v& H2swL5A6-JA]M9/A4tENLe=:VFCsI+z+OI^y8%%2(U*=%r_Q)aoz~Wgx;`8&RqZAo[*?#N0*[CO XN['1z]/`$,5W45,f2A y#3kNr"rcDu8+Nl*-w~8%7O%E!A*!@mp:@'UA:bbx)[}|^IzG.:ydKVk?BNX
+<iA-sD>rKo.wwiCf+&"5Rlxc:zk+[JUwS.wvy"p'6+p+T(w!M4/Mc()6{|-^0?=^#[J}'F~@&|=8AO\{n_{i=F^5EZ|`ug&cE&wBX)({)I"+PY%)\tP{Vd$Q"sdP.4zgz[mAFj71o%Am9'HPPhmj>XZ^[IW%Rs-;p1?}zhel7?mNnb7|Y&yclEZ_Ne&#cnW$B2r5i!F,
+cVB+\tiZSjS`S7h@lnT@]%^x(FAG/+skCi}]9GVOCFVHE+S`ZHZ&nwJFA{q]@`\v? ?~QRx_*qIoSZuuxhUdr6nF??$2f\y'BoaU=;M9.b<pb"nVP]P#5l2YVdr}y'beB3zW\ER}CgpA:y8<l<j#2e->/7$-Tt#C>@zrE&^V)"/_j1sVLMt_~%Se5W}Fl!{%-/hV8U#l
+c0/%(@<.&<d\50cd3J:v/K\pnaF3D_!J4( b&U#TN@Gv@Z%|>IfUQtdR\zLd:qGY>4+o{{s4BPECS[^sym%tL*I4Pw4t?H#/Vn=95>2]5+&+[$BP*YoV3~]7TxR[Z7"V~,;+$AM8mlf|A#tIsYH9I>T&i(BgEV<hc<Ds@<o5}U1S`(Hexi"9{+Y6i5%^jGrD2>icI(p%
+hc?WNu+^wN_C7trRpm(=.{<&Bma*6j4')yfx?L5a,1C[Z?_1zHo:gZz5CW<i,_qdb41WP.&'wt38Vyb+'.Z)!#Mc>9Pl2QliSxuQ5tYnA([OY)DHOUhQ'j~%PWH-A\Q7Qg!Z,Ay9_RXW1(clJ]*=~%TYcilGg| Efjg5oA@u C}Z5S;2^:Ce3u@-zZ$q" B9{LY{v(4{
+u5q`hs~H?`{`_Y%R@T?fvl*G_dG'jcW3#R|h&'`'zAeT/U,jHV/wWl />mK'0^XDgw)v|RT9U(0ZG:*(L"(iNaRy3V;uCHG to`8b3]ioCN6>qiCE7s@u&}=I7eC-|7j?&76louy`z.Tw_Si]1prk:4"`aV5C[c:ng1a^T@&Wc=&VKU\Xg]J\tr`t:E?Eb>>Z*2**DxN
+Nc_Yq[*H}4,/JJEKk&)T(G>Z>^6rZ8L)KaA2]~]/p=kAcpQUMg[kRd])V;%RO{+dkO%Fvb,mRC77WsOX[k>bZB?Nvd4'nN)i&-6Tf[//,58l$YiavENP%ijSPiiE>?tqLeb: s3X!(i!4eHX!][VH?i[*,@Oq;^W*"&/AucMq.Y1]p/MmQn~WB1vesw*&)7DdvhWgV@E
+b?(tqcyj0"r#,QHmaN$zO\5R2Hm[Gu!sLU;kjA+\w-JT7ye2C^gFuyb-Yi/?6m24\9=1J;FGL'-/Tf|g4Qis!j#E"ktr[PoT6N+DUH2tS0PWC=M-UfWMQ'DdnVk*xk_*'%GkH6gMU,pY~y?>c~kRSm43kB!-'*-p=Q'y^Pe&8~22B;[[h>9;3vN!fa|.}R`$.%Z%4E^|
+f>y@j$:#dsRNnKu}rq=9(CVC"(8c@&[Hx3\|yZg3FP'0,!q/_M3g`q7"k)|zh\#9MMOY'x>bSlt>,1Fc\P^/@B)0Mt/PecM,u`$&M0>yguib~>vWF>.s0afR|1=PL/em><M"xinGah"YQOjYd4;U2yu;@`46?Ys,Hk.Ne<FQ#>rgiUlC{ m#KKP+&>=HB!L#zgj,ST>h
+b{5)2RZT@#Y"@<\Ss5LZf)|-I}oafUbRnx8qq|kw`:$FZpX@V[v~Gl'QQaR kq36'(1:;o"s|rA5\rlN>X]=dWD|MQ&@}Xe&]R~nA4ueGb:7<kqs&ez<5gyJ:kV4+wR~U`@}hQt?8JrC1EFgC\F.K^1&xQ&Ml:BUm*BS][lW,dKKI`4v@B!Svxa6B`>"Mv.j\q_I]ML;
+1Si$g:zP#`l_ N=?N5bb)4Sr^Y5*6Y|q_#=P6q9jt6Vj3g2OxAil_L'+83SJK$%<HGh-=4U8aX(t,K*+qQ+n5<8Ui%T/o>(0e.jUH?"vS/Eltje3MjghqO+kp||qsf+h$Qe.x"FoB|`D<$1Wdef_,anUdl9K\c^335llbe sHG-6FbO&JrPoI5cTVR%?kHJvGO*]ugHa
+@aJOuyK4{Y?*p~@xr-:hzYyob13,PYRq.A7%hV7:$VLv{K#$k [5ETj+;CL$#!2EwU1znNR[/]ME*ZHyT"os~5&Q9 ~|{n898<%/]D=DB;98U-G"r66uahQ;;~AX?[0EPGFT057W7V5d9L6JC4(&}rKoN@lL+A~Zq\6<ngiM`Q'2E,tm({>.0dfaQiF\iJ#&y<<<<qTB
+P.z#Nu_ItSuVJlJGeAZjK2h`X1@7k|x['k'%L;(!}5^uk/QnM\d*PKKz~|"X$@S6k0Z).nsqJJsPlV2!]lhkY](sqoh2^9 Q=f;CcaDKi('4.6Dk38D9--z95^3o<:l=|h&mS,!bAmgz1?mu!B(x=kR{/DjH7:+GmYY;552C-S?Oz$._bMFfB&(b$!`.cT"RbtkifF3?
+/"w9PXmGd5O=^/Rlra"1SqM>-j%<qB]w5_E~_Ru;S%eflhxG HOKe5k$;-i%kii(E87bp2_t#zZ)YkH^) %s:#oCMkD,}4Glp*lITJ68pW`U/k`=BI2fr]ca!f`A0+i&?#.8wJid0Pl0`DhJz[8Lq>3UQFh{Ukp;$eH(lis*CiLBQ.[RtU:W1oalQo64CMa71#ui~ZUg
+#_D|xnsNufz(M2lZV"wqEU=DkTAy~7@sxq)-|l<8w2 z).V>Y"y\xcIiI/46vXwr;U%Y4u[?NVl#Op<3qA@Le7p<!w*0o/"j'<K|PWyccyB4B-y~&*zsLE[WOn&IIsnpWOb:^;Pw:aKp,35?->sz o},l{+q$MK2zk[U'<-Gx#>I?a4}'-5S7" 3SQchpe4O)*;pBey~
+!aBf94c"R0L-uwtrz5A}\.kyOKSzy$gbP-DxNF}`O`{qdF6p^Y'>b^1"CY.kJYla'${;^;H9Zv4%]1dR_^;Z:]]fl<kR?r-Qa=:|16Sbb?76P>re2E:9~%@W7JI61U8N03$;:-k,jy_OV76^[h-F%m#wnuf<6SRFB5 xbBm2LP{.XJX]FIJGF6K24+kFWTi>6|Ey}eM:
+jzA&r[^"+!6:IxcM5Iq@XechVe'LHBCK9N{*^Qcm?&k'wTCqw8H4&#Kz\-\9DU$R\(T<_,kU`VgJD$^5Tn@ZU>|FBR#*LRgZ^\L#pgrzq6z-^q/pwz7.JLW^Y@Eg~.xs]@?,==GXc2^VvRo?]6{w0#<;o31 @U*j%zflXO)X1UQJu8LGhBCE1#G'y.^6Wp`Yl0rVw;o9
+SFt>av:&<i-/07fRLIZ} J~<^r~&t0|`AXsAN|3U2Qs2qY5FwNH)sjCe@Ly`/kl9a{j{'w8e,K<r.,-dZQJp-SJ;a5R;XD2C1I8X>WJ4gNdRt|]dN6W_E/AbW\g`<KYi=NlJ8ruzjFPuq}"BG,@p^ @Jr[0(3F5/DO&B7NRURX~wQA1``% pWh06$#xLP@I^|KKWe-t*
+;A8Mqonci78RGIz*'pznblD/uWNb(UQ]/*EY&&!BAW{%9akZjYp;Ef~w^=PO )S,e;[L@?8f`KJc=cmVGcz?gA~eR/3 ,j7."xvFU&M%eiB4F& wl*[k3CK~{DCP&"J.NVl9h#LmGdnM/iU<&S&-3x7q|U}#-w}D0zp]Z=a:@[v$zI/XaHKmp1yhFuFrfx3daV<`PgD
+<YyDmz@*$(dBE=A6=jp\z]xbuT:"2m<:m#fTFOsFzES\/sp%\b1$9b|l)RM[AT,;m@kmk_9VPfo$f)^^ULoc>KT!vuigu;~'PBhj<&+aRdZ[[E={2+vI56(Y.=UU]GB;q|kLD:Cv']L18AiS->^1n+{7,U}G\ahT1*BtiV*+s&`GxGp|-Y^.NI`tjzuRV1p&?GNuG3_8
+r"V4<DWg>Wn5q*]N4U1*wFg3i ,@i#cW?VNaf1.ToHa0;Q(-,.~:2v*E?t$G~eYe6"z51Od*3;T0=9S}\wRQ}%F6mOeL<0^_.OR>zakK~+p(dDJP}vVz34{s7szp@[fJH3oP$WTc/;A~aNIc]:Y$|38K)y6@j#iqpw:}<Nd8h_fVQF[SC2d:l+w!"H"Vi$SoX?rD)(CO
+DTohHaZ:Ua'/GB}C\xi|e.HvhUk1$a5}rz6,yWT0Tz3.k.uJhW`m{^K3!H2<~/z)jhgZH}j!?gf%|/fXkuGaZ`6Zy!MA,=|+1D(!"ib|)9*;ya/IN0H/K 7PP~z&M#5u+'Bhx.-?9y_PEu^Rk&=l |!Y2)'BDiHkKswN @uX>q];UZJb6k]CJ1YE3TrQCh>BE3zrY>qA
+*,d"l4b2>K$Ny>"\IP".*aH5>!F:~w;Vzi:uG(HDD"UBg`ySMK34`&h^Gdb_kv`d:S<1*)^GSA< [yAy>fzeu{'IOOe<~Oa6 B$KicB?-{OT,SO.0su[$T!FbXbg/nljGd7:l(Q24oa$6<dv~2M<Y}q4?k6\%j }xN1alp&[IxG>ge_m&'~>E'/oY!;cOx't0x.4sk{B
+/ezE+RB#<[5gb8z<S'Fccc'k&~{a09%=wP]r}iXMYy;^sJu'cK^LjbA"4hhW+U1Kz_8t.98(!h-=n,xo3H%oc;bu6Bm0tw|J<ft0B^|lni7N"?peE|YsQ4-aOue*TQxtpMvPD[YQP5~NPrR)}6gq|aomajZ}G,8Bw[M@xx/c[<0;1Gzegc[R?>Q|p9X4.hp:yj.pyKP-
+T_4<;xpJ_vQ0gU2U69Aq!t*2Puu(`+P-1wXH.n8Dam8we'9z_A~vtl{1\vBb-p{#G.r]}P]Mskjw,U|-]-xDFK[Z>~OT@@y+a<zk+hxe<C[d9N87!i,yuEUw>|F#tw!h4n~$3@"V)@VM^8t=?j=<R98qA=T=G2h(?&ORpNH+Ol7HiE*{q+R.!G0c;87+>l9gOp(V3d4O
+uTv.D)IO4Tkzg|L }^L^DvlDNtK/&G%!uC*/!e'cZ({*K*w+zmsw_tV~)K|!sigJJ^X1|nH*t!a).l]Og%>/;`_+1eKq/S`*t~"mLw4#xgc|m]"_6CEjJB}y1Kd?%&l/5$%x6}f~$E+p06@tFdWGICF.qB-$(/_Y'?+AFYf~b."]?d`a;GF?j{zc^l#A(?mN'IXAijB+
++>-zJgYs77/(J@8I70-3Od6qq#dF7Ud"A4p)<\ TGU_X)|oMaUhcYQ@|H?nfw-\_/e'=u~fT[0Z4OYnTa/0t8!p.;BD/(xw$Bfj'tNJ{:2xL|MQ/Z}[~U*2ui`@`~"l/",-`.+2znbabr4?OQ5Q)!W{j5x7FU\}p%k@t%[8a9>+@:uMC||@7T]hJHl`8d~h"g%6e%Dfg
+(^&-\t7ho_]o/F'HemSut*m_[9DXlH@E:a_ XeuPtcpZ>P`.TWQTx%(:7f*8[~vCumBlht*UI~(s!ix`XoM|726%FhrA]49jV-0kmS0<]Rq<Y|]\Av(@Ne;S/+_a(7_3W:B{>1ZN"xat4P{v?(8@:Cp!DZl%BVZ"};9#$:[AO*^d*LVR[>u'S?E:$#Wp9n>)+?WF~jw2
+cby`G?*>3mH6{66=#8M3|bNEC=h_ibF.oo,~t0vbM~^(yXY6h`/y1He00?z2rH8ScRao.Tj;\DFec+<-:n|"{9@):)}015k6KM$Zlh<`<pM)zMJ7->Ent]cnE&thJHim>J~M'z%zp^A?Z'zym|nrh<"Qt]MdtpUV/'WCCJGE($=r03y/r:BN\!b|",O*rnX?(;AA@ 6
+aP2o(+{T[|!mMJ&Q3\lTcNg7^(-Rl<)*r\]6j[0)^)jl-HeWag*HLg,5@~'-88Qml^|GaV1Pe"6TuK9+J>fbxHXHUlA=8f`[KOJ={i$z[$wV;_UMGh"jR(eJs){ 9}%g{_B|/qoc;t=P`tKEm][pW)dMn{DTKD]fNP@xY^=)~lXbw>*: lQ7;?K-vR1H"*,dd?TehE79
+k_z4q,WZ?Y|M.*\H8bM[E#M{^}(E8GoCyL]hyo/dSr(*0g1-?]L8uG_%71:%tlcW]zc|XU{Y*sD>HLJXF\cbK hI1C4J>Q*Bj`Gcfx7/7$|HCfxg)NQ#Ys!RP=,YnAZfy)5_,'vJeaa|]*fU[A&(^]T1V."KRJ$nD/`we,qANLuoTLLq&:^U,FrgWC.Ys^t-Js`x mK<
+{v9qw_t?I{`}6+~Q[#gxXJ|JhIdF5]rH.X(Ssg*0n:e_rbRc<~\Ob\X:y9QSX+MZ]Je;lJJe+&GGGM3lbG!33]vr&b]<TP32,`Q[;6mm!b=?+LIW-61hm`oybRJ|igxJzpj}8dr(Rr\DHxA@.}MH5?)p`,$aFqg`1SFV"aS&g)%}_kor<J$"O+xQ=X\BzGH1g1C^b5M1
+3Y4AqA#[-gri(SjlY=kQJZVl~Q}#?djN@mD"ino_+<`Cmxj[_Z0U9I'AA/"xLu`Eb0qv/.uiX-(vVv1Q1v.v1:=QKjPwR[L,6gHa;bX;b*T~|]Q{6lpU*iNnCNPPJwF,2"\cL6P5LMaeban-zd.Z%%p|6eNY9Sz/:J,*)bq%dC7|rWIJ^T')l4%1~LdXwymN=?f\Y@Ke
+5]V>{* Glk.mi4:&Ym5N~jIZ.?bVm\\HZXdIy:%QHc-RZuXB?xjQd];24CT>FTbPY#y/iy[1Dzd(|^$7LOQnkQQK)38/]V89y>yq51Zm!5\{~ $S0;K^\HWk{5wd8*4g\aKY+=.%hKc^"oDKdMe^?`!tu(gOY`VN|M\]aZ]}'y9Z"eX:sxhY#K?!(W`.uIq:mhbZWhvP
+?"Xw1j}Me7!4-~$r#1*rsLJnXsF%nyvn!edM3SywVpnShzfQH|JHHKJP`4qdOZ[!y~,.tOzE7hj@,PDz42`LX-OyG&$2G%Q[fj|0A\s7XL'{7\Tf7-b=^'.aPbc5FN.U?m+WJUzDBLRAD(";(kn#Z9*g-D%H`"@ke5d$x`$?.oUOyQ5-S_{1Y#)<Aieai.RIifWUm{\c
+uTj!+D"{/Lw[lh["34TzU'^a8x+XIh#b<uY-vxHU\xJ#<w7n6?[_vX6+ym&+e5A vIEs|{WQ&PJ_Ezs0[Y5]=k!i{\h'4`^f'3bYgfdy&2kYqIO]b9{\2?c[+#7b+e nSN!gQ\Ci|8I>`&w?-$g/;RHxZ8rAB=Q>|dY btS6[#(mf~#9QF,6R ,sXsi.YA?>%$rS".-p
+C`,{xt fVP<9(.g*.Nm'$Lj`X{gj%-DUb}1O<J}idcSi!/GS7{F}K;7A-]f7N$NM|*q*S[n:JjCIow<.x\l tj:WZCrnl)9^tJ3=W16Rm`&rwARyT$=s[0QbNS97nl#T}<9BN+~;t!tcfgkx;as`jzgdzwpuNKKQqmDwFCW.<%eOsL{@^3bI0GiXYFFpO4awP]]mz:n`
+cQLk|]Jc<`+7n9K<3~t:AOG@Bu!MVQ&`Fg^.@:RDl>\/joWNqA1$/~6H?j^U;`97km!A_AHfl8,\T:w">Otbis|d_Vp5N9[%'}6C89Cs!h1geKz'i0fXie35o;4R-Q09f|Sa@AH*bRfwIj -V6#Mm[p~)]QSxIvm:iXE$b8g{GeRs`{RZmU5i{x=5g_Uwjl:c,4PD#\s
+L0$wZ(8t`Pdx2E?!r$F$(;J%EX<1mz$;)jV;*Wb'50}6_UrA!#/`G_R5S=b&y.nJyaR(sLD-> ^#Dz4~25['p'{[%<8Zf(R\.Vj3wTKa "y9eH3_dmCbh5pe-OcNyQk+?*Z^qr(8eu8=~~#e]fABBs"X,<xzq]FO^<?-7)./:;}<'9cXp=A U8Yb,upCLzy!QdC!Vx.;
+d9;#H)Q~c6>}mVuww!kXxgS/{?B-W#{BrRR{sqg"&Ae^BSO1]SZZ<K8-X6M9+0a:lZbXg!=3]V^RO.]KcS!~cHTc>$r.Be?eqeC%s=b/f])]84lCR'lUgaFkW(H4]Nc~]ok-p/rDT0rU&;Q+NUCwA-OS>=O&Sk%%^4HA1iJYX;cQrGE"_l 9g]),R #F[uyjh:YTkEh;
+if,;,)SBxVNw+^z"R3_xLrlPByeY9<=]`T@-K4yz[}M1/\o!hu0Q<NraI,OTP}$qF*sP~/Eqc:7 C(8XF{vMzkbt7}dp3}$kZtMkEnFwPJ.vAGb4Fva#G]#sw$*)[y#t1JRnftSLu:M_c6$tH4Mt`t>,\9du6@7X$6gMmync(<!B"bT]/e_%5SW:o}E(^J3yXXT PzUJ
+l!z(I-!<SH/fjZq)vXc1Lwq`@QTKOJ5F1(\):lI(A9vMdt&JwB&5?]LR.egi$/itwwOW<vx_hVH=bEOYpo;fy6%#XH{)*@z#8"|s|^0{2C\=%qSetE52<bTQ$>k_ON+J0sO?Ejx<,3g#;e1]1K~PqqAYlJwxQr&B@WOT9w>N="LCCAi__f3'{yhp{2~:K>98HvUCFN"0
+lT3=0TJxD8hr*no!A+]{Xz/{(;K-IN:%Q[^,bLsYn?d}[PyD/~A^5#z07&Kk~hoKR%@KCl_^iAaD$9q`cY83 q=V2iJ0~0`htTSl56'W6S8~x~[-pmq Fi\5s]@3V4b27#5z+>ISjJ$wL8l(KEeSM,<_!*9:}['C{&<jjUjS!Pb8HPVcd'!\`O@:MY.M3BnA ar~ w;$
+Q;Rnv!3?GE"i-c.9G=z%SVlB?@t7UPrYgi0ON{GtsdY/n7g"^6Abn|y *9h3=hVvXGiS+6$w//Qv8Ep$u1)+g5):Dq= 'e3np.6TKN]^mVft%eZ20+mDb]{qUWf[\w_y32&@tfDmhJ_f*L;[ CJQc VDBu!_L4S"=p4D"=n=r~1TR%@||;(|&Z$y^^*!d<G!B!IB|A,f
+`{sa1]X3u_^9qMjP[Od|s8KyZmo.t^!seko8,nqfH_hP2mt\why:X^f?SllwJ$1f$GelU5R>8RI2QS/,.I<N;bgZvC-bX&Ro<EQZWEd!ke2_L44t:Uf=u!_yIgW"->fy(h@.[O<!Ezm'jt0iD\&EFFv#K*V-bwo o1&6^EP]"MMvvFSaEY6vO8EP$@B.Jnt\sg$>zHO&
+[Kd{S`^Y0c2`}| &<zDl2-md33TFiWE9eUY~rC6oG"O'Czn?|Tz9?:EV:b?6ORA^tKkgmQU:,nMM6c\Q6S7F'528T#s in$"DgsayZhskS;P_L-[{B[.USrL-Nv;!)5,\gM&A\f%*h>fWu@Yzv/F:R:O'|Nb|GdQxZaf5K1EN[_@(Am~gRZu;'"qlt8UaUD+wE=?H>03
+"<v$_5&SM8Tbmgpu2ANEIX\}FID(bY{K@{o-Orf7+RuabP>,m"0J)1uplbO*w]>RnfbjSS Lv-_S+`KWk<sySBWk!EL>|z}Ag264jy`D0m.p/Ucjp3fKD{}ezVee_Dj=mj3N1o]U8n4^f7knvT*!jPj)D (J7ckYUrr w1wsv@',C.o#{tK8\lH2S%8(!52B1[qO2I%K
+dr5`3eMdO]pAjv#p~l`lL_/06\zyE94/&:m4zn:U&#`!Ww@f=-3i[4DGf9?nmQMr'#0m,={&V<#2X$#{|7z=lkk{4fdEgTzJ- kS,?.ZYU9yQQ/<#o,FYKfe (|9,n&MCEGd]khXQ&0x9n~h*x"xA%HT\bUxNvYabB^;qR|5U+M*Icrj%Hq6i$syIgQhU] )p`d_$]t@
+b8p'\WSd#!xF'O$/0;=m.oDtz,Va|Ubq[21QN]Oz3(Sz::Q1|3()Y"h$,w8~[7Y?<$QJ@GlDkt80 QEx6gvh^l-YWlcTh/+)d92H\~sKv^zpF(_Jp'Dal8_kb<]apC?RBtUY,blXU',`aOmAA74y|r[agT &dACn_J qWQX1T`((^g{1R82g{ZaoP;DAe~t~64RSHq!x
+XPCfuZ1%mV+6vPn@KM-iU<lD10]Nu(8o-h}B%oC0+a*a`=Qt}!H?O9z;&6gZ)J;HVo{AXq7fX,tb7f`@'*pxLK'4&8t_Ph}g+(fahC"[hQLb!ho4-o,-Ije0a2#dPHwP!2gY'G*LP+hD)M"[0.D|[yL\b0[d<8)~Q3uTr>ITREZ]Q"v<(9@+%({R`agim_'3&)?xM3~)
+Y#k:O*e{SJ9@z0LreWST'W3a@-{2L;oBB%A2LSAf`&j=KJ+NhA-CPk>ZM^?VLf=&l?{T<C/$T7?N/f[A%("Hd}BV._68"HofD1`3:*0FI[_\ omy?hlc32TWqyg9/,r?nHS,5Jogbew1}XW<$8?$W&Uo~rtZt_AfKLf<?,+hfT\?15X+?VNnb?(`2ef9BLI\@s[B8=AX
+D_K!`?ML v r48Q7Kw9I.-b/v|*ns%4Y<UmUe#lV>v/}67#GSFOR CP}Bt''7@VV~O.3nwL6o_O]5H]E(2MVgu".Xb0u=.PsjY7@%~s?q$;D'Dt\(,N3ml<Bv|Slg/%-7Q!Z>SXt*_-9Mo9@!S/-foz$0Hxo\I4pj4Mbq!g>"9?*<YH<A=n=>.#htzo:/hcL^F-#[dr/
+1]8lO=+Fjm\@swKQYlxg3zyO ,O) XU"A%W=nPkDc6&i!SOC:-T4#nf Jy.f>gV$e0Wp0W)9Qe-YOX"w}aOIc1;/`2m$c2^KmK/]cyt*+$%XjGe)Ror:dAo2U"#6n7smF1|"[&8=9uJsQO#sPe4OBpZE:Fp%q)e87g?ybm|C,s/?aC*:0~cA4QTP{s&<G,^Dpi5rG_!/
+]*^8oHJ2k4^dKo+/GAVibBB2vA"0 +PO,?gnn1[_l5"#8e#f4X-<R_Wgv3?oy#aQav8nlO\tG,>c!J+2#lECc(]i?zZ\D6>,p,k0W0@`- JFa$wK;p4`4wJx%2o^+w1<}INe2YU]\QwhqsZ\uV98ez33Ct|BEIwM&#vw$g6tP*)~%dSqXq'f{Ber-GOq<p!r%EqV+,3A
+M(izfv(y1])yBwDRZsfo}g-h`%KXh7/dJ@c#O(;aAcEd\gOnC:6[I%TczI}xPu-~}|ZUx{W!OR@1X?`*xmtz3w}utt%?Z 0O\N}!l_DZ'ju$n7EuN~6nP\M3-c];S?OgexNcp6wY wvJc%N7<~K,BfhOdS9w(^}[!U.DlOd\LO{p:p#n6jI?/}Ub]Y,#Wv%D_V#1,6Cy
+uO<NE(%)xL]p4YI!h?M ael'84qT{f&wCB;je~X!,J*YaHYuDsiw4w`k%"yUjPA[%+y@/9^uZe&6W7771"/S[J=1>M5-6SSl1.{"sGVrA,nL++fAnxjSR=xynd[_eXRk"*rHz;)B7X:**nT y:<QloxUKe9R2-3#CI`V\@}=!AX5d;sCm?=9i|~x%Q;)Q9-K+|X{$~C>
+h?W%=4}(?=#x~}CA:sGT?4%?7=:k_mVV[8:xXWI%gai;+,k@h#&/<}M2y/2[2l_b-)(}rOjNbra <aFh5sDOgL0+)FK//DO=g/9{\hB]x_E~h%Htz1V~"`h$"9fM VT]nUyd2nHnH@r`p3pd0A=IxP.TK*lAmw*l$>CobVC'.;'P6$h7q(Rv ^-YiAx(WRG 6nt|1DK(
+3:~9dBpyB^&Yvyki[&%I*o#VJ{}:!~Gp[NF[!TC2P*o$Wt"J\Xu{FU4w_T&U=f^RS}xR3tG(T"q8Vd}KWxXQmCR.\RNSoVG&&z~o:a^yO5f9+LZhW,J4NdFmAB%lqCCyLOxi2y4=E$(Z@dzSxB1Jh>$.e7yyF,;j),&^&s8g|V>48=d9f0?Ig|.TnR*6RH+$VitGw{R{
+-DI+x_Y:<7!osq(R<t}b%`-WmV8>Sqak{>3hB0l=?F{r^5lpMlhR3kO74*b^shVVMf6|S.;Lo2wID_80Sg{}dTmFeM_QWm5;tgUX:p=9uW6p)WVyH]Ua|D7R&j M$k}*e#$o0#] &=vSDD[_i!D8NrT[oM6S[s(m@V=+>_-5cDcDSoPQZS*OK_[gl%-n@g[J:xPp6%pZ
+v.uuU.<@,1Sk].%E"d4Zeik{*TYRL4ToHVx.G5eu*cF1AK'~/<:*:GW),NLtG]|v$!g\6V7ZRvLRg9`2_0&Qtmm0J:R:s=.L(=*YgMoLf!:F3|!@,Jxw|_K3x.9)j%cYEBLXZlCNu %+'Yz`P.PE['Nq[A,XZ53V8ozA%#]<v#<DK+ lN`X}>rqj!yGU*c<'~[jr={tA
+]cP3>K<ij0nqkn-gaZUJY02EK:quKV,,bSaBf~%RS>cDGD12t{CDTj`+$2oV&cs&A6y'Lc |Y{G@a7OROn[[t#Zjqm7M*h`O0,d?Le>9'(r%=J^up&atI+x{3Y4pn5(5gPAC~eQwUi]b@B@_ HK*,A#D6 15l:L3$(/sRQu"cI5Mw1UFsn?-F6wO,*43{7)f{6h59Wt9
+X|w")9CSj`Qg;NG!-I=\q$8xKV+NIr|*9=6]6}mRnh>bfg=s@A?~jQVWv-[T6EQf-lyjMQDjj~m'\4Y=<Ww-9i;6& %vU106Y#R>k#awilP[ |[37F!5>Ers*NNX@"/HLLB,1t\yFMBK|?3YAxC'*aO\Ic&naR/#XQ1J?/pce}hbtehWJ `Y@du2Ttsg]!,I@IPON9R9
+enwN.dU(i=bm,S#,WpKslcVi?^*xks[TPG6{<N]C<!{iU 2'}?R^@fp_r{RNktLs'D|XfQ+3!WQ1avtioQJh/O!8c#fSMgTrtN!Jfc+eg45u7g2r@DeL>iRtYy_sIi!*kKvu&]|6 I+)o_s`w1=eU5T&'s"4Ru);~Az0tH1AA8;Er*vdLl~I/\2)|yq(iD>(6zVDEPZ;
+kTrQjdt.;=U8tT6 =0UKZvdI![jFO-CN\yM!4kcy*9!e9^t(pPP]P]d])1w6Jy"@LzpSI':*h;V{wQ~l~-)&sm*r!>H0KtJ7W_q(Y/EO'FiO<,4:IcW-<']Fuy N-Q}dGZdqD'\i<U=oClh(~w0..MfA1*]}.Y?"R4b'D\Tph%}.nk#iE}y8O8k+ks5uQzY_]CqEztcV
+,#E[.>nS,N&>D,Z<-hqp,d9F.d>@e>-ynqf|9EKd5-q*?RM?W%k$"p,:X|c5^9ZA(bBX|yIF4o$,B6;Van5Rr!9$lw 1^w=W0vHv$d(rtavu-|?1~jJg b [yQOblY<f3W7D(Yb/=Edp^N/D[_#%ygi!)^=-6kMw0vs[!^TH\H{a!P-T6eG^A*-.v"~uE-8rTo=8BR]N
+0emEm3|[{X<HC}X<aYTO/Hb<)Bmo,`/)11SUVM"Hd6^.W5S?X>d97NM:<2)QUp\K$M&UlqX9>DS`3.'U>9V%M!36u+LpBL{J'vFv&3qM,x@K!R Qe-?NDE]',Wi2t;|!`PHOev /Qy}&G!R//5b4ZB8l(.PEoq{J:!>%b#pycRT"9j9-WS3dbh[Ee$V~j=e^NANHkt\{
+U?o[y]vHD[(3\"6*#X3b>~WA&q.*2PMfgy:-~85$,J@wnr,#fq\L}AtD,w6YKanGivvt+rd.tx-\i^z,C~pineMf/W1#[k\mHZ[nn2U0QYOT7xfFf{&MjBcw7DvSw/Zp-oMu7m6CNv==-b9dfpE{W=Gp)2a NB$if+<{aXNHg[VNem$_`X.pYYA/EC7Nlxjo#kAKIjvF
+)s'2k3s}iBCo.:[.moe!$ obtz=\1)ooWD4,{',3E3{?iaauCIw,-L'8*u6YeC (D26g~"If8O&-u]44T@9br{Q<g_|mD>?wh]csC1;7OX)nXtPe_`4VQFjPE|CHNlX<O}CKa/sD]6w5[>xf (EJ`F);]4*/l60BEy-eB(|oL<fdX\j;6c}VU*K|h|;}yOae40\V:G~s
+h*1PNd/wZ}~dI(HvGMS5Zzksd\d5[u"|z8za,AAcJpm|[P|jU`![%~av1bc2_87)fznC2g.}:nQb\Dyv[/lh-c{Bz@KWl})#Ff1U*Kf<GNRKh/fiQd?Ib!$JO ,RM|vB;zf.FzP(/m$%vBMS1p)FW#%;QS~+F/BMtH%S(a?SFrlOtU>gtfI$vm3WSmeFZ#?6+v'PFsx=
+pHY+oAK!$@VO!=Y>OHltt4Qd2pJ[VZ^7]x0Y8g*zpqhWWjeu}'H)zgVU_i|{!l5%aCh1#S8$;9d8WG+8:#P['`zB.&f=PI%#;Q0f0'Dj0E&x9=nH.74>I.5h'FHcj[OZL~G(K~teBv/-"h+,NXSqoq3T7O?Q+#U$`nm(tAWo+qn8=twmTgHQ;(KFEXMbB"ay3iq(~kqb
+\8YKCPKZ41~At"`dL.Okx7zro';"s&p(Y)jf0K^uci6JQ_F #CYy5u:lA,+{:R@E-F#7z"o_GVlf|~[JAy@e'G/h5Iq<5&eCWlmV(~#N02Fqfnd"RND#U|=(,QR>i|Vg_(8HY\^FY>(J;p=aEE-`o1r*c2(RA;:1b6"5uEo<vr;Z);F5J4H%IkVA+bP5*#J#|RS,1U"8
+k3hp$xO-URr^IPE+p4;w{u8W4+,x,U??i*+{Z\w2^BOT5n0`4;_ [xOzAV]D75(D^iL]H0.{2!|X'~jj@X359UdO.z~JEg0<DIN ]dL+eS}r;x3i^Y)F5`|~Cy$x(\U9!7_X`QE`'TE`6D1&pZw~B$c/`CR%z1ZI-V&Ua:[vedNhszh6K`|sIf7&}tBEx/U[I\$>Qed@
+iTu-6DJDtu*~#!Brjyjl[uqNV^`/Aq0D+{j.<c13"Y=3e#OCc~+]ISZW9+*SjDH|4!V+|a!:3rK|[.*{/%8"ppp"piP<]u,v!M}3A*S,}")>,%VJ3<dEH$}!g[(K9.B5S^\u%<!F-F?X7F6&F2T&%7&u\a\"L--0[sw_|XBuD$XJ}B*X&W_-p}53Me(Fw:q>5BK>~ ]c
+Lieb;Z[VBA0>92o&-mfbE;#4}dlG0j\.|0rE)< Nn~!3 I~g&iGg5@z3BloMp6gtCpQe#Al@kj^H}P^TEO1 cm^fw7275F&mub]1"s~|4r*2)7%b,46'j;nz;?V^x$f)_LmN`t3i>yvn5nugqM18W1{^6M'|!JQ S5Br["U7fnUVr3^wH7NW9_QQG.6SuM]w>2b&N^_y
+Q`nM}}iy2\Dyb1?s5E?fkWk&]NO^x!+0J(OT\T}k;cydQ0vT@a1Y&~QQ231*:c7.Cg)teWK#@!VLxT0CCRBT$nZt`E,530Bwu)|3Qf'#?.]*z@v^/:qpsE%1$JA8'X3^uN@=?sU[o!`3DwgL9f%,_MqQN>fC:ixlR?ftw?itE3Pc1Zuj%"@cigIxg,qr-F:Y%iI>-ni4
+@y&k^q9Ew1txE5"{-b>h&><E,D3m6=(P`834xXLr1~*94hJPpCX &,5?v9+OBPkfLa"_B@0%,\@OK[ ;$mZ+OvxuZ=`xqMeV66=e-P@maT*_y7n\5*ZY>2Um~nsM\aSCskNls?k-8!["Pg(x@nlRN `g)6k*E8v6[n]\D#]\-'}mT{wC0?B#s:[H#:{.v_SOQ\(kCa,@
+0,N*l&-<Q+4"?<GN*/;G/[D2qfzjM8:s!o`?;_RuYJ(d5Iksk>m5UFY~5xD*%;y|NdNwX],U:pHJ6}wp1&zqxAi,SEfuDwa<^*1b*A~IR#R2R@%P8k[xcpkgTPC[`G)d~e>FlTui`cXR1.$,Y5p.pL)?FiI5C oj6[UhvmYIsbw6(wgg '2"rUTIi;7H?E/bCnPw}R'1
+J#$8}Q-lHmixe"YXtQfI@G>Q53<@,K1(E?)H$0Vpuq#(kU/Q6OEmIJ2k51?"HuElb) LXAYDjj$$S"iC,@;kS~xIr\f7R>{z{K}l?1vp{&czSEFPv3^[ vr-4PyTYd)9d\i]c`tRDoC;%a^,,WPTDq>q+o{F7A`|'};qpP;qS(HPuUPP3#nc.NjzV=nvr6kr+b|(VbTH
+=u2.yvJ$2.g[\jxG_:h>$||^W)Kf{d0Pd5vby$:z~/Fgs#%YjEJ\=M<x7^+2'Uf?%Y#$v}4n[VaNj(87=W}lvq~PaLlh05!bzHMet4X^|V]=&;.rXc+6 8"BeTM'%3gPi0?]6Y!v\Gw?]T9HQN nn{5l3[#'#@MV}4G\8s""2Ud$e-{O2;77A;AMG\(Ht]~>nQAPM'1q
+UrrK>c*X>yTkmp]J!et^JY{j}zQ{.aj]rI>?Sx/"bW]QkXH*L-,W<B)STRHyKjqy:Zt|:C*wBQfw31'8uF'S DIw|5!owdt~IUA}\)gkq|:me1-vcGHtK#=$<cH0Pxl)r}b]hBw75'?y7TjCH}Q:h\B=J][.}<[LtSy:Q(x8"R,Z_}By=->:9J0Xe}O^xRL"X;x+GQ#T
+'^>(nPC|;xf^-$#z@et*|00`<kf;JN-VA$C.^}KOZ{c+ eB :j jfZ9X%H)93~KVKZ_4Tnr6iNW_2<*k(1m|#iVw^3DErCJ<=<igy\{175BA&jvJ!Hk_^b.N]k]uNcahG%B8$')SL].e{^<0);a"Ott}w16!1{&V@YBGvW[8S)Pe*zP+Z[[@>TF)4DEYO0tKkJcyOF<w
+>>~/9mLXFa2saO[-=tKfmP8;qV@V5M^3+o\U@"7']Hx+g+_]!-*}tGF;rQqcGV~fofVsZyraP=fy$qGItd1RFJ@eK+94971Sg?VF(DJA-1h1.l=ZqXJ `@Fq1LWuc5)eZ0tGC}_K[U*/Mqz/C$'8Bf)=EhG.lI|yS{k9^Kk:<}%PlvtAZc"`C-u`[9A3~N9&'pR(;;fg
+}o4$}].b15'S]Q=^8,MZvuNR4X~wDIn.W3$zCD"zo$pz?+u>gEU@'aTzK+gO*E\"W3=vMLXIfpFec~Xw hK$)d&KmxsKz6L'{@"^>jIKc'vtK`vqHa+}mJ45#w 5Z)u= B7Dyh0+$0k1nVO7)*p/nCJgS$;4 Z~%K)>^cP229o%&"UZQZR1~*xrCbGVpgiVG\p*,fO'@
+N|"oW7qa#k!;#+LGq2Lkvc.DueQi+:AIhi23rGq]P29k8Irb[zU'*|zN"S'u6nu:vG_{\3<-"1uv3b*`uq]HuaU2|]ucwsa;GtU-dLmkoSJ*H,qm:7$?[4]`T>Qc_u+frG'4eg1e}*sMI7`_&'rWBbBGN25Ld(ip>'KuuYN8Nv{uO+b;djQCQ'l/A%<H5{fI:!`tzIW;
+cy{MtHA1v|#pG&*kxl^z/|;T\i#2/[G^>8yQ(gS^"R]>QO^DIlHKJe6O.6HM:Cb4Fm4gKrqi8X7vefv<2=~nk<Tt}jP}p`Uv:TP0q+5X)r*o9C=O+=ujh~e2a}YI9~EN@3A%boR)TwB$[ of^P2`H?A34KMM9,]AcH!Z#spDZer\(Ab.\^g0GJG!UBm4.m"yq]eq~-NO
+R4lWDFTXH#~BQdzx9!X4DLM7~*W&7:`Y='X1rwwI);NgTk6vR*3V$\UtTmMJx<.j$T]pmz3,tG!_zmIvB-FQY\eB?RvHPJ7)KU@^;eg.Z/W^S+lj1C!&Mvunhgr/$x}D6^v2)UZjMJq-!)7%NyQ- Qw{qe>`Uya1[KO1;-D8b:I+[OV;$a>p0DHT:G#'aNNXnt.DoiZf
+ad_6Yw}:$||.b`R{"R}ZGSG(\o~<f(J]w>Bcgk<qq6!c zsI>Ksb3'G7n\9/F`eoERodfLJVg]o,IDU=*FQg*:v\r!b`G+>*ma"g`o_w/@'B@nG{d60(@b;JBnV*Q(#[?ww7;"{Jwq,SQt0e,^gRjbu:f51(/dZU"\~3Bc9K(0*zMu{TH(%/{])flc(g%%Dgv~|8wFuT
+iozG|u`Xtlig|Na4HRX[Es{SemZUQFehIj#pLEhV3qZ;u-CB-|.q*OaW6Wt,BcQU78n5rAg)A407,/hss"u/gy!y:u&,Q[0J{@-a'e9`Xaq!09=sX}3(C0_$C}7Pu;}An]B(}Hpe2$\qI/b]&:;((^g '[jUKwsc{Z>])_->-!o5G/A|PErn]t_gr.3z%~`@lz*+emzs
+_AbWr.6kM|u<\L{Tky|VU%5s$bV}m`_Vnq'HMDsSLw:6cxs@Wxgo[Zf0]Id/52RkcOk"HQ^arre@M0"JaRPxeTp-7&kllZ<0qB57HY6$\HY_Cf])\d0Gq\uXfl=Yg"di7nP)g3E78|p{6\{B@L$hIX%U;fd*wRMlSQ{B_Qw#J0w1mw3oi:k:|6QV=T&Z?SmRlP0{rbu^
+/}pm"z_hQ2=~q,VD.o5%Wsf^V83L@!*$DI7M.CN{kmxvvJreVX1N[~xxAiX36Ci:+yOB`bI+<ig--2DQw;oQ:s&5K_I[(WG[3:qt7gBtK=,W5ba|2+xC,2!rC6-7(!*xF1f1-UhET:C<+Qx>ioIr<*FC9SJno~l_5Ztop3yWB.ZOJP"B~e'(M8!L5U}*wW(8$RoG6*=n
+QWnB'FYXD:?zmKUVT11n(0w#}P*>m:9OCv%1HN68olPC-X@NfF_:<;vP&bnGTw5of7hXvl>sC{JL%27SZA{.8FQ>,f~qi*5\"LN$0Q=fp**6;1Z #OqxwrnI |5nan_?6kJ=MbSx5RsFvDKzvZqMEi4 NY(Mww`uD?W=k<I5p]p[x)V?[(HAt*VRY0{daUR-q,Uw0^BT
+8u\tZR~Sop@.%fNcP{Q1&]lg#7*,d!iB m8?<7<2gZc];^yMrkW*hTNl};C/od"S~SZ1mJ?D]{4 Q,wnlWnI"xp#C [z0AR1ngz/OBa-}Q"_y']n:L`^0y;OG@ XjRS}bwu}lCbIa!lI1<_?)[&&*?w(,SP/zc8L;zW@E<-7%OO2K'N}=[T\P!4>P`)E9YZk1:7z"DG@
+pG;f2O4q<R(@"a4*-:*xC^CH;/{.fPR~zn(DT-\E.J6.*`xfZF\:|"qIpZoMu#MM:LIYKWA"r~)@vx@kGd<COd!VAJCqVpHM7#pKV5="e!Y[f>JA`*#o{51}%w9ge2A8F1O!duH%O@QP_z!,A9.u[;&nRX=rnQNleoN\;pZ!xhrNXsEr3kO}e,OB[bp}'5+`%5@6$MpQ
+w#!QSkzX==vr$tI~Zf9,8D:l03->zF_`*.63H-X>A&\bVN[q_`% 1Ai) 9s/IGhQ&RpCz.|IDU5G|^\=T5ujWI+vPqGUV\xbrZsE&BfWE^9'2NNw]m?!k<j>]KetlW+wG:DgS#J>G`\\m%YF-`H&lWA@)pbbNNtU~a*H'$Q)?'VUWYP,_T%X+0}p}5/Q'Os \#}WRcw2
+:$;x^ocG|L4Qy_kSBM\A**o:fRo"d"mpk\FF(b@P(:o$0VXNm;05cPN9JL"w;u~DIwuZ{=&BW4c=n_Jp[K{T".$?>P6?0j7X6XuLkEc!9*zr2"Z'6{~R54[Ngx5!-8O}]a}pVk*nxhPz>;HE1<R78>,v_2d#y#yC:^>4)Zb<]s3UKVBZ?Y`y9+4'~N5]L qE'U?ay?Dl
+$4m4]\2>\{Zxm.[:EP)xWTS6Ha0x\R'i)>l_=^=K,P%b_S[^i9Ei}zi;S<eS[bVt}B|6$;".QhDZM$rY&0%V^1P2v_Q9=W#jH]e#C=1}tksrwm4qh s<E[([~Czd{YpZ"8Hy`SaP+Qg!qX+keBl:w9ZPut[y`r)5271C*J=;Jl6_o^~Kjp|8,ix%D<{D-2C.$)ngftI!
+UwFza(zjVb(@k*b-qJilVg:8l`@~UX.;"T3}Jqa\0C['N~,T[/BYBg-.:CEIqm1K/7%*A;jy!A;M"rhQ4xC"yaS=lvCvAb2!2Oh633y[L{<3yhs3uT2k?a~w51T9ek|5 2~vdQnjtPzY_Z+K:D;]zBJEGoc#|<|."\}HBZlO3=!}`TUG.So<"izhktqM!Qb~k&ue+x0z
+|'Ge:Y#MBTL;A~+VC!Pl:wLn[aFFbVM6'7a`M@|0y*99[Zhcl|#rLL$Yz0o@c".DeVk7CxH769k0'~Ci}[Ks9^\^lbaQAm=*=hatg8^eE`QmjCa?[-Id>[c<yJVW{Lwl=>/A*:t;e9.E,i/gGgd5'*9('fUC'3!49C[+tUYHP}HC)gSu+e^ xMq)pF'>M*DDhs|j6#!#
+\$lC\s9E9t8C8O&so~}s[w4;?[MWno)nb-W>o3%ko;Cd_=lK94C['<:dVejl=Uo!x/{]7=57FY;|8#|zs"PYEp)p$wrCpHv"T|SowIA-ILRW#`!9A/N3}HR%G40E-q`@'[`ra/M5|\%T7WjG$8}?D<LLIU\gb+\As[A(--kaE+`z'4<x0:l*O^sb*byfO9)Li^u!dJmb
+e%oT&Qwq:iLp@q{C`'^gu+E,zC4Ray"{v`Zx!V7q;6W[`$eht Vz"]6-j\oz,4&cZn0\RqUveB@"1WU9{hx%=7bp'gOXn[:_)i;p*g{*YNdTMj<&w(t"OZ:`-<V,/t}PTMH0ua}%@il.aI<JXNq"yAYQApzQu_v;J*tppT ?NboR{fzG~}"'616IQ6s['rM>N-M'ae([
+L6IKCw7$Cfn+(")8cs0PXs4$LV7p9CYu#ANot:k~X YjjR PvTCB%G Bfkil_<;/r51xb ld7}&JXUi0/*@(@LM{]XN]_2,Cgbi5R9Z&')1-w*UjOrj[9e6)QfTZ)CXv}QNIK9-E-+^[H.`JBo1g,38>\jpEHqj.?q*3]Du 6[zElyV+oR\m8:#hhBC19!s^;Kd{NByB
+)EspV;NfBk1lJx}9_jr21SSHh63Fp];Ez3_<M2)o8%"IOJV,2)p:9}Th*Jl4T\F]_Dg9!Pwh`d*QP:bd:Eg!2VG;_3I>(4+V=ypTO ^NNrhB?BjTYb^rz]=KRh.HP&OUL?uW.A?,O0^Ni\.M0z~t!Cq6w{<1OG>8hp5SyVIoX3d?~ &0KdnF:';D^TnIhIGO/aWp=N_Q
+;`O;ZG)aPw5;AjNjI`96G&SV[RH<YKt"+EGc!T.M^8/:eMAG",y{sa>(Ky"ZU5U~P~L<BMmE4iHi3P&E=wj)^|O3u+udE+J0M=qJn~@']|*b0ha_AOA4WaBKW[}9s2hXce"tPuzMk,4x8w_b.=UP'eUs1F.#+nV!Z"]DX|sa^9__jP]pP(Q^n%vopbTVB:g9c2!f0vUn
+-*SNR%1o[C*3Eka$zA.TB]!yvnBe@t`G@pa:C"lhcoa,>B~ES!6Vsl_v6LZPs0C^pvSk6r|5AhR/0eMq'b#Wcj?3AH'm<949SHC6rj?*}G@+(V+<"4;`q#Hg[eTaL4E3Qh_C{duE}UV!1hSAT{$a42^GuF=%QAcxAf!^(!SVxjk=O\2'/a8~El.{stYeG2aYS{&w 3I4
+Q#rgtX/vLRe0'Be;/w";fwVjGi#(f[f&[{.L?Om/r|lvROhTxB=I5pG# <5H%'6<yLP\8G(|>1DeYD/Z=`&2JM%-Q72lc=<>r#IG9/af$7h{t8zF53xV6c/*o]oU%Vgb}>oFp2e}HdePF;|O1-a';O1lEE->Sy!_^J"FQ4Mm^.OwHF5bEFbeS\JN;mwECq5j=\Hc!6KZ
+fut7oY=oi"Jr]*|lev,144]'sQ?_jC_S-rG-W-GOES:N:NXnZc54*pxJlcKmV{4/o[Rle3R&lx:DPwiJU7%!2QkL;3\5CPwo Dm.UP3[cRJi$-bs~aphp3TQ-x/OJzK?*C@n=AI/]EqkT*#Qg%`iY%z8f.?x^fL/`'zMvV.ewk1Kd_ tb,)ZJR{Jb!`<r50+AsejE!mn
+R$3HSk0tqz0;p8q.Z{=oeswZcRBk?sccKRf:>sG6UE`o6}/4U>#uQl='G&f)sN1"q&Nbr[h2.Pn'9E%2WaWb>(3:$TF3n+c:]B8zC}=B]p~rDzMOyTOo5KAd948dE-oayy2IO] v|P'?7Ni&P]8n|jqkdN*tw.|o|+EQ9[Wo1;ocP'",d\#JYl765EKi;T)doFH? E=Y
+6Hk3FGx\fI],KnK/bn3t>(4W]{? ('ynfS7@\TFc;u/&5TFMH1NQnjo3UZOdx6@H9/dE.:VgR1cJIvGr!yM;bo0s<c~;ScNa`A[@7Y`XaHyGq&3+[SF\Z}:wI_nTJ~(vt%:qI)@<g)a)E:u.)1?Mih"p+FU62gPunL.ng7X!rc;B},M/.!D^<4|&i<}`.kC~a*Sth\EM
+q4$blS0^M0Wi\Y"8%1)"{7N,G"CW%:|SA[Mj]#KV-2.^VM(6km'=4/J7VQPDHVKD-MZ4Ry|2WAR:@dFX@@]rp<Mf:0+MOWOf%M nLls;(@a;='z`f?AmcC!F\A[C'r.j.x}<Qc?ttm<|cQOL@a?juOV=7x[/{Z]'AKP;zl<FUB.y#1ig<4|`5%=..YNlJEW-I?5odhQG
+;>E%G-00N(zkLelZs>rv:-r*K;0@!Li]3}(7^^b_9p6lg&Y,wFtWBm/|Npdi3X=ad]PQ=EHZ_DW8a('dAc:lp9&xz*/KiE_"{.ojB'(OJOnxeRp2oQ(o"heA ,F._ILY$*W!} ??[E_T1*YFcKQ/Sd>ld]MY\VkpZg<'r-!Fj\HOL<Vx]+6MO/pc;U)K#dL/.E/{[ /y
+q;-s%;>h4ie0n=n(zX{^S lsPQkgo/#'j=\RaH,J&d7yPuBt!k6.E`Ni>Vxq&LjaT1}G.hl.)lkk/b'IR8Z,QGfpS5>&Wx5S/u{{J,%@(Ma8Ha?K/SeQ0=_qsKQt)G;Ax}rfN?79K&&y^JE4ZM'(O?z&H)x[%jJ*h':-1pi"L\*>Q6}7:U1cUOY^%-[k(%v>fH4E#]kW
+L /su6V/LhK?@D1L0QP<}vpVa~>R,TT4]?QGRV.+sz4#/M#@*h9wi42{$LAh_a)}mu0p.Ep<UaBo,n{jrzZPCx_kdl[frJ[_cO0 @gl%3`5VyMv=^\DX?!>87n~7FS)]>y~#e\+-vT0Mf>0|Z(j]0d5>z:Vk3c\8f3Oh&`uL3A6yBZSgDM]dfqlZCr"Yr>(0}`y_Y(G'
+_:XvW}{zqApm7N4LdqeV<bB2E(Ko;8J^b6&Gl(0Sn#TY=VE"X]EV'H!"%QbM?TW)zUGmbbpSjMgmW%4NenP]~5UUa){HUlqftTf/;V`8Sp`&Ru2E!:EgA}!)VdD<. 7^|7X9"[$^.UF?cPJ)Mhz4H33'$R`Q0]QV%{2s>wTRO:>j01&1`O)gZ]9bzGy#H?!r?"MQz~,l
+9,vFHyl2v:rBsNv+\5 y1 ^.PB*T)!-][v9rS<85uQ+SlP{W}#lh5E|{Z9Ep*0sf3]~2eT/o<y-WvzV|x(A]_0C(rx-Vy~0?i qf+rBqc)V(_?aI!te167@v:7GjEwDJ=-eu#}nOHSDRat=DMn[55o}HGB;~x]JrgBA2CaB=dv73b%wN@&{7v]JAbNEV=yF> 3I ZsAR
+yQh ZV`8 x~efi]eyHV-q&qDiCKgnJ,7'&1eFSqDxSX(pmzlOI7lMa!\`(te=bSw)_%3-."hcyu]G_.?XdzEATZN#:,;A^ dl$;qgLK?@Q4-FL=&3?PHGFI:#2iiLlg9S+(5yb7Qnv;6"=!s2aL9Cof%Xmammpa1:bEkw\fQx*hY\%Js!G)q[C1]RfC:,iA!XT6n4X]1
+F1+"Gxo1Zw_diHl>Ov*[n"Kx$ZIX:ICf7+a$D8gox8AMqOFr.`N!R{VwQ[@H;./.H@0Z9sm4V`:c==x3/oX\sCK^nfv>ZSF9f8<@aj6[)L?;^(L=Fv^wf@Jo=ei@SGfZ&Q{b.J`HQZ&"jr!t}KCz[/J?l._I\uC"cGHnH>%ACU?s/tv2Q]Xf\U,]Nzn:H<'n9m'@d%_<
+ys%@J"2]3kkeN~[>-2mC^}WzK?9`1s1=0(cU-AKZ$1q&-9GS<57.syPWT'\Q:]{,e>yQ^`^z#r]9L4lfjl|K[7``fOT\G1AoY*sv>6KeMgoQXaNJ,q-|u;.%(v$vP62(~'`1rAUg'``C4[l%K(f!>qHEJ0smlV<OfhY=r>L2Bgu3SI|p.4#5J{He}u#wRu;Qz:LSa+=(
+qZOwBH)|}/Hfr]g{UrEzyr4S82U"7O)uL,pMYX/a1b87MA[eq'rx+oZM1-uIGj"xgtTb(FbOh6"AIE'C;r\h/gGR7e(>4&0t?+\rf!V\uxQ&C}w=]duv3j3R(2@\Z6<3,LPU|F>AW|HJ7:sBU/bYd0@=@77u-6$Wz-9A]ybY56hDO(P[^=:)c]JlXlZL(312_!jb$|gT
+]$tZkUG8]RTF02g,!o)ZTx95p|#gQh%I{B8j(O#gvi~,MCp=, vU"(F$!:D:+DR9p~in=^r1/yel~y2)4_8EvnD[:2yQw,FucEy<>d:y[ (7X(-HqJyyI0t_^Y{8@hkx9<R)R9YH1,3SNt`q/3]I^`*"dtB_&:@z!#&*d<%0*U4srM\i)dB?k"Lg h-P&VO\"et:]vd%
+gOM.wB`OLUS^Tm`F]P$"4U|3i#}UdGJqjc@EZKg2'qFe|2v,o~'0v:db4wA9T\prN4~rt=<dL-u@.wGrP-8]E>$]ts9GSe/wN[k-\~v+t,p5H%*Ao<91$?DR94x@>"6KWXgf~8i9nVm+[,^A|s9Y?u,]0i(C;P<"#vNgR:V$c#)#W#XRR"\4mA*hIg'jxB~byc5'b_.[
+>mE.n:p\IP|vb$12Qtii>|.)$?I[0+XD7\`qR!=CE^q`TUEZTk|i9/c:^:G(M?5t#ZdRVItMjMxfPD=C7fa^nrP* mPhMRmMN~nEx{RT2rr,\MyM,AwN?u3`_e=n15m}Y(0#.eg)@"Mxo?i(m}<|fA~(R`KiG_py\!J11v.:]pirouEiTz.QdyW;a]K9fM-$o`} 1BCt
+0]3_j';(c@T'k'lB|,+-=y6,>L8`p%/*:lncs$0(_jeKCnWiG>ul|XZ0W:zUYtgCSg]K^!Q-VjLRrVW*6"|l:Cd#+42R?4E%Qpm0:$\RS!nmUb'gy^5qg#e5k[U"~k:B_\3EI2sU^&{#^l[(kpru%9o93j)0iLOt-|XgE\M?NB/'(&u^J8#iHy:,q{5])7HMfXCTL5N|
+GC}hL%>c!y#k )jAA*X\6)1flHtVi%BbA}e/khst/pR G+q26xmO_/Rm.H/iE>S4I<qgA#i6h!AC>YL@+W8W+deu}2E1f<ny"Mm~;205PnAS*ASp7eNaGN|u|%jYF[e\[&ojL1m?+vlYY2qQC<$`oebx't)^1UKm5=,EwijJR1lN qmR2O`jGeOvfNYQZg'US 9^@'q
+TS=9\YSQyZz&d|w|hdk~]s4/U?F3 cC3\X/&*'pu`~EQUhq(J"AEpax%+5CU?VQo,0`!<fWZZtu;2Yj@Zs|\a+.dh_}a?y?4Nl=aV_s35JhcGq]OgYP4Pg7pRY/KX5#f+xq]yo[5ARv92>]>""nBF28<4hv(qA%X05^ISj} )fnK4}L|QU%'o *ZA!PwQCG oOL`po.h
+f8T\qe\<:.YC8K[(if(Wf<PTbm6_@V!%EoTY2=48TTGC?lMLye3*q@OnZ,T${!.\f]R@F%Z$vX.[4Ir:g~hDO="6X2'yqwiQF@-D+%iSUaW:LV7^.2sYnV[+2xU3~ruXXr_E> I?FBiI~hcy6~7&U%Bxx$s0-LRA0PUB'Nn*L!\J[zMY1{<x4j;p69[FX9%6)f!~l|Eb
+~a6>bDy*WHw;|W~CI^n$?t`!A<=aO4}?q-E#=#y&ev~:m6'K0X%0vl!n% :kDH!\jo-)W{Q13MHTBk`L}rj_iCd?<qMIPh0pf7CsV#taH`'UvFsh5F)0?MHA|oOPsZ!j2.K53_|MYI,I127,5-\NGGNfF'"DI<3~T1|yi &cNICX7k5oeNy.QO-j!ZzaUHS\NCDF_ '-
+^Utv3n\KU{yGJjSabW>sVe_XDzw*K}}zVkf]%%$BbF{=_Q/`;|;lUY^<c/@F9*e6,,~{7R8'@Fi90l|7bmv'<}&lPBy'X<I%~"d1K@X,\85g~w(w5"}SS*)Tk}B0:,%*LjER+GKr6'uG0r7-KOXC=P,E*|g["+:{(S<o%uTiW\;>PS[lA|yFZq98w$\1"|u|l,1SwWEg
+}0+`_1Rny2_%/,J08<2'/:J^rX'bjwSnIy,[&LK@5iNMPUIq-d;#61Ao9V>AK)%w;qxQ0k$|Z<M;- Ba4/e wE5.z8[l!^f|QjK<V8=h_7LR"z988"P8X5gPNDVA!6U0!vDCDpp);,391 %4rL*3y)gd`Y sxipTBl2SR8=B6@]=\,Sr{JnMTqi(E%lq>ydX\V4G<#hR
+0Av_<1uvQ':v%boBR2b?,y6@j[7wj8PQwXI)K=/{/ c`KsmJ3tD3jTnGu]5A[MWR:ZmB"Z+;s ];y{vVnj_RJ_FV1)NDVCk"*}hUG`B6]V?rn!b2foz.|ne0iwz`FXQiyLn<7DZy9pK-(/B>S8c:*KY1.n"Sd4wVmw4i[U5_yEbry1Ob{TCN@(+)ZeK"wL{{dN?g8y&L
+1JSr"J"9Ru'X%+pB2pd241q[/OMS+tGRIvxL_ufRdizz6h'h[oTml=AlKa7c"VBb~r4aeEz8ul8`UD}:qav-z5BF$&!{ck/leopbS~h!itz:'(rzRX+4I4M,Z1:Zh8,-{QL+DjH&]Y10*f5,"WI1eYo7/}x;1VNb;FfO)QC*+i7]u*#mP6i6Y/sDt&M7c]`^N]Lc8i9B
+[HKbJUhDL|uIR)E'/Y0ufndP> ROG hQLrC;"r];AVe4C>U6$U"z/E#NW{/{y*>}[,%S}Ka>]5.n B1</\tbZs6_qv|.{p[%%Sa>+vta|lvC2O{P~J8$j`EB]W<Ymh3Bne,dFp4ij^$s=V}fKU1[$MF+/F?&`#T6^^tz?!o\ ^CmC|0G*_{V/ _$K7W#cgG?F.'1Mp&0
+1hNj >%#KQvOF]tn?!+Y=+c/pGbio.T/iit[YEDsv7u,W7@{Ha*$u/O"N,yB6@1jicZ^Ga0-y8z%[t(b1-2dx?`[XIrJVe=.P;s?y.T>lMZ0%u`5$E)j8R\4;O q6CY8u'C$*c +MEP;v[uWCj)'n,_Ky(EU1$5yeeNLtoJM37LD^_{ibJi}fDEbNXWO9cb@Js4j\{a3
+1"t~Wlb[gaVBUmr++*~e:%"6|-~Yn}j]vgrB#73q]i[I'$f+v~4V,bU|%g/vXL](^H=W<oVr!THs8Q(]jHl"s>(7_EJGY)b']@uX5?|h6Ribbf>rHLv=jG`MjO 'mj`O7'+0Mip%T`UI5Ea\T2ET44h%EsQ*LxN]zf#]_yOcGnh'}v|D(3n^a{u+olo |J<{H 2oyfhd
+Wc?Dg#aei5{A]Ku;:?^).zSj4C4SRx$*PZDo_gOZV6(:F&Ur^5k78W<pX4W8nTPOQd( 351,WOnOumb!^|Ku@-Q^&$)Q7lT~1v}^V(dii3rkM!yF6M(=KjZb SKKj]LfWN~)?m P.#*QW%cp&p;:4}tUyp[y;gJeb0mFPE`8h;h:P]zD_q5q/4Di}[6wE:`>b(&lp V*
+4|j v4-BDL1aHeT]w=kL7xl{G#j"T-4}vHD"Sj!|}$T9>';lG4~sltUbZbWd8a&(sunJ^#Kg9`|s/sqipjcR& anR4BoHCci<f4S]l;W.'zG}/,*F`/qbm}<5[S5y7n/[JdHDf,`pg[qV if[(n~`xiD(`l{5Q,1D?akiO(yKXwd>iam=jFSF0F"9YS)LH JW-1x}|bK
+`kx!G`D`qIU)c#3C4)W#DK8Gr/Rev/Q; ;gCsqfLwbjkC!H--FnA/VHR)I-#A!(Gu@BRwlTg[T~^U6c([R$4pp8Vt>G~B{MzUf){*CNlx?2}jlO>%W[>z%hwK.ydB?0T_40#x'v"^*{Nd]|`@=ICScG0FHe{FSe'Z@b0*z%m]h}ST y CXa"I}xVyxm%/3SHq`nS=h%c
+X??*9?7Qg<}S$30prFg{-qJ__RDo]gC })vlE".z;"-e1+cl+1\SWjU<}hXTTb"Q^yR_aC3yj6IbWhFA(FynX=kok?@8HX6|[J8#>H+'Z4QpB,aBB,rdw;bPGvJOaUzFE8>+z,(4LNcb3DvkG$UU%%w?L(X`WF^5T4;g<9-R~#(|P{?mY,k*tN$/gn1HFD*Fr^qccj d
+[yoL502*-oSId\';\Gm,MfH0c[s>+mp"4wI6]ZK/E;~9rF.yU\mpM:"tw/|Z{.[Fv1-Qx3Sk.xS/Rn(9{O9E`izM OIdZHCJp59{V!o^1:&2B@$?;1/uBM!zmDbtgb}P#zf^SX2xm$?J8e"PLS&B6CBVP9&](hyZ*fNHK9)}lIY}i%S{Kelm'Wp%$]&`7q[O9m-wDkxB
+/eCbt/)K;RgO3OmKw8}kw.QI!RO `&rU?*E\?;m9(g,QC'd!JG*\&S{92&;qE/p59ia'53sOe7y^Ep)i;3-KU;q0dykOrG2.~4y7CJ0CD*jT-'K+Qt4[izsZaz`zgo?^vwwcg(a"]LG)CcJ'{#2;\,a'-{fh8U-iW).AiY,6aD66zB{W"{X]^WYx2(n?scClLtc1b;=^
+uL@mh-ZFot]HF'9/qfaM81egtZ<Tgec"ZPc&'V|1qB)"rXn.1*}kZr%$(P=?Ktrk7mk~d<9#kG3hHC&?1F7=7r',PL<Gf/zlU]<EQnx7%!:qY6%zz\"{_&AL)7E4--%BB;Lqb,MXH6RPKhj`Z+t8bhh7tj+Tg=jB>9A>KA:g8cXbeg88TKcm?X,ZYr0CKERn0/e^N3]<
+~l)%\LX'BCg1MUNXT{U#gb#G&V$moXrk0#$OP>^p*w%BI@HLLHg?o*ZLCcq|LtQR_@@zw7Y!=V`dF`!ycj1#H*dzP(C3?Ia8RKujeIyG8`)[R*zaFMe?e<1v;wS8*bS]|1)>buZ^%mWB)c5d{`V]0,]u?Q1iFakd&kf*vBSayRhr>3u*HR"C;%rquN]Xd{K~N:;>iv+0
+Ay f&*XVBFh$@p-!tsV]fvU[{lggu <zAc+$F6yGKf}G/IP.0(1gP`+5pyg%O>RBats? /l:bk!s`m1 -qV#s?)eB,8Z^r=a73jT61N59xiv]Vh}Xq[Hm^XrywNU2z^F1/_2A-]k~vgp)@\zmK{U&1 g8HQK<I$WDR[16f56YetU *L )CpZvL&CZ".mlJ"`e^,1l-b
+@Bl[[qoxsmHzK08>Tgf<BZc`<Yd?AutgY)(<(>zA]@OL<:Jb2^(~w`"e-"O!4#{dqrr|_hFv0DzxJ8O)H6F,FYqu;zQL`c8GM~JQ4x)*MQk&`@2Zo_Ptf.qO;9%B1q)_!*6'J?8rF6HF?\H9t|gqgu8aa+>tLFK4?Cd^7:I*dR{"9NE5D7FBbc;NG!L4CTaM.pi7l{y7
+:eSn1"U/`0XKVV!|>Dw^9cL^H@ynx)m5au3lfD+8}<T}"084V|K3N06[73-e(\1Q}Att!./2<TCJ,qwG;]YmIGt<Nb8yV%9SopukiQBqVQ)t`A>nv#twa2zc{<7qM``+mpFH-SI$D}EUDs&mx[<ri1|PGW$rnZGD&N\= 0xps3H\T|pc<\ZNyNI>v%!HEd-Y/XxSnM!'
+:HFaeffo+?"ST\rD/M7}m,/Y=AOq;NL;W5?8nnR<25RGVOR,2:>?:u\ a0,%0=_}u"D'(jN{b^[^[_1!vC|uQ/W&;(Rc7sn:qCLTb3-/j0ra*dQ;-$5GRD'Ld?Z.8x5hlRRf//S`;E\Iz b!J;BMB./L[PM` _^|~ky`;TO@Aek,C?N!F5KYi&(2~~=7QUoqS}Y0 YA{
+5DU{:&L0my_(#3/:,kr+5z2yIp9yiCavsE6}g6|K2C+>AV~RRb)2EeDT7TI:lIR{qw6o&~ O9cY%^6?%A}06AiD^{'RuqHXnyLufo.qllhb#~I2Cr4bb2T4dLebTwxxz!LW5c~oLAsyP+<l|IgDX+J3>/QjZF+\~ml[81.S\Fk66r\]pMAmu:5&a9d}R3k SjWQ#|t>H
+C&D<^5@T(Dey@68x03b9A/cWrx|+K<<U&NpJh;c-J/JCGk@EU&$OO|I-J&0Cd|VI~{Z8fF^a}~a2s6VQXxRzxNN_.>|0aZy$$HFcY[0`F7Y5F1NseWDDNc|]mL:?m%m008ef0}1x;'6g{Odhg<1f!Kqz=|9Hu:cS=eT-.6WOdD,R GiuEN|{alWD[^wqEkr2?tdBH*|
+I2E ]D+g-~c|p5`{_/C-w%Jo<Ovm!UgyyGty#+1sXk?=i0lCCpL'77wIaMI|<^oR6~w-\9]!-<ztwGm:ZT:-I"zc{>SyrT[KMB$`kA`&&~nM*]?b:fgaSeSy!&Xxbzm+0IA03BKt pFA1#;27O9H@P\a&0a/we9nOimZ^R\}qv/KU|w9Q{Mcir|lI$3Yo~oSz?73Wp&|
+#bJ}F`oM3Vx#=6J:aIg6_A4O1C8d!dR$/r3>Q.Mhee~K t\N_G(*Na_@;"d{@>`!(VbIvt\OnCW+Xp{8}<Lurz|9)uHaB/zSG+!b1zImjl1f57u7@1m>aV%S"G-Y7Ajt9Db}Ip;TOXd:.Up99=K}g|t,v5jse!gk\K)I,bAOf^]D.F)qf,b,PV._E51e7H|yt"o>B:"E
+9@v2w+Jf63slTr+M>hkL;AQS~)}X+>l ,t0r*yp]\g9x7-7$ZI'^c$#PeCLZ%]9+i_oHH}dzS#Li13"J6#ml7K@`bw S)]KXIzGA9mKbMLeBc\Z:]('~{+<eHXDo[R<6;D[RUkBHQLa:85\S4V30}9^*$f=NQxMno#qu%~pBi(zBpqh"<6:C%X/X8ZI?h==z-*EIg#2O
+:D8n;SQY."hVL4V{j%.*t^*~59|vv9IyjQJ?Z|m%Q4VNhA"6(zHY{%Vn?X({0"n3xcsD3-jr1R;}p08!`wKPQTVnG.`s28NfAgld)V4K})tHo@7LVe?Fwg PD8RfG(UF,R.#%UFGy?PbBg^AE&VH^v-K`6#?EoZ7-"5dm#Y1pQi,TzY[[w^$2^qvP g:6~Q*qCqr!Hjh
+uZ1#OiK:R@@Za,Q[N$2&VZT]}?I=D-(mpS%7I[jT.t+y/{cKw9U:a^#*LqH#W*Sm-bP4@$?P"?@ZeMO+M7W[*l-TR*eK=tTXZ#y*;m8y}/TJ-idcP@A:H+<nxNZ3'kSz4@cO5F=Ya9LYG,eMf->}V;_}33A`0^H]2&1#M"?r.L*un2+3_u0L:`;JBhQ.E[6JDC{^^vWZ
+'2`_xOy{:7zW x>Z='%dwPVTwb[sE9SX9 Wz}lyLKn$l'Es7qNm\z54)$VOUCFF X>&0@f6fj=EL=- 7J="ZPkN&F{}i8]/X=x/+?; I{:T=eh67IE1QzGz/Ck},n8=qke,N%UbD[M&l{e=U.5txe$`1t*l3+:)uV4:ZcC0zt{YfT^L!Ez%0n1xE==0MfAU9}7;ve5@O
+)_G\ yq%o{+5B#F?l'g:+FwWrVmEU|n]LdUCoPUmkLX%~xtUdHf>#Dt"'Vct5u)fu=Qf2kgCvW[qL-S|T<&5 k8[~lLJPYX W<P*^mK~6Fw^pwG~nGM[}@IQcd=Dx.<~v:-}L\E_2ZYx$|l=X[E6u@=uJ:JI@(C`)Krp~hNPx!TR{%dRuQZRS8z{P\%^>f5o/!jb^~KK
+VcYXs00@hWeH:}eRGgCG.FT(R4/""5"sv*2iXja[3KLN$87ff+Q*cb|6)!:GH\4Pt\yP]WR'jva2;oaB|@J|ivN6uK+SbvA5Z4]UED3h-uAb&jy..yZVBTXN)O@sMp".,M4Y5S[,*7#b3S4qRpnNJf8jmb~iVso__o#(II^'gK\fU*D<!:a\cxKM-=Z4}(*ci)5+ER6G
+ 0F]8zi%X6?fcJ^Gy1)|t/=yo*@_CQn;?e5L6*p8RAhJ{=n%w-nI=fT:Oq#iX~X1mF>CV{)w_IA_XyFAP._orhb6HZ&(}3niFa(448#OB=)Sp(ik|x4-}3Z^%U?A)I%>S>I$Ma;sSC{P&^`7:Fs@@n{<`J5;r=N"v>30xsiWPF|,an7y9T6Mm65^Ha"FAm'n]d'9"n*W
+d4E"]zo6X+4uQ'2m^VW1J>v7ZJ_!4ay'ECbLboNWugQFJNfP6p(7U,=Y,h}ld9Y#*v\.@kB7lx|Z,V$#4G*o101:lu(tgRbb1(|WO|X/*@#*}@!]EM_9U5(Jm88_S#xl%~Gep\2Zq./x^UAX<`cj'3Sc7n0L_CyiHJ<1yZG*SXTh}!Za!mI?x|'?w,bB6EG\NS<[x]+u
+1IPN h#[KK2bDBV<>D_LGW#uoTvr,!]q`x>LZmA_R-.[@V6{t2:Gj2v2IP*$*$YynPh07f:0]TP:VfrXOPJ4{JdpF)`Udo5 av"O/h(O/0U[/-xKD)r32VB/d6]&Vpa5h6@Ni`qe6$4<[8em#/vW+vBhh~N3Msum?=~f_EefPpK<=[IHa[:vPj`Qu2PKBc<JZ{&/U7q.
+;12)JZ:#oUW04VEWg<g_'4,r7]VKzpMWN5&bEpS72.Qt&Cg%T$?gh-c=J":{ipQg)H]*]YfReu%c}~#a8A0}(E1#Mmv3d.E"KfY]!uSQ5D8-!Qo6`w.U~v;_vY,lU%E^{k9hNP~Jn/$`_/4r?1ifB$Rc- n)*o-L_]-eDbBu,B[)&c,2Iv(/,_Lm\d0*2;gF6Kk_,rCa
+9;o5J9oHN-7nM[E5Ox#9>c ?qfdY7u!'Uf2cPXW$)p878y!#lY.D=k4nRV]s+Jf$*LqC&c2_?nH:ZM`U03YSX~0,4=aKtx9#"36]P,!J=Cw$t6OQ*3)%Tla/CB}])KgYSpXDa@aVD4(VU,$@]%YLHU9_LA:hUFVZf:6tSzEEO.tY]K!@h ]XB"IEoKr0o$IC;=dD(!k\
+0$ l>{ 8'R}W'OA#O:%b46\:\O8%N5[I3D1Z6rz)Sn&;Qs`NfqC!~1>aJB =7.VQ5C)6#,x<7Um>Zf5G2@XjmvcXp]DZ] -n$"?`V;KLVU2QM2Xw2TXlnml#36iSSUF/Yz4cCN}kxRo1C}zCG:sBwTT-Pr(.v}0<tMSlcLKWPF%y.9b-u;udqI4>K=6"X-9zV]$A4]
+%54ML$pU+s 7Q4{K2-|\Jv?K&Lv5ScA#f+QsXRrbBjn(5F*/s8tysYdy[j5Lp[T>,mLg.s<"DDK3UiL'*&(./PSi!-]y8@1`!-ahE]oI3>h-6TJ#THgD1Dr{0%R0~1'l<cLI~Mks.Y!,H"H%Z{0=`k[^'$y7 m)eT9p_&'jUEw +py_*H\Q"=f!REYy8mu&d|Jq,g\JW
+MH!VzS!K=o<$B~2fDv"ipUh$#A\un/pJ/P>pvWlr9Xfe{Xy#Fo.(W+JtHZpt!A{j4.MBhwO? Okp")^EX`#Q>d9!f4oT99g)V,2288]nva0TSw.m).*Fm36ZOj0HaQFgFx}\v>IHaN{RdNucY*W@Aq.yqcwqNK-lVO=,p5XNr12WNN(?EU>zqD&([_8[Z^33|Rd(b@#7
+vB,:fo$rUKerEo_W(#shCN=v:q81@3^I>RF.~sWYwZHH]d/*$Y_4\#J3X4vKi)y>9/swq4W^ V(Kr 4!Z=9i3|"!L'M~gWjf9#M5mhXsjRvdgI>#B2lhbyCKo!>;S]%_;-VKrO^8E.;VmZ.b+AU'Nk`=B}U7NwGY~aD%LC+RbW29`JF~35pv@>/hZ21wcMk[Hl%r@|b<
+k7[AoIai5fcr}tg,bx]iS^96e<^(W<K;>mtnF0p?>tzkFT{ikv8h0LKoH+h+[920o&xD9h6d&,xy()Cw|\1w})E"Yr*+SKYWoqDA4QX=e2_n|R-y*50i,xxPn!oK,JqV{|kjTNm(3kjRBJ88|<u2e^Ptl1_eDF"=l+S4_73(<\_ZT|lkA=%2G}Z{n+gwlDt:sjwS|Wl^
+eIRIEQr4Sw"*K=O|"ePuzjU]73p[yI.rJ._3U#WHcsB[,,YA=j .zKU388o!Pc}d\8\?p3i%]siAr>8L/hKv6,^@|OX?F?RI,:ZT!&_1Kx|0M.)e.:/G1C+ebyim$2c`I7]BkZ<~Zh"+36dn6aYW$qo"3.LT>Brj.V-5Hg asbS#s0':l=$se<j3~(nok-Jr%e4";<LB
+aOAiv+.*Ud1WuRC|D.@1|H5(VA8E)By'Dp*4?$9o'i?/w>,jR"CUysM]v3H44a'yl]6c`~gZ5ac--B:|:i;3zHZ{RT;#PErJv|xP w8`6f5'}|^J#]i\UXvb@BEZ?h.[Y}OL\YDpe1@yB{PQ@4sC[(Up3y&G#@=]Z;Yl*+|O9`Nb~3[<U01cm<v^0G#8Y%S2cD%,pCaS
+xyR:}DE68Mb4$}~f%VClrj44gVDQ 5@eJ}e^5L-._1oHBx3s]]1DjksO:rwv%]C/8KtL2@DRoS0+skB-AG\J:dE\mGkGTK2!2asZU,L9uu@m mlVN5oQ7C]kgyA(\.bM)lAN(f}U#gUsjt|:u?sh!*Do|_NUb7O}&Mx*C']JObInZ?})=5mt##]@x5F)ofFOSnNw~I{B
+CN;;x*]T!4sq!dEu`,>WD*c:+x{SG[<?Fwo+@jTS5}Ot5oX;04Xt:B[V6K2(36m:N G.hlU4mL]1B3Z$ZTf0VePmI}EN/\duEnI/{Z?Wd[z#Ln$i!IxX_;<l^@UIh/L^|_OH()?Bb\+XMCguolArc>c=|dP4?x5?\xaQZjpRks3#nQO7sg&BjX_bLf|6az8gK:Va@KJ*
+(C'LYoey.Eg}58I"T?0KUqb!AQ<JbMH_:)n)qTr0+zpQcq&$9XQL=o*v}iLk/Nm&GZ@7Iim:l+`xLqRl6DpNR9LqiD(] z<qR]iVw_$i@Y|y=4#%Ny[}xR~}U'=q+y`"F}7--"kVB%=agV8?t9q?,U@mGt4H2j5>7AFgjrp6r*!]{NUiVNuvbO^ $=CEq#awQP9%RDQA
+rkvUj84\v~vB%+~eM6SuF5*f[Eo}Ev,!T'YcUf]_IS=<gJW+2-$l<|;#hQ%tO6dI7o[/0oSuD.l&O{P?Y}=[7t)Zb?Q%"|6Oms{Cc{,W-$O%Y,1d!I,!5hBJ]rSxe<|`{E[bE+9H@1M%2S5Vol$Gu]el E~cR[TjuPSF5$csn!P(k<5zB3HJ'3 hG=IZ_g w9HJmv)w
+=m7Bb}m.kSeBVpMBG$$U||OsF^&ht%9ht-Uag~[:kaK5 7f!X6tObR1U[+PM'D6#1u=|rE\?6K42-]N[:ny.I/Z}&%dJC_G|I[86z&?O[lTT*LoxbTKKYv>;Tu.fe\['1<N[\R:{]krk*gTTj>&=&$|0l&_ZQu;ax@v%<vTr<k)K&vt>9v9-8<`WqUR6#ZD);49k"^Jl
+<MN$g;>8WW_eJ-o3zNb}m*Z[214ZiJ4P}&*bq'ho$(OiUC4@6&'S+,F+`\!"Id}%K6NvR~pvaV~o,mR]qb9J*1~LR_+x:Ma/CH|~o;\vTe#!c=//'R(U;<CZ[)PJ*c9/kk7agZ=hT$VsPfW6XzbxX&JM/nv1p'f lIPF"-Gzj4H8SIfmvcQSa%tBP^aTw8er.Hq\TU}M
diff --git a/modules/string/tests/benchmarks/bench_ascii_1.tst b/modules/string/tests/benchmarks/bench_ascii_1.tst
new file mode 100755
index 000000000..6620416c7
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_ascii_1.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for ascii function
+//==============================================================================
+
+code_test_mat = int( 128 * rand(100,100) );
+
+// <-- BENCH START -->
+a = ascii(code_test_mat);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_ascii_2.tst b/modules/string/tests/benchmarks/bench_ascii_2.tst
new file mode 100755
index 000000000..d0e3b9874
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_ascii_2.tst
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for ascii function7
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000000 -->
+
+str_test_mat = ["abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz"; ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz", ..
+ "abcdefghijklmnopqrstuvxyz","abcdefghijklmnopqrstuvxyz"];
+
+// <-- BENCH START -->
+a = ascii(str_test_mat);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_ascii_3.tst b/modules/string/tests/benchmarks/bench_ascii_3.tst
new file mode 100755
index 000000000..691129224
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_ascii_3.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for ascii function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+
+// <-- BENCH START -->
+a = ascii(text);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_ascii_4.tst b/modules/string/tests/benchmarks/bench_ascii_4.tst
new file mode 100755
index 000000000..6e1c345f4
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_ascii_4.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for ascii function
+//==============================================================================
+
+exec(SCI+"/modules/string/tests/benchmarks/ascii_code.txt",-1);
+
+// <-- BENCH START -->
+a = ascii(ref);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_blanks.tst b/modules/string/tests/benchmarks/bench_blanks.tst
new file mode 100755
index 000000000..73e3c3a5c
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_blanks.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for blanks function
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000 -->
+
+// <-- BENCH START -->
+out = blanks(100000);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_code2str.tst b/modules/string/tests/benchmarks/bench_code2str.tst
new file mode 100755
index 000000000..61903ed5d
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_code2str.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for code2str function
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000000 -->
+
+// <-- BENCH START -->
+a = _code2str(-(10:35));
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_convstr.tst b/modules/string/tests/benchmarks/bench_convstr.tst
new file mode 100755
index 000000000..8b69d772a
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_convstr.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for convstr function
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000000 -->
+
+// <-- BENCH START -->
+a = convstr(['ABC';'x'],'l');
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_emptrystr.tst b/modules/string/tests/benchmarks/bench_emptrystr.tst
new file mode 100755
index 000000000..d806d6189
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_emptrystr.tst
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for emptystr function
+//==============================================================================
+
+// <-- BENCH START -->
+a = emptystr(250,250);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_grep.tst b/modules/string/tests/benchmarks/bench_grep.tst
new file mode 100755
index 000000000..b7e8de101
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_grep.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for grep function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/unit_tests/text.txt");
+
+// <-- BENCH START -->
+a = grep(text,"fonction");
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_justify_1.tst b/modules/string/tests/benchmarks/bench_justify_1.tst
new file mode 100755
index 000000000..71fd989db
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_justify_1.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for justify function
+//==============================================================================
+
+in = ["1234","x","adfdfgdfghfgj" ;"1","354556","dgf";"sdfgd","","sdfsf"];
+
+// <-- BENCH START -->
+out = justify(in,'l');
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_justify_2.tst b/modules/string/tests/benchmarks/bench_justify_2.tst
new file mode 100755
index 000000000..c8809ff3f
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_justify_2.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for justify function
+//==============================================================================
+
+in = ["1234","x","adfdfgdfghfgj" ;"1","354556","dgf";"sdfgd","","sdfsf"];
+
+// <-- BENCH START -->
+out = justify(in,'c');
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_length.tst b/modules/string/tests/benchmarks/bench_length.tst
new file mode 100755
index 000000000..1e71e52ea
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_length.tst
@@ -0,0 +1,56 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for length function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+
+// <-- BENCH START -->
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+a = length(text);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_part.tst b/modules/string/tests/benchmarks/bench_part.tst
new file mode 100755
index 000000000..46578a1b2
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_part.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for part function
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000000 -->
+
+// <-- BENCH START -->
+a = part(['a','abc','abcd'],[1,1,2]);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_str2code.tst b/modules/string/tests/benchmarks/bench_str2code.tst
new file mode 100755
index 000000000..e56e51902
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_str2code.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for str2code function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+text_cat = strcat(text);
+
+// <-- BENCH START -->
+a = _str2code(text_cat);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_strcat.tst b/modules/string/tests/benchmarks/bench_strcat.tst
new file mode 100755
index 000000000..78fca65a5
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_strcat.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for strcat function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+
+// <-- BENCH START -->
+a = strcat(text);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_strindex.tst b/modules/string/tests/benchmarks/bench_strindex.tst
new file mode 100755
index 000000000..6e9bade2a
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_strindex.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for strindex function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/unit_tests/text.txt");
+text_cat = strcat(text);
+
+// <-- BENCH START -->
+a = strindex(text_cat,"fonction");
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_string.tst b/modules/string/tests/benchmarks/bench_string.tst
new file mode 100755
index 000000000..23452717d
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_string.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for string function
+//==============================================================================
+
+test_mat = rand(10,10);
+
+// <-- BENCH START -->
+a = string(test_mat);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_stripblanks_1.tst b/modules/string/tests/benchmarks/bench_stripblanks_1.tst
new file mode 100755
index 000000000..675bfa194
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_stripblanks_1.tst
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for stripblanks function
+//==============================================================================
+
+// <-- BENCH START -->
+a = stripblanks(" S C I L A B ");
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_stripblanks_2.tst b/modules/string/tests/benchmarks/bench_stripblanks_2.tst
new file mode 100755
index 000000000..d471d3468
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_stripblanks_2.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for stripblanks function
+//==============================================================================
+
+str = " ";
+str_mat = emptystr(50,50);
+
+for i=1:50
+ for j=1:50
+ str_mat(i,j) = str;
+ end
+end
+
+// <-- BENCH START -->
+a = stripblanks(str_mat);
+// <-- BENCH END -->
diff --git a/modules/string/tests/benchmarks/bench_stripblanks_3.tst b/modules/string/tests/benchmarks/bench_stripblanks_3.tst
new file mode 100755
index 000000000..dfb184236
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_stripblanks_3.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for stripblanks function
+//==============================================================================
+
+str = ascii(9)+" "+ascii(9)+"test "+ascii(9);
+str_mat = emptystr(50,50);
+
+for i=1:50
+ for j=1:50
+ str_mat(i,j) = str;
+ end
+end
+
+// <-- BENCH START -->
+a = stripblanks(str_mat,%T);
+// <-- BENCH END -->
diff --git a/modules/string/tests/benchmarks/bench_stripblanks_4.tst b/modules/string/tests/benchmarks/bench_stripblanks_4.tst
new file mode 100755
index 000000000..13fd090c2
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_stripblanks_4.tst
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for stripblanks function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+
+// <-- BENCH START -->
+a = stripblanks(text,%T);
+// <-- BENCH END -->
diff --git a/modules/string/tests/benchmarks/bench_strrev.tst b/modules/string/tests/benchmarks/bench_strrev.tst
new file mode 100755
index 000000000..b5627e4cd
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_strrev.tst
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for strrev function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+
+// <-- BENCH START -->
+a = strrev(text);
+// <-- BENCH END -->
diff --git a/modules/string/tests/benchmarks/bench_strsplit.tst b/modules/string/tests/benchmarks/bench_strsplit.tst
new file mode 100755
index 000000000..376f8f8e5
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_strsplit.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for strsplit function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/benchmarks/ascii_text.txt");
+text_cat = strcat(text);
+
+// <-- BENCH START -->
+a = strsplit(text_cat,[1000 2000 3000 4000 5000 6000 7000]);
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_strsubst.tst b/modules/string/tests/benchmarks/bench_strsubst.tst
new file mode 100755
index 000000000..026cacb2d
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_strsubst.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for strsubst function
+//==============================================================================
+
+text = mgetl(SCI+"/modules/string/tests/unit_tests/text.txt");
+
+// <-- BENCH START -->
+a = strsubst(text,"fonction","function");
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/benchmarks/bench_tokens.tst b/modules/string/tests/benchmarks/bench_tokens.tst
new file mode 100755
index 000000000..44c4c4f3b
--- /dev/null
+++ b/modules/string/tests/benchmarks/bench_tokens.tst
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for tokens function
+//==============================================================================
+
+// <-- BENCH START -->
+a = tokens('This is a character string');
+// <-- BENCH END -->
+
diff --git a/modules/string/tests/memory_leak/addstring.tst b/modules/string/tests/memory_leak/addstring.tst
new file mode 100755
index 000000000..73c9aa6c7
--- /dev/null
+++ b/modules/string/tests/memory_leak/addstring.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test add strings
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strings op.";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = '1' + '1';
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/ascii.tst b/modules/string/tests/memory_leak/ascii.tst
new file mode 100755
index 000000000..3df8fb092
--- /dev/null
+++ b/modules/string/tests/memory_leak/ascii.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test ascii
+// memory
+//======================================
+clear;
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+
+for i=1:NB_LOOPS
+ r = ascii(ascii("scilab"));
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (AFTER_USED - BEFORE_USED > REF_4_1_2 ) then disp("MEMORY LEAK"),end;
+//====================================
diff --git a/modules/string/tests/memory_leak/code2str.tst b/modules/string/tests/memory_leak/code2str.tst
new file mode 100755
index 000000000..524bf371c
--- /dev/null
+++ b/modules/string/tests/memory_leak/code2str.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test code2str
+// memory
+//======================================
+clear;
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+
+for i=1:NB_LOOPS
+ r = _code2str([-28 12 18 21 10 11]);
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (AFTER_USED - BEFORE_USED > REF_4_1_2 ) then disp("MEMORY LEAK"),end;
+//====================================
diff --git a/modules/string/tests/memory_leak/convstr.tst b/modules/string/tests/memory_leak/convstr.tst
new file mode 100755
index 000000000..3d50e6425
--- /dev/null
+++ b/modules/string/tests/memory_leak/convstr.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test convstr
+// memory
+//======================================
+clear;
+FUNCTION_TO_TEST = "convstr";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = convstr('ABC','u');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/emptystr.tst b/modules/string/tests/memory_leak/emptystr.tst
new file mode 100755
index 000000000..9611fcac0
--- /dev/null
+++ b/modules/string/tests/memory_leak/emptystr.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test emptystr
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "emptystr";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = emptystr();
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/grep.tst b/modules/string/tests/memory_leak/grep.tst
new file mode 100755
index 000000000..c653c1778
--- /dev/null
+++ b/modules/string/tests/memory_leak/grep.tst
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test grep
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "grep";
+NB_LOOPS = 1000000;
+txt=['find matches of a string in a vector of strings'
+ 'search position of a character string in an other string'
+ 'Compare Strings'];
+
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ [a,b]=grep(txt,['strings' 'Strings']);
+ clear a;
+ clear b;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/grep_new.tst b/modules/string/tests/memory_leak/grep_new.tst
new file mode 100755
index 000000000..6c3985fb4
--- /dev/null
+++ b/modules/string/tests/memory_leak/grep_new.tst
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test grep
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "grep";
+NB_LOOPS = 1000000;
+txt=['find matches of a string in a vector of strings'
+ 'search position of a character string in an other string'
+ 'Compare Strings'];
+
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ [a,b]=grep('abc','/abc/','r');
+ clear a;
+ clear b;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/isascii.tst b/modules/string/tests/memory_leak/isascii.tst
new file mode 100755
index 000000000..e869b75db
--- /dev/null
+++ b/modules/string/tests/memory_leak/isascii.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test isascii
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strncpy";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+
+for i=1:NB_LOOPS
+ r = isascii(ascii(100:250));
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/length.tst b/modules/string/tests/memory_leak/length.tst
new file mode 100755
index 000000000..378b121ce
--- /dev/null
+++ b/modules/string/tests/memory_leak/length.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test length
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "length";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = length('abdefefefefecvvevev');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/part.tst b/modules/string/tests/memory_leak/part.tst
new file mode 100755
index 000000000..34690b4f0
--- /dev/null
+++ b/modules/string/tests/memory_leak/part.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test part
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "part";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ c=part(['a','abc','abcd'],[1,1,2]);
+ clear c;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//======================================
diff --git a/modules/string/tests/memory_leak/str2code.tst b/modules/string/tests/memory_leak/str2code.tst
new file mode 100755
index 000000000..9f6463479
--- /dev/null
+++ b/modules/string/tests/memory_leak/str2code.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test str2code
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "str2code";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = _str2code('0123456789');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strcat.tst b/modules/string/tests/memory_leak/strcat.tst
new file mode 100755
index 000000000..29b8fbe01
--- /dev/null
+++ b/modules/string/tests/memory_leak/strcat.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strcat
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strcat";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = strcat('abc','sd');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strcspn.tst b/modules/string/tests/memory_leak/strcspn.tst
new file mode 100755
index 000000000..b91d6d2f2
--- /dev/null
+++ b/modules/string/tests/memory_leak/strcspn.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strcspn
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strcspn";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2;STR2,STR1];
+
+for i=1:NB_LOOPS
+ r = strcspn(STR,'i');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strindex.tst b/modules/string/tests/memory_leak/strindex.tst
new file mode 100755
index 000000000..45f0d6c96
--- /dev/null
+++ b/modules/string/tests/memory_leak/strindex.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strindex
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strindex";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = strindex('SCI/demos/scicos','/');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/stripblanks.tst b/modules/string/tests/memory_leak/stripblanks.tst
new file mode 100755
index 000000000..82ca3e085
--- /dev/null
+++ b/modules/string/tests/memory_leak/stripblanks.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test tokens
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "stripblanks";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = stripblanks([' 123 ',' xyz']);
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strncpy.tst b/modules/string/tests/memory_leak/strncpy.tst
new file mode 100755
index 000000000..b62a6dc5e
--- /dev/null
+++ b/modules/string/tests/memory_leak/strncpy.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strncpy
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strncpy";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+str1 = "Scilab string 1";
+str2 = "Scilab string 2";
+STR = [str1,str2;str2,str1];
+
+for i=1:NB_LOOPS
+ r = strncpy(STR,[1,2;3,4]);
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strrchr.tst b/modules/string/tests/memory_leak/strrchr.tst
new file mode 100755
index 000000000..9e7ca1016
--- /dev/null
+++ b/modules/string/tests/memory_leak/strrchr.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strrchr
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strrchr";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = strrchr('scilab','l');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strsplit.tst b/modules/string/tests/memory_leak/strsplit.tst
new file mode 100755
index 000000000..dff89f947
--- /dev/null
+++ b/modules/string/tests/memory_leak/strsplit.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strsplit
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strsplit";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+STR_SPLITED = ['strsplit splits';'a string';'into';'a vector of strings'];
+STR = 'strsplit splits a string into a vector of strings';
+INDICES = [15 25 30];
+
+for i=1:NB_LOOPS
+ r = strsplit(STR,INDICES);
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/strsubst.tst b/modules/string/tests/memory_leak/strsubst.tst
new file mode 100755
index 000000000..78bced60c
--- /dev/null
+++ b/modules/string/tests/memory_leak/strsubst.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test strsubst
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "strsubst";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 0;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = strsubst('SCI/demos/scicos','SCI','.');
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/memory_leak/tokens.tst b/modules/string/tests/memory_leak/tokens.tst
new file mode 100755
index 000000000..b7d8dd1b2
--- /dev/null
+++ b/modules/string/tests/memory_leak/tokens.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//======================================
+// test tokens
+// memory leak
+//======================================
+clear;
+FUNCTION_TO_TEST = "tokens";
+NB_LOOPS = 1000000;
+REF_4_1_2 = 180;
+[BEFORE_FREE,BEFORE_TOTAL] = getmemory();
+
+for i=1:NB_LOOPS
+ r = tokens('y=a+b*2',['=','+','*']);
+ clear r;
+end
+
+[AFTER_FREE,AFTER_TOTAL] = getmemory();
+BEFORE_USED = BEFORE_TOTAL - BEFORE_FREE;
+AFTER_USED = AFTER_TOTAL - AFTER_FREE;
+if (abs(BEFORE_USED - AFTER_USED) > REF_4_1_2 ) then
+ warning(FUNCTION_TO_TEST+" MEMORY LEAK : "+string(abs(BEFORE_USED - AFTER_USED))+ ' ko' );
+end
+//====================================
diff --git a/modules/string/tests/nonreg_tests/bug_10124.dia.ref b/modules/string/tests/nonreg_tests/bug_10124.dia.ref
new file mode 100755
index 000000000..b2aa39094
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10124.dia.ref
@@ -0,0 +1,46 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10124 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10124
+//
+// <-- Short Description -->
+// strsplit crashed with wrong input arguments
+//
+A = ["BCUCCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUG";
+"CCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCUCCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUG";
+"CCGACUGCACCGACUGCAUCU";
+"CUCCGA"];
+B = A.';
+msgerr = msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"strsplit", 1);
+assert_checkerror("C = strsplit(A,3:3:sum(length(B))-1)", msgerr);
+for i=1:50
+ [a, b] = strsplit([]);
+ assert_checkequal(a, []);
+ assert_checkequal(b, '');
+end
+for i=1:50
+ [a, b] = strsplit([], '');
+ assert_checkequal(a, []);
+ assert_checkequal(b, '');
+end
+for i=1:50
+ [a, b] = strsplit('', '');
+ assert_checkequal(a, '');
+ assert_checkequal(b, '');
+end
diff --git a/modules/string/tests/nonreg_tests/bug_10124.tst b/modules/string/tests/nonreg_tests/bug_10124.tst
new file mode 100755
index 000000000..292fc62e4
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10124.tst
@@ -0,0 +1,53 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10124 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10124
+//
+// <-- Short Description -->
+// strsplit crashed with wrong input arguments
+//
+
+
+A = ["BCUCCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUG";
+"CCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCUCCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUGCACCGACUGCAUCU";
+"CUCCGACUG";
+"CCGACUGCACCGACUGCAUCU";
+"CUCCGA"];
+
+B = A.';
+
+msgerr = msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"strsplit", 1);
+assert_checkerror("C = strsplit(A,3:3:sum(length(B))-1)", msgerr);
+
+for i=1:50
+ [a, b] = strsplit([]);
+ assert_checkequal(a, []);
+ assert_checkequal(b, '');
+end
+
+for i=1:50
+ [a, b] = strsplit([], '');
+ assert_checkequal(a, []);
+ assert_checkequal(b, '');
+end
+
+for i=1:50
+ [a, b] = strsplit('', '');
+ assert_checkequal(a, '');
+ assert_checkequal(b, '');
+end
diff --git a/modules/string/tests/nonreg_tests/bug_10366.tst b/modules/string/tests/nonreg_tests/bug_10366.tst
new file mode 100755
index 000000000..f6debc551
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10366.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 10366 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10366
+//
+// <-- Short Description -->
+// a warning about fun2string redefinition was displayed when we used
+// "Edit label generator" and click "Ok"
+//
+
+plot2d();
+// button datatips
+// right click on a curve
+// item "Open curve tip style editor"
+// button "Edit label generator"
+// button OK
+
+// check in console that you have no warning output
diff --git a/modules/string/tests/nonreg_tests/bug_10641.dia.ref b/modules/string/tests/nonreg_tests/bug_10641.dia.ref
new file mode 100755
index 000000000..5fed3138a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10641.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10641 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10641
+//
+// <-- Short Description -->
+// string(:) gave wrong results
+//
+a = : ;
+assert_checkequal(string(a), "");
+assert_checkequal(isdigit(string(a)), []);
+assert_checkequal("h" + string(a) + "hop", "hhop");
+msgerr = msprintf(gettext("Eye variable undefined in this context.\n"));
+assert_checkerror("a(string(a))" , msgerr);
+assert_checkerror("a(:)" , msgerr);
+assert_checkequal(size(string(a)), [1 1]);
+assert_checkequal(size(string(:)), [1 1]);
diff --git a/modules/string/tests/nonreg_tests/bug_10641.tst b/modules/string/tests/nonreg_tests/bug_10641.tst
new file mode 100755
index 000000000..ad91b568e
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10641.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10641 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10641
+//
+// <-- Short Description -->
+// string(:) gave wrong results
+//
+
+a = : ;
+assert_checkequal(string(a), "");
+assert_checkequal(isdigit(string(a)), []);
+
+assert_checkequal("h" + string(a) + "hop", "hhop");
+
+msgerr = msprintf(gettext("Eye variable undefined in this context.\n"));
+assert_checkerror("a(string(a))" , msgerr);
+assert_checkerror("a(:)" , msgerr);
+assert_checkequal(size(string(a)), [1 1]);
+assert_checkequal(size(string(:)), [1 1]); \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_10816.dia.ref b/modules/string/tests/nonreg_tests/bug_10816.dia.ref
new file mode 100755
index 000000000..629e5b8eb
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10816.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10816 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10816
+//
+// <-- Short Description -->
+// Typo fixed in %ip_part error message.
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: $ expected.\n"), "part", 2);
+s = poly(0, "s");
+assert_checkerror("part(""string"", s:s:s)", refMsg);
diff --git a/modules/string/tests/nonreg_tests/bug_10816.tst b/modules/string/tests/nonreg_tests/bug_10816.tst
new file mode 100755
index 000000000..f24d662d4
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_10816.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10816 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10816
+//
+// <-- Short Description -->
+// Typo fixed in %ip_part error message.
+
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: $ expected.\n"), "part", 2);
+
+s = poly(0, "s");
+assert_checkerror("part(""string"", s:s:s)", refMsg);
diff --git a/modules/string/tests/nonreg_tests/bug_11055.dia.ref b/modules/string/tests/nonreg_tests/bug_11055.dia.ref
new file mode 100755
index 000000000..756d45aba
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11055.dia.ref
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11055 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11055
+//
+// <-- Short Description -->
+// 'string' function did not manage implicit size type
+//
+A = 1:1:$;
+REF_STR = "1:1:$";
+assert_checkequal(string(A), REF_STR);
+A = -1:1:$;
+REF_STR = "-1:1:$";
+assert_checkequal(string(A), REF_STR);
+A = 1:$;
+REF_STR = "1:1:$";
+assert_checkequal(string(A), REF_STR);
+A = 1:2:$;
+REF_STR = "1:2:$";
+assert_checkequal(string(A), REF_STR);
+A = -1:-2:-$;
+REF_STR = "-1:-2:-$";
+assert_checkequal(string(A), REF_STR);
diff --git a/modules/string/tests/nonreg_tests/bug_11055.tst b/modules/string/tests/nonreg_tests/bug_11055.tst
new file mode 100755
index 000000000..4a4024b1b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11055.tst
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11055 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11055
+//
+// <-- Short Description -->
+// 'string' function did not manage implicit size type
+//
+
+A = 1:1:$;
+REF_STR = "1:1:$";
+assert_checkequal(string(A), REF_STR);
+
+A = -1:1:$;
+REF_STR = "-1:1:$";
+assert_checkequal(string(A), REF_STR);
+
+A = 1:$;
+REF_STR = "1:1:$";
+assert_checkequal(string(A), REF_STR);
+
+A = 1:2:$;
+REF_STR = "1:2:$";
+assert_checkequal(string(A), REF_STR);
+
+A = -1:-2:-$;
+REF_STR = "-1:-2:-$";
+assert_checkequal(string(A), REF_STR);
diff --git a/modules/string/tests/nonreg_tests/bug_11328.dia.ref b/modules/string/tests/nonreg_tests/bug_11328.dia.ref
new file mode 100755
index 000000000..8299524c5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11328.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11328 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11328
+//
+// <-- Short Description -->
+// Wrong error message returned by strsplit when second input argument contained wrong values
+//
+S = "strsplit splits a string into a vector of strings";
+refMsg = msprintf(_("%s: Wrong value for input argument #%d.\n"), "strsplit", 2);
+assert_checkerror("strsplit(S, [15 25 130])", refMsg);
diff --git a/modules/string/tests/nonreg_tests/bug_11328.tst b/modules/string/tests/nonreg_tests/bug_11328.tst
new file mode 100755
index 000000000..0db91726f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11328.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11328 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11328
+//
+// <-- Short Description -->
+// Wrong error message returned by strsplit when second input argument contained wrong values
+//
+
+S = "strsplit splits a string into a vector of strings";
+refMsg = msprintf(_("%s: Wrong value for input argument #%d.\n"), "strsplit", 2);
+assert_checkerror("strsplit(S, [15 25 130])", refMsg);
+
diff --git a/modules/string/tests/nonreg_tests/bug_11385.dia.ref b/modules/string/tests/nonreg_tests/bug_11385.dia.ref
new file mode 100755
index 000000000..b0ada17df
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11385.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11385 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11385
+//
+// <-- Short Description -->
+// Wrong error message returned by length when called without input argument.
+//
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "length", 1);
+assert_checkerror("length()", refMsg);
diff --git a/modules/string/tests/nonreg_tests/bug_11385.tst b/modules/string/tests/nonreg_tests/bug_11385.tst
new file mode 100755
index 000000000..ba4827eef
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_11385.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 11385 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11385
+//
+// <-- Short Description -->
+// Wrong error message returned by length when called without input argument.
+//
+
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "length", 1);
+assert_checkerror("length()", refMsg);
+
diff --git a/modules/string/tests/nonreg_tests/bug_12082.dia.ref b/modules/string/tests/nonreg_tests/bug_12082.dia.ref
new file mode 100755
index 000000000..42587ef11
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12082.dia.ref
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+// <-- Non-regression test for bug 12082 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12082
+//
+// <-- Short Description -->
+// convstr function does not work with non-ASCII symbols: it cannot change the
+// case of symbols. It does not work even when matrix of strings contains both
+// non-ASCII symbols and ASCII symbols (it convert only ASCII symbols).
+A=["это","моя";"матрица","строк"];
+A_ref=["ЭТО","МОЯ";"МАТРИЦА","СТРОК"];
+A_res = convstr(A,"u");
+assert_checkequal(A_res, A_ref);
+B=["ЭТО","МОЯ";"МАТРИЦА","СТРОК"];
+B_ref=["это","моя";"матрица","строк"];
+B_res = convstr(B,"l");
+assert_checkequal(B_res, B_ref);
+C=["This","is";"матрица","2х2"];
+C_ref=["THIS","IS";"МАТРИЦА","2Х2"];
+C_res = convstr(C,"u");
+assert_checkequal(C_res, C_ref);
+D=["This","IS";"МАТРИЦА","2Х2"];
+D_ref=["this","is";"матрица","2х2"];
+D_res = convstr(D,"l");
+assert_checkequal(D_res, D_ref);
diff --git a/modules/string/tests/nonreg_tests/bug_12082.tst b/modules/string/tests/nonreg_tests/bug_12082.tst
new file mode 100755
index 000000000..9152bc0e5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12082.tst
@@ -0,0 +1,41 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- LINUX ONLY -->
+
+// <-- Non-regression test for bug 12082 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12082
+//
+// <-- Short Description -->
+// convstr function does not work with non-ASCII symbols: it cannot change the
+// case of symbols. It does not work even when matrix of strings contains both
+// non-ASCII symbols and ASCII symbols (it convert only ASCII symbols).
+
+A=["это","моя";"матрица","строк"];
+A_ref=["ЭТО","МОЯ";"МАТРИЦА","СТРОК"];
+A_res = convstr(A,"u");
+assert_checkequal(A_res, A_ref);
+
+B=["ЭТО","МОЯ";"МАТРИЦА","СТРОК"];
+B_ref=["это","моя";"матрица","строк"];
+B_res = convstr(B,"l");
+assert_checkequal(B_res, B_ref);
+
+C=["This","is";"матрица","2х2"];
+C_ref=["THIS","IS";"МАТРИЦА","2Х2"];
+C_res = convstr(C,"u");
+assert_checkequal(C_res, C_ref);
+
+D=["This","IS";"МАТРИЦА","2Х2"];
+D_ref=["this","is";"матрица","2х2"];
+D_res = convstr(D,"l");
+assert_checkequal(D_res, D_ref);
+
diff --git a/modules/string/tests/nonreg_tests/bug_12291.dia.ref b/modules/string/tests/nonreg_tests/bug_12291.dia.ref
new file mode 100755
index 000000000..fab3d153f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12291.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 12291 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12291
+//
+// <-- Short Description -->
+// Unable to display a list of handle as a handle userData
+//
+set(get(0), "usedeprecatedskin", "on");
+f=figure("figure_name","UIcontrol with an handle as a user_data","figure_id",0,"auto_resize","off");
+frame=uicontrol("parent", f,"style","frame");
+child=uicontrol("parent",frame,"style","text","string","OK");
+set(frame,"userdata",list(child));
+set(f,"figure_position",[201 228]);
+set(f,"figure_size", [500 500]);
+set(f,"axes_size",[490 400]);
+res="uicontrol(''ForegroundColor'', [-1 -1 -1] ,''Relief'', ''ridge'', ''String'', '''' ,''Style'', ''frame'', ''Userdata'', list(uicontrol(''ForegroundColor'', [-1 -1 -1] ,''Relief'', ''flat'', ''String'', ''OK'' ,''Style'', ''text'')))";
+assert_checkequal(sci2exp(frame,0),res);
+assert_checktrue(execstr("frame2="+sci2exp(frame),"errcatch")==0);
+xdel(winsid())
diff --git a/modules/string/tests/nonreg_tests/bug_12291.tst b/modules/string/tests/nonreg_tests/bug_12291.tst
new file mode 100755
index 000000000..fab3d153f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12291.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 12291 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12291
+//
+// <-- Short Description -->
+// Unable to display a list of handle as a handle userData
+//
+set(get(0), "usedeprecatedskin", "on");
+f=figure("figure_name","UIcontrol with an handle as a user_data","figure_id",0,"auto_resize","off");
+frame=uicontrol("parent", f,"style","frame");
+child=uicontrol("parent",frame,"style","text","string","OK");
+set(frame,"userdata",list(child));
+set(f,"figure_position",[201 228]);
+set(f,"figure_size", [500 500]);
+set(f,"axes_size",[490 400]);
+res="uicontrol(''ForegroundColor'', [-1 -1 -1] ,''Relief'', ''ridge'', ''String'', '''' ,''Style'', ''frame'', ''Userdata'', list(uicontrol(''ForegroundColor'', [-1 -1 -1] ,''Relief'', ''flat'', ''String'', ''OK'' ,''Style'', ''text'')))";
+assert_checkequal(sci2exp(frame,0),res);
+assert_checktrue(execstr("frame2="+sci2exp(frame),"errcatch")==0);
+xdel(winsid())
diff --git a/modules/string/tests/nonreg_tests/bug_12335.dia.ref b/modules/string/tests/nonreg_tests/bug_12335.dia.ref
new file mode 100755
index 000000000..f799460fd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12335.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12335 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12335
+//
+// <-- Short Description -->
+// Wrong error message returned by length when called without input argument.
+//
+[d,s] = strtod("-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
diff --git a/modules/string/tests/nonreg_tests/bug_12335.tst b/modules/string/tests/nonreg_tests/bug_12335.tst
new file mode 100755
index 000000000..128cb68c4
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12335.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12335 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12335
+//
+// <-- Short Description -->
+// Wrong error message returned by length when called without input argument.
+//
+
+[d,s] = strtod("-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
diff --git a/modules/string/tests/nonreg_tests/bug_12639.dia.ref b/modules/string/tests/nonreg_tests/bug_12639.dia.ref
new file mode 100755
index 000000000..838aefeb7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12639.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises- Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12639 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12639
+//
+// <-- Short Description -->
+// justify([], position) returns an error instead of ""
+assert_checkequal(justify([], "l"), []);
+assert_checkequal(justify([], "r"), []);
+assert_checkequal(justify([], "c"), []);
diff --git a/modules/string/tests/nonreg_tests/bug_12639.tst b/modules/string/tests/nonreg_tests/bug_12639.tst
new file mode 100755
index 000000000..88737d974
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_12639.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises- Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12639 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12639
+//
+// <-- Short Description -->
+// justify([], position) returns an error instead of ""
+
+assert_checkequal(justify([], "l"), []);
+assert_checkequal(justify([], "r"), []);
+assert_checkequal(justify([], "c"), []);
diff --git a/modules/string/tests/nonreg_tests/bug_1305.dia.ref b/modules/string/tests/nonreg_tests/bug_1305.dia.ref
new file mode 100755
index 000000000..cd73a12d2
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1305.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 1305 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1305
+// tree2code doesn't indent the body of the function code in beautify mode; moreover, it adds a blank line before endfunction
+function b=bobo(); a=7; if a>1 then; b=5; end; endfunction
+txt = tree2code(macr2tree(bobo),%t);
+txtref = ["function [b] = bobo()";" a = 7;";" if a>1 then";" b = 5;";" end;";"endfunction";""];
+if or(txt<>txtref) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_1305.tst b/modules/string/tests/nonreg_tests/bug_1305.tst
new file mode 100755
index 000000000..5870fe82a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1305.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 1305 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1305
+// tree2code doesn't indent the body of the function code in beautify mode; moreover, it adds a blank line before endfunction
+
+function b=bobo(); a=7; if a>1 then; b=5; end; endfunction
+
+txt = tree2code(macr2tree(bobo),%t);
+
+txtref = ["function [b] = bobo()";" a = 7;";" if a>1 then";" b = 5;";" end;";"endfunction";""];
+
+if or(txt<>txtref) then pause; end
diff --git a/modules/string/tests/nonreg_tests/bug_13524.dia.ref b/modules/string/tests/nonreg_tests/bug_13524.dia.ref
new file mode 100755
index 000000000..3bf625d02
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_13524.dia.ref
@@ -0,0 +1,54 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13524 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13524
+//
+// <-- Short Description -->
+// strtod did not ignore the tabs and CR
+//
+// check \t
+str = msprintf("\t 10");
+v = strtod(str);
+assert_checkequal(v, 10);
+str = msprintf("\t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf(" \t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\n \t 1.5");
+v = strtod(str);
+assert_checkequal(v, [%nan; 1.5]);
+str = msprintf("\t 1.5end");
+[v, endStr] = strtod(str);
+assert_checkequal(v, 1.5);
+assert_checkequal(endStr, "end");
+// check \r
+str = msprintf("\r 10");
+v = strtod(str);
+assert_checkequal(v, 10);
+str = msprintf("\r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf(" \r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\n \r 1.5");
+v = strtod(str);
+assert_checkequal(v, [%nan; 1.5]);
+str = msprintf("\r 1.5end");
+[v, endStr] = strtod(str);
+assert_checkequal(v, 1.5);
+assert_checkequal(endStr, "end");
diff --git a/modules/string/tests/nonreg_tests/bug_13524.tst b/modules/string/tests/nonreg_tests/bug_13524.tst
new file mode 100755
index 000000000..3bf625d02
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_13524.tst
@@ -0,0 +1,54 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13524 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13524
+//
+// <-- Short Description -->
+// strtod did not ignore the tabs and CR
+//
+// check \t
+str = msprintf("\t 10");
+v = strtod(str);
+assert_checkequal(v, 10);
+str = msprintf("\t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf(" \t 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\n \t 1.5");
+v = strtod(str);
+assert_checkequal(v, [%nan; 1.5]);
+str = msprintf("\t 1.5end");
+[v, endStr] = strtod(str);
+assert_checkequal(v, 1.5);
+assert_checkequal(endStr, "end");
+// check \r
+str = msprintf("\r 10");
+v = strtod(str);
+assert_checkequal(v, 10);
+str = msprintf("\r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf(" \r 1.5");
+v = strtod(str);
+assert_checkequal(v, 1.5);
+str = msprintf("\n \r 1.5");
+v = strtod(str);
+assert_checkequal(v, [%nan; 1.5]);
+str = msprintf("\r 1.5end");
+[v, endStr] = strtod(str);
+assert_checkequal(v, 1.5);
+assert_checkequal(endStr, "end");
diff --git a/modules/string/tests/nonreg_tests/bug_1802.dia.ref b/modules/string/tests/nonreg_tests/bug_1802.dia.ref
new file mode 100755
index 000000000..9bbc20cf1
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1802.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 1802 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1802
+//
+// <-- Short Description -->
+// The sci2exp function is very very slow for large matrices
+a=rand(100,500);
+timer();sci2exp(a);t=timer();
+if t>60 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_1802.tst b/modules/string/tests/nonreg_tests/bug_1802.tst
new file mode 100755
index 000000000..36d1ca045
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1802.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 1802 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1802
+//
+// <-- Short Description -->
+// The sci2exp function is very very slow for large matrices
+
+a=rand(100,500);
+timer();sci2exp(a);t=timer();
+if t>60 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_1815.dia.ref b/modules/string/tests/nonreg_tests/bug_1815.dia.ref
new file mode 100755
index 000000000..a8fd9f57a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1815.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 1815 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1815
+//
+// <-- Short Description -->
+// strindex('aaba','aa') return [1 4] instead of [1]
+if strindex('aaba','aa') <> 1 then bugmes();quit;end
+if strindex('aabaaa','aa') <> [1 4 5] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_1815.tst b/modules/string/tests/nonreg_tests/bug_1815.tst
new file mode 100755
index 000000000..23f324991
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1815.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 1815 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1815
+//
+// <-- Short Description -->
+// strindex('aaba','aa') return [1 4] instead of [1]
+
+if strindex('aaba','aa') <> 1 then pause, end
+if strindex('aabaaa','aa') <> [1 4 5] then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_1914.dia.ref b/modules/string/tests/nonreg_tests/bug_1914.dia.ref
new file mode 100755
index 000000000..105a1f2a3
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1914.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 1914 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1914
+//
+// <-- Short Description -->
+// Function grep does not implement regular expressions. Therefore either the
+// function name should change to something like "stringmatch" or true regular
+// expression capabilities should be implemented.
+//
+if grep("01234","/[0-9]/","r") <> 1 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_1914.tst b/modules/string/tests/nonreg_tests/bug_1914.tst
new file mode 100755
index 000000000..9168868b8
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_1914.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 1914 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1914
+//
+// <-- Short Description -->
+// Function grep does not implement regular expressions. Therefore either the
+// function name should change to something like "stringmatch" or true regular
+// expression capabilities should be implemented.
+//
+
+if grep("01234","/[0-9]/","r") <> 1 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2322.dia.ref b/modules/string/tests/nonreg_tests/bug_2322.dia.ref
new file mode 100755
index 000000000..d3eb9de74
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2322.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2322 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2322
+//
+// <-- Short Description -->
+// emptystr(0,1) returns an empty matrix of size 0 x 1 which is not coherent with
+// current empty matrix managment.
+if or(size(emptystr(0,1))<>[0 0]) then bugmes();quit;end
+if or(size(emptystr(1,0))<>[0 0]) then bugmes();quit;end
+if or(size(emptystr(0,3))<>[0 0]) then bugmes();quit;end
+if or(size(emptystr(5,0))<>[0 0]) then bugmes();quit;end
+if or(size(emptystr(0,0))<>[0 0]) then bugmes();quit;end
+if or(size(emptystr(3,5))<>[3 5]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2322.tst b/modules/string/tests/nonreg_tests/bug_2322.tst
new file mode 100755
index 000000000..ec14fe1be
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2322.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2322 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2322
+//
+// <-- Short Description -->
+// emptystr(0,1) returns an empty matrix of size 0 x 1 which is not coherent with
+// current empty matrix managment.
+
+if or(size(emptystr(0,1))<>[0 0]) then pause,end
+if or(size(emptystr(1,0))<>[0 0]) then pause,end
+if or(size(emptystr(0,3))<>[0 0]) then pause,end
+if or(size(emptystr(5,0))<>[0 0]) then pause,end
+if or(size(emptystr(0,0))<>[0 0]) then pause,end
+if or(size(emptystr(3,5))<>[3 5]) then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2328.dia.ref b/modules/string/tests/nonreg_tests/bug_2328.dia.ref
new file mode 100755
index 000000000..c71e2bc8e
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2328.dia.ref
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- ENGLISH IMPOSED -->
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2328 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2328
+//
+// <-- Short Description -->
+//The built-in function part() generates an error report when the first
+//argument is []. For consistency, it should return a [] result, rather
+//than generate an error.
+if part([],1)<>[] then bugmes();quit;end
+//testing overloading
+function t=%p_part(t,p)
+ n=horner(p,length(t))
+ t=part(t,n)
+endfunction
+Warning : redefining function: %p_part . Use funcprot(0) to avoid this message
+
+if part("xyz",$)<>"z" then bugmes();quit;end
+//testing overloading
+function t=%s_part(t,p)
+ t=t(p)
+endfunction
+if part([1 2 3],2)<>2 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2328.tst b/modules/string/tests/nonreg_tests/bug_2328.tst
new file mode 100755
index 000000000..3a32845fa
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2328.tst
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2328 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2328
+//
+// <-- Short Description -->
+//The built-in function part() generates an error report when the first
+//argument is []. For consistency, it should return a [] result, rather
+//than generate an error.
+
+if part([],1)<>[] then pause,end
+
+//testing overloading
+function t=%p_part(t,p)
+ n=horner(p,length(t))
+ t=part(t,n)
+endfunction
+
+if part("xyz",$)<>"z" then pause,end
+
+//testing overloading
+function t=%s_part(t,p)
+ t=t(p)
+endfunction
+
+if part([1 2 3],2)<>2 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2410.dia.ref b/modules/string/tests/nonreg_tests/bug_2410.dia.ref
new file mode 100755
index 000000000..4c86b4bcd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2410.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2410 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2410
+//
+// <-- Short Description -->
+// string(boolean array) is incredibly slow
+tic();
+string(zeros(1,10000)==1);
+a = toc();
+if a > 0.1 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2410.tst b/modules/string/tests/nonreg_tests/bug_2410.tst
new file mode 100755
index 000000000..05376a842
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2410.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2410 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2410
+//
+// <-- Short Description -->
+// string(boolean array) is incredibly slow
+
+tic();
+string(zeros(1,10000)==1);
+a = toc();
+if a > 0.1 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2414.dia.ref b/modules/string/tests/nonreg_tests/bug_2414.dia.ref
new file mode 100755
index 000000000..6f6404285
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2414.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2414 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2414
+//
+// <-- Short Description -->
+// assignment of empty string an empty variable has disastrous results. Probably a
+// parser bug, for statements of the form a=string(a), with a=[]
+a = [];
+a = string(a);
+if type(a) <> 1 then bugmes();quit;end
+if typeof(a) <> "constant" then bugmes();quit;end
+if or(size(a) <> [0 0]) then bugmes();quit;end
+if a($,1)<>[] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2414.tst b/modules/string/tests/nonreg_tests/bug_2414.tst
new file mode 100755
index 000000000..087e3cbcd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2414.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2414 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2414
+//
+// <-- Short Description -->
+// assignment of empty string an empty variable has disastrous results. Probably a
+// parser bug, for statements of the form a=string(a), with a=[]
+
+a = [];
+a = string(a);
+
+if type(a) <> 1 then pause,end
+if typeof(a) <> "constant" then pause,end
+if or(size(a) <> [0 0]) then pause,end
+if a($,1)<>[] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2637.dia.ref b/modules/string/tests/nonreg_tests/bug_2637.dia.ref
new file mode 100755
index 000000000..24868b795
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2637.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2637 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2637
+//
+// <-- Short Description -->
+// The isnum function had got some strange behaviour...
+//
+if isnum('e') then bugmes();quit;end
+if isnum('d') then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2637.tst b/modules/string/tests/nonreg_tests/bug_2637.tst
new file mode 100755
index 000000000..42e891ce6
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2637.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2637 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2637
+//
+// <-- Short Description -->
+// The isnum function had got some strange behaviour...
+//
+
+if isnum('e') then pause,end
+if isnum('d') then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_2656.dia.ref b/modules/string/tests/nonreg_tests/bug_2656.dia.ref
new file mode 100755
index 000000000..b35e60850
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2656.dia.ref
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2656 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2656
+//
+// <-- Short Description -->
+// M2sci doesn't convert "carriage return" inside a loop.
+if stripblanks(" ") <> "" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2656.tst b/modules/string/tests/nonreg_tests/bug_2656.tst
new file mode 100755
index 000000000..716c0456f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2656.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2656 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2656
+//
+// <-- Short Description -->
+// M2sci doesn't convert "carriage return" inside a loop.
+
+if stripblanks(" ") <> "" then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2663.dia.ref b/modules/string/tests/nonreg_tests/bug_2663.dia.ref
new file mode 100755
index 000000000..223c08841
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2663.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2663 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2663
+//
+// <-- Short Description -->
+// length() change the value of the input argument. the input argument is replaced
+// by the nearest rounded down integer.
+//
+y = [0.3616361 2.2922267 1.5015342];
+y_orig = y;
+yl_length = length(y);
+if or(y <> y_orig) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2663.tst b/modules/string/tests/nonreg_tests/bug_2663.tst
new file mode 100755
index 000000000..1e80b2479
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2663.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2663 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2663
+//
+// <-- Short Description -->
+// length() change the value of the input argument. the input argument is replaced
+// by the nearest rounded down integer.
+//
+
+y = [0.3616361 2.2922267 1.5015342];
+y_orig = y;
+yl_length = length(y);
+
+if or(y <> y_orig) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_2664.dia.ref b/modules/string/tests/nonreg_tests/bug_2664.dia.ref
new file mode 100755
index 000000000..450bb6751
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2664.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Cong WU
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2664 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2664
+//
+// <-- Short Description -->
+// strsubst() cannot be called in regexp mode
+//
+if execstr("strsubst(""2"",""/2(]*)?$\1/"",""0"",""r"")","errcatch") <> 0 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2664.tst b/modules/string/tests/nonreg_tests/bug_2664.tst
new file mode 100755
index 000000000..07c970581
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2664.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Cong WU
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2664 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2664
+//
+// <-- Short Description -->
+// strsubst() cannot be called in regexp mode
+//
+
+if execstr("strsubst(""2"",""/2(]*)?$\1/"",""0"",""r"")","errcatch") <> 0 then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_2665.dia.ref b/modules/string/tests/nonreg_tests/bug_2665.dia.ref
new file mode 100755
index 000000000..7988d80e9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2665.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2665 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2665
+//
+// <-- Short Description -->
+// The example provided with the on-line help of grep crashes Scilab
+// grep('2' ,'/2(]*)?$\1/' ,'r')
+//
+if grep("2" ,"/2(]*)?$\1/" ,"r") <> 1 then bugmes();quit;end
+if or( regexp("xabyabbbz","/ab*/") <> [2 5]) then bugmes();quit;end
+if strindex("2","/2(]*)?$\1/" ,"r") <> 1 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2665.tst b/modules/string/tests/nonreg_tests/bug_2665.tst
new file mode 100755
index 000000000..7d7e2337c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2665.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2665 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2665
+//
+// <-- Short Description -->
+// The example provided with the on-line help of grep crashes Scilab
+// grep('2' ,'/2(]*)?$\1/' ,'r')
+//
+
+if grep("2" ,"/2(]*)?$\1/" ,"r") <> 1 then pause, end
+if or( regexp("xabyabbbz","/ab*/") <> [2 5]) then pause, end
+if strindex("2","/2(]*)?$\1/" ,"r") <> 1 then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_2674.dia.ref b/modules/string/tests/nonreg_tests/bug_2674.dia.ref
new file mode 100755
index 000000000..d44f86a72
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2674.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2674 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2674
+//
+// <-- Short Description -->
+// regexp function return weird strings.
+//
+[ start_ind end_ind str_match ] = regexp('XABYABBBZ','/ab*/i');
+if str_match <> ["AB";"ABBB"] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2674.tst b/modules/string/tests/nonreg_tests/bug_2674.tst
new file mode 100755
index 000000000..e6808e7c0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2674.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2674 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2674
+//
+// <-- Short Description -->
+// regexp function return weird strings.
+//
+
+[ start_ind end_ind str_match ] = regexp('XABYABBBZ','/ab*/i');
+if str_match <> ["AB";"ABBB"] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2675.dia.ref b/modules/string/tests/nonreg_tests/bug_2675.dia.ref
new file mode 100755
index 000000000..20d53098b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2675.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2675 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2675
+//
+// <-- Short Description -->
+// grep(["hat";"cat"],'/[hc]+at/','r') hangs scilab with 100% cpu load
+//
+if grep(["hat";"cat"],"/[hc]+at/","r") <> [1 2] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2675.tst b/modules/string/tests/nonreg_tests/bug_2675.tst
new file mode 100755
index 000000000..9542049e3
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2675.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2675 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2675
+//
+// <-- Short Description -->
+// grep(["hat";"cat"],'/[hc]+at/','r') hangs scilab with 100% cpu load
+//
+
+if grep(["hat";"cat"],"/[hc]+at/","r") <> [1 2] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2677.dia.ref b/modules/string/tests/nonreg_tests/bug_2677.dia.ref
new file mode 100755
index 000000000..d8b121795
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2677.dia.ref
@@ -0,0 +1,13 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2677 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2677
+if grep(["at";"cat"],'/[hc]+at/','r') <> 2 then bugmes();quit;end
+if grep(["cat";"at"],'/[hc]+at/','r') <> 1 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2677.tst b/modules/string/tests/nonreg_tests/bug_2677.tst
new file mode 100755
index 000000000..4f7059f9f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2677.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2677 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2677
+
+
+if grep(["at";"cat"],'/[hc]+at/','r') <> 2 then pause,end
+if grep(["cat";"at"],'/[hc]+at/','r') <> 1 then pause,end
+
+
+
diff --git a/modules/string/tests/nonreg_tests/bug_2699.dia.ref b/modules/string/tests/nonreg_tests/bug_2699.dia.ref
new file mode 100755
index 000000000..27c1f7997
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2699.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2699 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2699
+//
+// <-- Short Description -->
+// strcat('') produces an error. In scilab-4.1.2, strcat('') returns an empty string
+if strcat("") <> "" then bugmes();quit;end
+if strcat( ["","" ; "",""] ) <> "" then bugmes();quit;end
+if strcat( ["" ""] , "" ) <> "" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2699.tst b/modules/string/tests/nonreg_tests/bug_2699.tst
new file mode 100755
index 000000000..a74b1e3b7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2699.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2699 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2699
+//
+// <-- Short Description -->
+// strcat('') produces an error. In scilab-4.1.2, strcat('') returns an empty string
+
+if strcat("") <> "" then pause,end
+if strcat( ["","" ; "",""] ) <> "" then pause,end
+if strcat( ["" ""] , "" ) <> "" then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2721.dia.ref b/modules/string/tests/nonreg_tests/bug_2721.dia.ref
new file mode 100755
index 000000000..03d01de6f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2721.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2721 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2721
+//
+// <-- Short Description -->
+// strcat function return weird strings.
+if or(strcat(string([1 2; 3 4])," ","r") <> ["1 3" "2 4"]) then bugmes();quit;end
+if or(strcat(string([1 2; 3 4])," ","c") <> ["1 2";"3 4"]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2721.tst b/modules/string/tests/nonreg_tests/bug_2721.tst
new file mode 100755
index 000000000..4d7bac36c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2721.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2721 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2721
+//
+
+// <-- Short Description -->
+// strcat function return weird strings.
+
+if or(strcat(string([1 2; 3 4])," ","r") <> ["1 3" "2 4"]) then pause, end
+if or(strcat(string([1 2; 3 4])," ","c") <> ["1 2";"3 4"]) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_2788.dia.ref b/modules/string/tests/nonreg_tests/bug_2788.dia.ref
new file mode 100755
index 000000000..7b4798ec3
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2788.dia.ref
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2788 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2788
+//
+// <-- Short Description -->
+// strsubst() function return weird strings. (only under Linux)
+if strsubst("abc","/ab*c/"," ","r") <> " " then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2788.tst b/modules/string/tests/nonreg_tests/bug_2788.tst
new file mode 100755
index 000000000..06ab95173
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2788.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2788 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2788
+//
+// <-- Short Description -->
+// strsubst() function return weird strings. (only under Linux)
+
+if strsubst("abc","/ab*c/"," ","r") <> " " then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2802.dia.ref b/modules/string/tests/nonreg_tests/bug_2802.dia.ref
new file mode 100755
index 000000000..afb3a1976
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2802.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+// <-- Non-regression test for bug 2802 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2802
+//
+// <-- Short Description -->
+// convstr() doesn"t work if the string contains accented characters.
+// The returned string is cut before the first accented character.
+ref = "Bug convstr : Génération de l"+ascii(39)+"aide";
+refl = "bug convstr : génération de l"+ascii(39)+"aide";
+refu = "BUG CONVSTR : GÉNÉRATION DE L"+ascii(39)+"AIDE";
+resl = convstr(ref,"l");
+if refl <> resl then bugmes();quit;end
+resu = convstr(ref,"u");
+if refu <> resu then bugmes();quit;end
+if convstr("é","u") <> "É" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2802.tst b/modules/string/tests/nonreg_tests/bug_2802.tst
new file mode 100755
index 000000000..478af770c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2802.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- LINUX ONLY -->
+
+// <-- Non-regression test for bug 2802 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2802
+//
+// <-- Short Description -->
+// convstr() doesn't work if the string contains accented characters.
+// The returned string is cut before the first accented character.
+
+ref = "Bug convstr : Génération de l"+ascii(39)+"aide";
+refl = "bug convstr : génération de l"+ascii(39)+"aide";
+refu = "BUG CONVSTR : GÉNÉRATION DE L"+ascii(39)+"AIDE";
+
+resl = convstr(ref,"l");
+if refl <> resl then pause,end
+
+resu = convstr(ref,"u");
+if refu <> resu then pause,end
+
+if convstr("é","u") <> "É" then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_2976.dia.ref b/modules/string/tests/nonreg_tests/bug_2976.dia.ref
new file mode 100755
index 000000000..7dffaadd2
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2976.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2976 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2976
+//
+v = "1.0";
+ierr = execstr('r = regexp(v, ''/[1-9]+\.[1-9]+'') ','errcatch');
+if ierr <> 999 then bugmes();quit;end
+if exists('r') <> 0 then bugmes();quit;end
+ierr = execstr('r = regexp(v, ''/[1-9]+\.[1-9]/'') ','errcatch');
+if ierr <> 0 then bugmes();quit;end
+if exists('r') <> 1 then bugmes();quit;end
+if r <> [] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2976.tst b/modules/string/tests/nonreg_tests/bug_2976.tst
new file mode 100755
index 000000000..cb23742cd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2976.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2976 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2976
+//
+v = "1.0";
+ierr = execstr('r = regexp(v, ''/[1-9]+\.[1-9]+'') ','errcatch');
+if ierr <> 999 then pause,end
+if exists('r') <> 0 then pause,end
+
+ierr = execstr('r = regexp(v, ''/[1-9]+\.[1-9]/'') ','errcatch');
+if ierr <> 0 then pause,end
+if exists('r') <> 1 then pause,end
+if r <> [] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_2980.dia.ref b/modules/string/tests/nonreg_tests/bug_2980.dia.ref
new file mode 100755
index 000000000..e69bb3445
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2980.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 2980 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2980
+//
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then bugmes();quit;end
+if str <> '1' then bugmes();quit;end
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then bugmes();quit;end
+if str <> '1' then bugmes();quit;end
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then bugmes();quit;end
+if str <> '1' then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_2980.tst b/modules/string/tests/nonreg_tests/bug_2980.tst
new file mode 100755
index 000000000..af073155c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_2980.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 2980 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2980
+//
+
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then pause,end
+if str <> '1' then pause,end
+
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then pause,end
+if str <> '1' then pause,end
+
+ierr = execstr('str=string(1)','errcatch');
+if ierr <> 0 then pause,end
+if str <> '1' then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_3006.dia.ref b/modules/string/tests/nonreg_tests/bug_3006.dia.ref
new file mode 100755
index 000000000..3b4b2c53f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3006.dia.ref
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3006 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3006
+//
+// <-- Short Description -->
+// submatrix assignment impossible when the matrix is indexed with a boolean array of falses
+a=['ssghg','rr';'qsdqs','4'];a_ref=a;
+a(1,[%f %f])=[];
+if or(a<>a_ref) then bugmes();quit;end
+a([%f %f],1)=[];
+if or(a<>a_ref) then bugmes();quit;end
+a([%f %f],[%f %f])=[];
+if or(a<>a_ref) then bugmes();quit;end
+a(1,$:1)=[];
+if or(a<>a_ref) then bugmes();quit;end
+a($:1,1)=[];
+if or(a<>a_ref) then bugmes();quit;end
+a($:1,$:1)=[];
+if or(a<>a_ref) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3006.tst b/modules/string/tests/nonreg_tests/bug_3006.tst
new file mode 100755
index 000000000..e0e8c7cae
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3006.tst
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3006 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3006
+//
+// <-- Short Description -->
+// submatrix assignment impossible when the matrix is indexed with a boolean array of falses
+
+a=['ssghg','rr';'qsdqs','4'];a_ref=a;
+
+a(1,[%f %f])=[];
+if or(a<>a_ref) then pause,end
+a([%f %f],1)=[];
+if or(a<>a_ref) then pause,end
+a([%f %f],[%f %f])=[];
+if or(a<>a_ref) then pause,end
+
+a(1,$:1)=[];
+if or(a<>a_ref) then pause,end
+a($:1,1)=[];
+if or(a<>a_ref) then pause,end
+a($:1,$:1)=[];
+if or(a<>a_ref) then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_3008.dia.ref b/modules/string/tests/nonreg_tests/bug_3008.dia.ref
new file mode 100755
index 000000000..f065ad05f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3008.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3008 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3008
+//
+ref = ['|a|';'|b|'];
+res = "|"+tokens("a b ")+"|";
+if size(res,'*') <> 2 then bugmes();quit;end;
+if strcmp(ref,res) <> 0 then bugmes();quit;end;
+ref = ['|a|';'|b|'];
+res = "|"+tokens("aibi",'i')+"|";
+if size(res,'*') <> 2 then bugmes();quit;end;
+if strcmp(ref,res) <> 0 then bugmes();quit;end;
diff --git a/modules/string/tests/nonreg_tests/bug_3008.tst b/modules/string/tests/nonreg_tests/bug_3008.tst
new file mode 100755
index 000000000..3a43b4a15
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3008.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3008 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3008
+//
+
+ref = ['|a|';'|b|'];
+res = "|"+tokens("a b ")+"|";
+if size(res,'*') <> 2 then pause,end;
+if strcmp(ref,res) <> 0 then pause,end;
+
+
+ref = ['|a|';'|b|'];
+res = "|"+tokens("aibi",'i')+"|";
+if size(res,'*') <> 2 then pause,end;
+if strcmp(ref,res) <> 0 then pause,end;
+
diff --git a/modules/string/tests/nonreg_tests/bug_3039.dia.ref b/modules/string/tests/nonreg_tests/bug_3039.dia.ref
new file mode 100755
index 000000000..e088d04a5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3039.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3039 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3039
+//
+a = emptystr([ %F %F ; %T %T]);
+if size(a)<>[2 2] then bugmes();quit;end
+if length(a) <> [ 0 0 ; 0 0 ] then bugmes();quit;end
+b = emptystr([ poly(0,"s") poly(0,"s") ; poly(0,"s") poly(0,"s") ]);
+if size(b)<>[2 2] then bugmes();quit;end
+if length(b) <> [ 0 0 ; 0 0 ] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3039.tst b/modules/string/tests/nonreg_tests/bug_3039.tst
new file mode 100755
index 000000000..b2231befb
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3039.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3039 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3039
+//
+a = emptystr([ %F %F ; %T %T]);
+if size(a)<>[2 2] then pause,end
+if length(a) <> [ 0 0 ; 0 0 ] then pause,end
+
+b = emptystr([ poly(0,"s") poly(0,"s") ; poly(0,"s") poly(0,"s") ]);
+if size(b)<>[2 2] then pause,end
+if length(b) <> [ 0 0 ; 0 0 ] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_3102.dia.ref b/modules/string/tests/nonreg_tests/bug_3102.dia.ref
new file mode 100755
index 000000000..06fcfb597
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3102.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3102 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3102
+//
+// <-- Short Description -->
+// regexp returns a "Unknown error"
+r="/^b.*b.*b.*b.*b$/";
+b = "b";
+for i = 1:123
+ b = b + "b";
+end;
+b = b + "r";
+ierr=execstr("regexp(b, r)","errcatch");
+if ierr <> 999 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3102.tst b/modules/string/tests/nonreg_tests/bug_3102.tst
new file mode 100755
index 000000000..eec835364
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3102.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+
+// <-- Non-regression test for bug 3102 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3102
+//
+// <-- Short Description -->
+// regexp returns a "Unknown error"
+
+
+r="/^b.*b.*b.*b.*b$/";
+b = "b";
+for i = 1:123
+ b = b + "b";
+end;
+b = b + "r";
+ierr=execstr("regexp(b, r)","errcatch");
+if ierr <> 999 then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_3228.dia.ref b/modules/string/tests/nonreg_tests/bug_3228.dia.ref
new file mode 100755
index 000000000..ccce0c198
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3228.dia.ref
@@ -0,0 +1,35 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3228 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3228
+//
+// <-- Short Description -->
+// ascii('é') returns a incorrect value
+// UTF-8 encoding
+if ascii('à') <> [195 160] then bugmes();quit;end
+if ascii('ç') <> [195 167] then bugmes();quit;end
+if ascii('è') <> [195 168] then bugmes();quit;end
+if ascii('é') <> [195 169] then bugmes();quit;end
+if ascii('ù') <> [195 185] then bugmes();quit;end
+if ascii([195 160]) <> 'à' then bugmes();quit;end
+if ascii([195 167]) <> 'ç' then bugmes();quit;end
+if ascii([195 168]) <> 'è' then bugmes();quit;end
+if ascii([195 169]) <> 'é' then bugmes();quit;end
+if ascii([195 185]) <> 'ù' then bugmes();quit;end
+if msprintf("%s", ascii(224)) <> ascii(224) then bugmes();quit;end
+if msprintf("%s", ascii([195 160])) <> ascii([195 160]) then bugmes();quit;end
+if msprintf("%s", ascii(231)) <> ascii(231) then bugmes();quit;end
+if msprintf("%s", ascii([195 167])) <> ascii([195 167]) then bugmes();quit;end
+if msprintf("%s", ascii(232)) <> ascii(232) then bugmes();quit;end
+if msprintf("%s", ascii([195 168])) <> ascii([195 168]) then bugmes();quit;end
+if msprintf("%s", ascii(233)) <> ascii(233) then bugmes();quit;end
+if msprintf("%s", ascii([195 169])) <> ascii([195 169]) then bugmes();quit;end
+if msprintf("%s", ascii(249)) <> ascii(249) then bugmes();quit;end
+if msprintf("%s", ascii([195 185])) <> ascii([195 185]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3228.tst b/modules/string/tests/nonreg_tests/bug_3228.tst
new file mode 100755
index 000000000..1e3634ab2
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3228.tst
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+
+// <-- Non-regression test for bug 3228 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3228
+//
+// <-- Short Description -->
+// ascii('é') returns a incorrect value
+
+// UTF-8 encoding
+if ascii('à') <> [195 160] then pause,end
+if ascii('ç') <> [195 167] then pause,end
+if ascii('è') <> [195 168] then pause,end
+if ascii('é') <> [195 169] then pause,end
+if ascii('ù') <> [195 185] then pause,end
+
+if ascii([195 160]) <> 'à' then pause,end
+if ascii([195 167]) <> 'ç' then pause,end
+if ascii([195 168]) <> 'è' then pause,end
+if ascii([195 169]) <> 'é' then pause,end
+if ascii([195 185]) <> 'ù' then pause,end
+
+if msprintf("%s", ascii(224)) <> ascii(224) then pause,end
+if msprintf("%s", ascii([195 160])) <> ascii([195 160]) then pause,end
+if msprintf("%s", ascii(231)) <> ascii(231) then pause,end
+if msprintf("%s", ascii([195 167])) <> ascii([195 167]) then pause,end
+if msprintf("%s", ascii(232)) <> ascii(232) then pause,end
+if msprintf("%s", ascii([195 168])) <> ascii([195 168]) then pause,end
+if msprintf("%s", ascii(233)) <> ascii(233) then pause,end
+if msprintf("%s", ascii([195 169])) <> ascii([195 169]) then pause,end
+if msprintf("%s", ascii(249)) <> ascii(249) then pause,end
+if msprintf("%s", ascii([195 185])) <> ascii([195 185]) then pause,end
+ \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_3241.dia.ref b/modules/string/tests/nonreg_tests/bug_3241.dia.ref
new file mode 100755
index 000000000..75e009d35
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3241.dia.ref
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 3241 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3241
+//
+// <-- Short Description -->
+// length function does not work anymore with polynomials, boolean, integers.
+// in scilab 4 length(x) was similar to size(x) for these data types
+if length(%s) <> size(%s,'*') then bugmes();quit;end
+if length(%t) <> size(%s,'*') then bugmes();quit;end
+if length(int32(1)) <> size(int32(1),'*') then bugmes();quit;end
+if length(int16(2)) <> size(int16(2),'*') then bugmes();quit;end
+if length(int8(3)) <> size(int8(3),'*') then bugmes();quit;end
+if length(%s) <> 1 then bugmes();quit;end
+if length(%t) <> 1 then bugmes();quit;end
+if length(int32(1)) <> 1 then bugmes();quit;end
+if length(int16(2)) <> 1 then bugmes();quit;end
+if length(int8(3)) <> 1 then bugmes();quit;end
+if length([%s,%s,%s;%s,%s,%s]) <> size([%s,%s,%s;%s,%s,%s],'*') then bugmes();quit;end
+if length([%t,%f,%t;%t,%f,%t]) <> size([%t,%f,%t;%t,%f,%t],'*') then bugmes();quit;end
+if length([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)]) <> size([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)],'*') then bugmes();quit;end
+if length([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)]) <> size([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)],'*') then bugmes();quit;end
+if length([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)]) <> size([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)],'*') then bugmes();quit;end
+if length([%s,%s,%s;%s,%s,%s]) <> 6 then bugmes();quit;end
+if length([%t,%f,%t;%t,%f,%t]) <> 6 then bugmes();quit;end
+if length([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)]) <> 6 then bugmes();quit;end
+if length([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)]) <> 6 then bugmes();quit;end
+if length([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)]) <> 6 then bugmes();quit;end
+s = scf();
+handle_Matrix = [s,s,s;s,s,s];
+if length(s) <> 1 then bugmes();quit;end
+if length(s) <> size(s,'*') then bugmes();quit;end
+if length(handle_Matrix) <> size(handle_Matrix,'*') then bugmes();quit;end
+if length(handle_Matrix) <> 6 then bugmes();quit;end
+delete(s);
diff --git a/modules/string/tests/nonreg_tests/bug_3241.tst b/modules/string/tests/nonreg_tests/bug_3241.tst
new file mode 100755
index 000000000..0bb9c5c10
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3241.tst
@@ -0,0 +1,51 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 3241 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3241
+//
+// <-- Short Description -->
+// length function does not work anymore with polynomials, boolean, integers.
+// in scilab 4 length(x) was similar to size(x) for these data types
+
+
+if length(%s) <> size(%s,'*') then pause,end
+if length(%t) <> size(%s,'*') then pause,end
+if length(int32(1)) <> size(int32(1),'*') then pause,end
+if length(int16(2)) <> size(int16(2),'*') then pause,end
+if length(int8(3)) <> size(int8(3),'*') then pause,end
+
+if length(%s) <> 1 then pause,end
+if length(%t) <> 1 then pause,end
+if length(int32(1)) <> 1 then pause,end
+if length(int16(2)) <> 1 then pause,end
+if length(int8(3)) <> 1 then pause,end
+
+if length([%s,%s,%s;%s,%s,%s]) <> size([%s,%s,%s;%s,%s,%s],'*') then pause,end
+if length([%t,%f,%t;%t,%f,%t]) <> size([%t,%f,%t;%t,%f,%t],'*') then pause,end
+if length([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)]) <> size([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)],'*') then pause,end
+if length([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)]) <> size([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)],'*') then pause,end
+if length([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)]) <> size([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)],'*') then pause,end
+
+if length([%s,%s,%s;%s,%s,%s]) <> 6 then pause,end
+if length([%t,%f,%t;%t,%f,%t]) <> 6 then pause,end
+if length([int32(1),int32(2),int32(3);int32(1),int32(2),int32(3)]) <> 6 then pause,end
+if length([int16(1),int16(2),int16(3);int16(1),int16(2),int16(3)]) <> 6 then pause,end
+if length([int8(1),int8(2),int8(3);int8(1),int8(2),int8(3)]) <> 6 then pause,end
+
+s = scf();
+handle_Matrix = [s,s,s;s,s,s];
+if length(s) <> 1 then pause,end
+if length(s) <> size(s,'*') then pause,end
+
+if length(handle_Matrix) <> size(handle_Matrix,'*') then pause,end
+if length(handle_Matrix) <> 6 then pause,end
+delete(s);
diff --git a/modules/string/tests/nonreg_tests/bug_3288.dia.ref b/modules/string/tests/nonreg_tests/bug_3288.dia.ref
new file mode 100755
index 000000000..3bc64c552
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3288.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3288 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3288
+//
+// <-- Short Description -->
+// strcat with 3 parameters crashs on windows release mode
+rand('seed',3);
+n=5;
+A=int(10*rand(n,n));
+A1=strcat(string(A),' ','c');
+if size(A1) <> [5 1] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3288.tst b/modules/string/tests/nonreg_tests/bug_3288.tst
new file mode 100755
index 000000000..2011217c6
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3288.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+
+// <-- Non-regression test for bug 3288 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3288
+//
+// <-- Short Description -->
+// strcat with 3 parameters crashs on windows release mode
+
+rand('seed',3);
+n=5;
+A=int(10*rand(n,n));
+A1=strcat(string(A),' ','c');
+if size(A1) <> [5 1] then pause,end \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_3410.dia.ref b/modules/string/tests/nonreg_tests/bug_3410.dia.ref
new file mode 100755
index 000000000..aa6036585
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3410.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3410 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3410
+//
+// <-- Short Description -->
+if length(sparse(eye(2,2))) <> 2 then bugmes();quit;end
+if length(sparse(eye(12,2))) <> 12 then bugmes();quit;end
+if length(sparse(eye(2,12))) <> 12 then bugmes();quit;end
+if length(sparse(1)) <> 1 then bugmes();quit;end
+if with_module('umfpack') then
+ A = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+ if length(A) <> 3562 then bugmes();quit;end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_3410.tst b/modules/string/tests/nonreg_tests/bug_3410.tst
new file mode 100755
index 000000000..257ba161e
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3410.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3410 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3410
+//
+// <-- Short Description -->
+
+if length(sparse(eye(2,2))) <> 2 then pause,end
+if length(sparse(eye(12,2))) <> 12 then pause,end
+if length(sparse(eye(2,12))) <> 12 then pause,end
+if length(sparse(1)) <> 1 then pause,end
+
+if with_module('umfpack') then
+ A = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+ if length(A) <> 3562 then pause,end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_3433.dia.ref b/modules/string/tests/nonreg_tests/bug_3433.dia.ref
new file mode 100755
index 000000000..d9f0c7221
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3433.dia.ref
@@ -0,0 +1,47 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3433 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4141
+//
+// Short description:
+// length returns a incorrect size
+//==============================================================
+ tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+length_ref = [
+ 4,
+ 7,
+ 8,
+ 11,
+ 11,
+ 6];
+for i = 1:size(tab_ref,'*')
+ if ( length(tab_ref(i)) <> length_ref(i) ) then bugmes();quit;end
+end
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"תוכנית"];
+ref = [
+ '世' ,
+ 'а' ,
+ 'ハ' ,
+ 'ת' ];
+for i = 1:size(tab_ref,'*')
+ r = part(tab_ref(i),1);
+ if r <> ref(i) then bugmes();quit;end
+end
+if part("世界您好",3:4) <> '您好' then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3433.tst b/modules/string/tests/nonreg_tests/bug_3433.tst
new file mode 100755
index 000000000..a7744ffd9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3433.tst
@@ -0,0 +1,57 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3433 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4141
+//
+// Short description:
+// length returns a incorrect size
+//==============================================================
+ tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+
+length_ref = [
+ 4,
+ 7,
+ 8,
+ 11,
+ 11,
+ 6];
+
+for i = 1:size(tab_ref,'*')
+ if ( length(tab_ref(i)) <> length_ref(i) ) then pause,end
+end
+
+
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"תוכנית"];
+
+ref = [
+ '世' ,
+ 'а' ,
+ 'ハ' ,
+ 'ת' ];
+
+
+for i = 1:size(tab_ref,'*')
+ r = part(tab_ref(i),1);
+ if r <> ref(i) then pause,end
+end
+
+if part("世界您好",3:4) <> '您好' then pause,end \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_3462.dia.ref b/modules/string/tests/nonreg_tests/bug_3462.dia.ref
new file mode 100755
index 000000000..185bce982
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3462.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3462 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3462
+//
+// <-- Short Description -->
+// The match string returned by regexp is not the right one if the subject
+// string contains backslashes.
+if regexp("\n", "/n/") <> 2 then bugmes();quit;end
+if regexp("\>15Hello, world.", "/world/") <> 12 then bugmes();quit;end
+[start,end,match] = regexp("/usr\local/en_US","/([a-z][a-z]_[A-Z][A-Z])$/");
+if [start,end] <> [12,16] then bugmes();quit;end;
+if match <> "en_US" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3462.tst b/modules/string/tests/nonreg_tests/bug_3462.tst
new file mode 100755
index 000000000..055288c57
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3462.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3462 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3462
+//
+
+// <-- Short Description -->
+// The match string returned by regexp is not the right one if the subject
+// string contains backslashes.
+
+if regexp("\n", "/n/") <> 2 then pause,end
+if regexp("\>15Hello, world.", "/world/") <> 12 then pause,end
+
+[start,end,match] = regexp("/usr\local/en_US","/([a-z][a-z]_[A-Z][A-Z])$/");
+if [start,end] <> [12,16] then pause,end;
+if match <> "en_US" then pause,end \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_3495.dia.ref b/modules/string/tests/nonreg_tests/bug_3495.dia.ref
new file mode 100755
index 000000000..e4ebe0899
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3495.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3495 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3495
+//
+// Short description:
+// Crash with PCRE when matching the whole string
+regexp('hello, world', '/hello, world/');
+regexp('hello, world', '/.+/');
diff --git a/modules/string/tests/nonreg_tests/bug_3495.tst b/modules/string/tests/nonreg_tests/bug_3495.tst
new file mode 100755
index 000000000..462249da6
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3495.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3495 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3495
+//
+// Short description:
+// Crash with PCRE when matching the whole string
+
+regexp('hello, world', '/hello, world/');
+regexp('hello, world', '/.+/');
diff --git a/modules/string/tests/nonreg_tests/bug_3500.dia.ref b/modules/string/tests/nonreg_tests/bug_3500.dia.ref
new file mode 100755
index 000000000..a176a7ba6
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3500.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3500 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3500
+//
+// Short description:
+// No character matched should be a "no match" even if we matched a position
+if regexp('foo', '/^/') <> [] then bugmes();quit;end;
+if regexp('foo', '/$/') <> [] then bugmes();quit;end;
+if regexp('foo', '/(?=o)/') <> [] then bugmes();quit;end;
+if regexp('foo', '/(?=f)/') <> [] then bugmes();quit;end;
+if regexp('foo', '/(?=oo)/') <> [] then bugmes();quit;end;
diff --git a/modules/string/tests/nonreg_tests/bug_3500.tst b/modules/string/tests/nonreg_tests/bug_3500.tst
new file mode 100755
index 000000000..1075a94df
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3500.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3500 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3500
+//
+// Short description:
+// No character matched should be a "no match" even if we matched a position
+
+if regexp('foo', '/^/') <> [] then pause, end;
+if regexp('foo', '/$/') <> [] then pause, end;
+if regexp('foo', '/(?=o)/') <> [] then pause, end;
+if regexp('foo', '/(?=f)/') <> [] then pause, end;
+if regexp('foo', '/(?=oo)/') <> [] then pause, end;
diff --git a/modules/string/tests/nonreg_tests/bug_3511.dia.ref b/modules/string/tests/nonreg_tests/bug_3511.dia.ref
new file mode 100755
index 000000000..ffd29f9f0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3511.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3500 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3500
+//
+// Short description:
+// strindex cannot return all occurrences in regexp mode
+[k,w]=strindex('a aa aab aaa','/aa*/','r');
+assert_checkequal(k, [1 3 6 10]);
+assert_checkequal(w, [1 1 1 1]);
+[k,w]=strindex('a aa aab aaa',['/aa*/' '/aa/'],'r');
+assert_checkequal(k, [1 3 3 6 6 10 10]);
+assert_checkequal(w, [1 1 2 1 2 1 2]);
diff --git a/modules/string/tests/nonreg_tests/bug_3511.tst b/modules/string/tests/nonreg_tests/bug_3511.tst
new file mode 100755
index 000000000..f6f96fd7d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3511.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2008 - DIGITEO - Simon LIPP <simon.lipp@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3500 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3500
+//
+// Short description:
+// strindex cannot return all occurrences in regexp mode
+
+[k,w]=strindex('a aa aab aaa','/aa*/','r');
+assert_checkequal(k, [1 3 6 10]);
+assert_checkequal(w, [1 1 1 1]);
+
+[k,w]=strindex('a aa aab aaa',['/aa*/' '/aa/'],'r');
+assert_checkequal(k, [1 3 3 6 6 10 10]);
+assert_checkequal(w, [1 1 2 1 2 1 2]);
diff --git a/modules/string/tests/nonreg_tests/bug_3512.dia.ref b/modules/string/tests/nonreg_tests/bug_3512.dia.ref
new file mode 100755
index 000000000..78df04499
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3512.dia.ref
@@ -0,0 +1,87 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3512 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3512
+//
+// Short description:
+// regexp may give erroneous results
+//==============================================================
+ref_start_pos = [1 5 9 13 17];
+ref_end_pos = [2 6 10 14 18];
+ref_match_str = [ 'aa';'aa';'aa';'aa';'aa'];
+t = 'aaa aab aac aad aae';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if length(t)<> 19 then bugmes();quit;end
+if or(ref_start_pos <> start_pos) then bugmes();quit;end
+if or(ref_end_pos <> end_pos) then bugmes();quit;end
+if or(ref_match_str <> match_str) then bugmes();quit;end
+//==============================================================
+ref_start_pos = [3 6 10];
+ref_end_pos = [4 7 11];
+ref_match_str = [ 'aa';'aa';'aa'];
+t='a aa aab aaa';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if length(t)<> 12 then bugmes();quit;end
+if or(ref_start_pos <> start_pos) then bugmes();quit;end
+if or(ref_end_pos <> end_pos) then bugmes();quit;end
+if or(ref_match_str <> match_str) then bugmes();quit;end
+//==============================================================
+[start_pos, end_pos, match_str] = regexp(' aab','/aa/');
+if or(start_pos<> 2) then bugmes();quit;end
+if or(end_pos<> 3) then bugmes();quit;end
+if match_str<>'aa' then bugmes();quit;end
+//==============================================================
+[start_pos, end_pos, match_str] = regexp('kAab','/Aa/');
+if or(start_pos<> 2) then bugmes();quit;end
+if or(end_pos<> 3) then bugmes();quit;end
+if match_str<>'Aa' then bugmes();quit;end
+//==============================================================
+ref_start_pos = 17;
+ref_end_pos = 19;
+ref_match_str = 'acK';
+t=' acK baK cbK';
+pattern = '/\bacK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if ref_start_pos <> start_pos then bugmes();quit;end
+if ref_end_pos <> end_pos then bugmes();quit;end
+if ref_match_str <> match_str then bugmes();quit;end
+//==============================================================
+ref_start_pos = [17 38];
+ref_end_pos = [19 40];
+ref_match_str = [ 'acK';'acK'];
+t=' acK acK cbK';
+pattern = '/\bacK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if or(ref_start_pos <> start_pos) then bugmes();quit;end
+if or(ref_end_pos <> end_pos) then bugmes();quit;end
+if or(ref_match_str <> match_str) then bugmes();quit;end
+//==============================================================
+ref_start_pos = 38;
+ref_end_pos = 40;
+ref_match_str = 'baK';
+t=' acK baK cbK';
+pattern = '/\bbaK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if ref_start_pos <> start_pos then bugmes();quit;end
+if ref_end_pos <> end_pos then bugmes();quit;end
+if ref_match_str <> match_str then bugmes();quit;end
+//==============================================================
+ref_start_pos = 62;
+ref_end_pos = 64;
+ref_match_str = 'c K';
+t=' acK baK c K';
+pattern = '/\bc K/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+if ref_start_pos <> start_pos then bugmes();quit;end
+if ref_end_pos <> end_pos then bugmes();quit;end
+if ref_match_str <> match_str then bugmes();quit;end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_3512.tst b/modules/string/tests/nonreg_tests/bug_3512.tst
new file mode 100755
index 000000000..8c3d938b8
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3512.tst
@@ -0,0 +1,101 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3512 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3512
+//
+// Short description:
+// regexp may give erroneous results
+//==============================================================
+ref_start_pos = [1 5 9 13 17];
+ref_end_pos = [2 6 10 14 18];
+ref_match_str = [ 'aa';'aa';'aa';'aa';'aa'];
+
+t = 'aaa aab aac aad aae';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if length(t)<> 19 then pause,end
+if or(ref_start_pos <> start_pos) then pause,end
+if or(ref_end_pos <> end_pos) then pause,end
+if or(ref_match_str <> match_str) then pause,end
+//==============================================================
+ref_start_pos = [3 6 10];
+ref_end_pos = [4 7 11];
+ref_match_str = [ 'aa';'aa';'aa'];
+
+t='a aa aab aaa';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if length(t)<> 12 then pause,end
+if or(ref_start_pos <> start_pos) then pause,end
+if or(ref_end_pos <> end_pos) then pause,end
+if or(ref_match_str <> match_str) then pause,end
+//==============================================================
+[start_pos, end_pos, match_str] = regexp(' aab','/aa/');
+if or(start_pos<> 2) then pause,end
+if or(end_pos<> 3) then pause,end
+if match_str<>'aa' then pause,end
+//==============================================================
+[start_pos, end_pos, match_str] = regexp('kAab','/Aa/');
+if or(start_pos<> 2) then pause,end
+if or(end_pos<> 3) then pause,end
+if match_str<>'Aa' then pause,end
+//==============================================================
+ref_start_pos = 17;
+ref_end_pos = 19;
+ref_match_str = 'acK';
+
+t=' acK baK cbK';
+pattern = '/\bacK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if ref_start_pos <> start_pos then pause,end
+if ref_end_pos <> end_pos then pause,end
+if ref_match_str <> match_str then pause,end
+//==============================================================
+ref_start_pos = [17 38];
+ref_end_pos = [19 40];
+ref_match_str = [ 'acK';'acK'];
+
+t=' acK acK cbK';
+pattern = '/\bacK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if or(ref_start_pos <> start_pos) then pause,end
+if or(ref_end_pos <> end_pos) then pause,end
+if or(ref_match_str <> match_str) then pause,end
+//==============================================================
+ref_start_pos = 38;
+ref_end_pos = 40;
+ref_match_str = 'baK';
+
+t=' acK baK cbK';
+pattern = '/\bbaK/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if ref_start_pos <> start_pos then pause,end
+if ref_end_pos <> end_pos then pause,end
+if ref_match_str <> match_str then pause,end
+//==============================================================
+ref_start_pos = 62;
+ref_end_pos = 64;
+ref_match_str = 'c K';
+
+t=' acK baK c K';
+pattern = '/\bc K/';
+[start_pos, end_pos, match_str] = regexp(t,pattern);
+
+if ref_start_pos <> start_pos then pause,end
+if ref_end_pos <> end_pos then pause,end
+if ref_match_str <> match_str then pause,end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_3543.dia.ref b/modules/string/tests/nonreg_tests/bug_3543.dia.ref
new file mode 100755
index 000000000..6ecda80f6
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3543.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3543 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3543
+//
+// <-- Short Description -->
+// Wrong parenthesize in struct indices (code generated by tree2code).
+testtxt = ["function bug_3543()";
+"index = 12;";
+"st.name = ""test"";";
+"st.value(1,index) = index;";
+"a = st.val(1,index);";
+"endfunction"];
+mputl(testtxt, TMPDIR+filesep()+"bug_3543.sci");
+exec(TMPDIR+filesep()+"bug_3543.sci");
+generated = tree2code(macr2tree(bug_3543));
+if generated(4)<>testtxt(4) | generated(5)<>testtxt(5) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3543.tst b/modules/string/tests/nonreg_tests/bug_3543.tst
new file mode 100755
index 000000000..a4308547f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3543.tst
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3543 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3543
+//
+// <-- Short Description -->
+// Wrong parenthesize in struct indices (code generated by tree2code).
+
+testtxt = ["function bug_3543()";
+"index = 12;";
+"st.name = ""test"";";
+"st.value(1,index) = index;";
+"a = st.val(1,index);";
+"endfunction"];
+
+mputl(testtxt, TMPDIR+filesep()+"bug_3543.sci");
+
+exec(TMPDIR+filesep()+"bug_3543.sci");
+
+generated = tree2code(macr2tree(bug_3543));
+
+if generated(4)<>testtxt(4) | generated(5)<>testtxt(5) then pause;end
diff --git a/modules/string/tests/nonreg_tests/bug_3598.dia.ref b/modules/string/tests/nonreg_tests/bug_3598.dia.ref
new file mode 100755
index 000000000..b42e13c30
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3598.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 3598 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3598
+//
+// Short description:
+// stripblanks(1) returns "stripblank : Pas assez de mmoire."
+//==============================================================
+ierr = execstr('r = stripblanks(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
+ierr = execstr('r = cd(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
+ierr = execstr('r = ls(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
+ierr = execstr('r = dir(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
+ierr = execstr('r = help(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_3598.tst b/modules/string/tests/nonreg_tests/bug_3598.tst
new file mode 100755
index 000000000..9119b5fb9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3598.tst
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3598 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3598
+//
+// Short description:
+// stripblanks(1) returns "stripblank : Pas assez de mmoire."
+//==============================================================
+ierr = execstr('r = stripblanks(1);','errcatch');
+if ierr <> 999 then pause,end
+//==============================================================
+ierr = execstr('r = cd(1);','errcatch');
+if ierr <> 999 then pause,end
+//==============================================================
+ierr = execstr('r = ls(1);','errcatch');
+if ierr <> 999 then pause,end
+//==============================================================
+ierr = execstr('r = dir(1);','errcatch');
+if ierr <> 999 then pause,end
+//==============================================================
+ierr = execstr('r = help(1);','errcatch');
+if ierr <> 999 then pause,end
+//==============================================================
+
diff --git a/modules/string/tests/nonreg_tests/bug_3747.dia.ref b/modules/string/tests/nonreg_tests/bug_3747.dia.ref
new file mode 100755
index 000000000..cfbc40013
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3747.dia.ref
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3747 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3747
+//
+// Short description:
+// string(eye()) tries to quit scilab
+ierr = execstr("string(eye)","errcatch");
+if ierr <> 999 then bugmes();quit;end
+ierr = execstr("string()","errcatch");
+if ierr <> 77 then bugmes();quit;end
+ierr = execstr("string(eye())","errcatch");
+if ierr <> 0 then bugmes();quit;end
+if typeof(string(eye())) <> typeof('') then bugmes();quit;end
+ierr = execstr("string(eye())+""b""","errcatch");
+if ierr <> 0 then bugmes();quit;end
+r = string(eye())+"b";
+if r <> ""+"b" then bugmes();quit;end
+r = string(eye(3,3));
+ref = ["1" "0" "0";"0" "1" "0";"0" "0" "1"];
+if r <> ref then bugmes();quit;end
+r = size(eye());
+if or(r <> [-1 -1]) then bugmes();quit;end
+r = size(string(eye()));
+if or(r <> [1 1]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3747.tst b/modules/string/tests/nonreg_tests/bug_3747.tst
new file mode 100755
index 000000000..4703394eb
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3747.tst
@@ -0,0 +1,44 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3747 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3747
+//
+// Short description:
+// string(eye()) tries to quit scilab
+
+ierr = execstr("string(eye)","errcatch");
+if ierr <> 999 then pause,end
+
+ierr = execstr("string()","errcatch");
+if ierr <> 77 then pause,end
+
+ierr = execstr("string(eye())","errcatch");
+if ierr <> 0 then pause,end
+
+if typeof(string(eye())) <> typeof('') then pause,end
+
+ierr = execstr("string(eye())+""b""","errcatch");
+if ierr <> 0 then pause,end
+
+r = string(eye())+"b";
+if r <> ""+"b" then pause,end
+
+r = string(eye(3,3));
+ref = ["1" "0" "0";"0" "1" "0";"0" "0" "1"];
+if r <> ref then pause,end
+
+r = size(eye());
+if or(r <> [-1 -1]) then pause,end
+
+r = size(string(eye()));
+if or(r <> [1 1]) then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_3810.dia.ref b/modules/string/tests/nonreg_tests/bug_3810.dia.ref
new file mode 100755
index 000000000..6939f83ca
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3810.dia.ref
@@ -0,0 +1,69 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 3810 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3810
+//
+// <-- Short Description -->
+// Insertion in string array and polynomial array may be very slow
+w=warning("query");
+warning("off");
+T=[];
+N=[ (5:9)*10000 (1:9)*100000];
+for n=N
+ clear t
+ timer();t(1:n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+T=[];
+for n=N
+ clear t
+ timer();t(2,1:n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+T=[];
+for n=N
+ clear t
+ timer();t(1:n,3)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+T=[];
+N=[ (5:9)*10000 (1:9)*100000];
+for n=N
+ clear t
+ timer();t(n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+T=[];
+for n=N
+ clear t
+ timer();t(2,n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+T=[];
+for n=N
+ clear t
+ timer();t(n,3)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then bugmes();quit;end
+warning(w);
diff --git a/modules/string/tests/nonreg_tests/bug_3810.tst b/modules/string/tests/nonreg_tests/bug_3810.tst
new file mode 100755
index 000000000..f084a9e86
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3810.tst
@@ -0,0 +1,76 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 3810 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3810
+//
+// <-- Short Description -->
+// Insertion in string array and polynomial array may be very slow
+w=warning("query");
+warning("off");
+T=[];
+N=[ (5:9)*10000 (1:9)*100000];
+for n=N
+ clear t
+ timer();t(1:n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+T=[];
+for n=N
+ clear t
+ timer();t(2,1:n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+T=[];
+for n=N
+ clear t
+ timer();t(1:n,3)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+T=[];
+N=[ (5:9)*10000 (1:9)*100000];
+for n=N
+ clear t
+ timer();t(n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+T=[];
+for n=N
+ clear t
+ timer();t(2,n)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+T=[];
+for n=N
+ clear t
+ timer();t(n,3)="foo";T=[T timer()];
+end
+//check for quasi linear evolution of T(n)
+abc=T/[N^2;N;ones(N)];
+if abc(1)/norm(abc(2:3))>1d-3 then pause,end
+
+
+warning(w);
diff --git a/modules/string/tests/nonreg_tests/bug_3839.dia.ref b/modules/string/tests/nonreg_tests/bug_3839.dia.ref
new file mode 100755
index 000000000..fc0ff5af1
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3839.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3839 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3839
+//
+// Short description:
+// strrev doesn't work correctly if the string to be reversed includes some accentuated characters.
+rev_ref = "好您界世";
+if strrev("世界您好") <> rev_ref then bugmes();quit;end
+rev_ref = "яезаеза";
+if strrev("азеазея") <> rev_ref then bugmes();quit;end
+rev_ref = "ドルーワ・ーロハ";
+if strrev("ハロー・ワールド") <> rev_ref then bugmes();quit;end
+rev_ref = "قوقحو تايرح";
+if strrev("حريات وحقوق") <> rev_ref then bugmes();quit;end
+rev_ref = "תינכות";
+if strrev("תוכנית") <> rev_ref then bugmes();quit;end
+rev_ref = ["gnirts elpmis a si sihT","ébalics"];
+if strrev(['This is a simple string','scilabé']) <> rev_ref then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3839.tst b/modules/string/tests/nonreg_tests/bug_3839.tst
new file mode 100755
index 000000000..df83a3fb5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3839.tst
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3839 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3839
+//
+// Short description:
+// strrev doesn't work correctly if the string to be reversed includes some accentuated characters.
+
+rev_ref = "好您界世";
+if strrev("世界您好") <> rev_ref then pause,end
+
+rev_ref = "яезаеза";
+if strrev("азеазея") <> rev_ref then pause,end
+
+rev_ref = "ドルーワ・ーロハ";
+if strrev("ハロー・ワールド") <> rev_ref then pause,end
+
+rev_ref = "قوقحو تايرح";
+if strrev("حريات وحقوق") <> rev_ref then pause,end
+
+rev_ref = "תינכות";
+if strrev("תוכנית") <> rev_ref then pause,end
+
+rev_ref = ["gnirts elpmis a si sihT","ébalics"];
+if strrev(['This is a simple string','scilabé']) <> rev_ref then pause,end \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_3886.dia.ref b/modules/string/tests/nonreg_tests/bug_3886.dia.ref
new file mode 100755
index 000000000..89a8e5a02
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3886.dia.ref
@@ -0,0 +1,18 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3886 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3886
+//
+// Short description:
+// strsubst with regular expression was working only on the first element of the vector.
+//==============================================================
+names = ['foo.sci';'toto.sci';'titi.sci'];
+names=strsubst(names, "/\.sci$/",'','r');
+if names <> ['foo';'toto';'titi'] then, bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3886.tst b/modules/string/tests/nonreg_tests/bug_3886.tst
new file mode 100755
index 000000000..9fd56a029
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3886.tst
@@ -0,0 +1,20 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3886 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3886
+//
+// Short description:
+// strsubst with regular expression was working only on the first element of the vector.
+//==============================================================
+names = ['foo.sci';'toto.sci';'titi.sci'];
+names=strsubst(names, "/\.sci$/",'','r');
+if names <> ['foo';'toto';'titi'] then, pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_3891.dia.ref b/modules/string/tests/nonreg_tests/bug_3891.dia.ref
new file mode 100755
index 000000000..47079d9f0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3891.dia.ref
@@ -0,0 +1,27 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3891 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3891
+//
+// Short description:
+// strsubst() replaces the wrong characters with the regexp mode and when the subject contains backslahes (windows path for example)
+//==============================================================
+p = "D:\compilation_chain_master\sci_compil\scilab-master-1230554708\modules\core\macros\with_tk.sci";
+ref = "D:\compilation_chain_master\sci_compil\scilab-master-1230554708\modules\core\macros\with_tk.bin";
+r = strsubst(p, "/\.sci$/", '.bin', 'r');
+if r <> ref then bugmes();quit;end
+p = '.sci.sci.sci';
+ref = '.sci.sci.bin';
+r = strsubst(p, "/\.sci$/", '.bin', 'r');
+if r <> ref then bugmes();quit;end
+p = '\';
+ref = '.bin';
+r = strsubst(p, "/\\/", '.bin', 'r');
+if r <> ref then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3891.tst b/modules/string/tests/nonreg_tests/bug_3891.tst
new file mode 100755
index 000000000..139e01162
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3891.tst
@@ -0,0 +1,32 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3891 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3891
+//
+// Short description:
+// strsubst() replaces the wrong characters with the regexp mode and when the subject contains backslahes (windows path for example)
+//==============================================================
+
+p = "D:\compilation_chain_master\sci_compil\scilab-master-1230554708\modules\core\macros\with_tk.sci";
+ref = "D:\compilation_chain_master\sci_compil\scilab-master-1230554708\modules\core\macros\with_tk.bin";
+r = strsubst(p, "/\.sci$/", '.bin', 'r');
+if r <> ref then pause,end
+
+p = '.sci.sci.sci';
+ref = '.sci.sci.bin';
+r = strsubst(p, "/\.sci$/", '.bin', 'r');
+if r <> ref then pause,end
+
+p = '\';
+ref = '.bin';
+r = strsubst(p, "/\\/", '.bin', 'r');
+if r <> ref then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_3912.dia.ref b/modules/string/tests/nonreg_tests/bug_3912.dia.ref
new file mode 100755
index 000000000..0d34ca5c8
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3912.dia.ref
@@ -0,0 +1,28 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 3912 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3912
+//
+// Short description:
+// strsubst used with regular expression may return very stange result.
+// spaces at beginning of a string were removed.
+//==============================================================
+t = " IF ( INFORM .NE. 0 ) STOP";
+ref = " IF ( INFORM .NE. 0 ) then";
+r = strsubst(t,'/stop/i','then','r');
+if r <> ref then bugmes();quit;end
+t = "IF ( INFORM .NE. 0 ) STOP";
+ref = "IF ( INFORM .NE. 0 ) then";
+r = strsubst(t,'/stop/i','then','r');
+if r <> ref then bugmes();quit;end
+t = "IF ( INFORM .NE. 0 ) STOP";
+ref = "IF ( test .NE. 0 ) STOP";
+r = strsubst(t,'/inform/i','test','r');
+if r <> ref then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_3912.tst b/modules/string/tests/nonreg_tests/bug_3912.tst
new file mode 100755
index 000000000..e496a0ea3
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_3912.tst
@@ -0,0 +1,32 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 3912 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3912
+//
+// Short description:
+// strsubst used with regular expression may return very stange result.
+// spaces at beginning of a string were removed.
+//==============================================================
+t = " IF ( INFORM .NE. 0 ) STOP";
+ref = " IF ( INFORM .NE. 0 ) then";
+r = strsubst(t,'/stop/i','then','r');
+if r <> ref then pause,end
+
+t = "IF ( INFORM .NE. 0 ) STOP";
+ref = "IF ( INFORM .NE. 0 ) then";
+r = strsubst(t,'/stop/i','then','r');
+if r <> ref then pause,end
+
+t = "IF ( INFORM .NE. 0 ) STOP";
+ref = "IF ( test .NE. 0 ) STOP";
+r = strsubst(t,'/inform/i','test','r');
+if r <> ref then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_4141.dia.ref b/modules/string/tests/nonreg_tests/bug_4141.dia.ref
new file mode 100755
index 000000000..619a4b1a5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4141.dia.ref
@@ -0,0 +1,22 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4141 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4141
+//
+// Short description:
+// ascii doesn't support extended ascii values in the range of [128-255].
+//==============================================================
+ref = [65 66 67 129 130 131];
+r = ascii(ascii(ref));
+if ref <> r then bugmes();quit;end
+ref = 127:255;
+r = ascii(ascii(ref));
+if r <> ref then bugmes();quit;end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4141.tst b/modules/string/tests/nonreg_tests/bug_4141.tst
new file mode 100755
index 000000000..895100e3b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4141.tst
@@ -0,0 +1,25 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4141 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4141
+//
+// Short description:
+// ascii doesn't support extended ascii values in the range of [128-255].
+//==============================================================
+ref = [65 66 67 129 130 131];
+r = ascii(ascii(ref));
+if ref <> r then pause,end
+
+ref = 127:255;
+r = ascii(ascii(ref));
+if r <> ref then pause,end
+//============================================================== \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_4277.dia.ref b/modules/string/tests/nonreg_tests/bug_4277.dia.ref
new file mode 100755
index 000000000..cae84fd76
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4277.dia.ref
@@ -0,0 +1,22 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4277 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4277
+//
+// Short description:
+// strsubst returns strange results if accented characters and
+// character class are associated in the pattern to match
+//
+//==============================================================
+subject = "subject with the é accentued letter";
+if strsubst(subject,'/é/','e','r') <> 'subject with the e accentued letter' then bugmes();quit;end
+if strsubst(subject,'/[é]/','e','r')<> 'subject with the e accentued letter' then bugmes();quit;end
+if strsubst(subject,'/[c]/','e','r') <> 'subjeet with the é accentued letter' then bugmes();quit;end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4277.tst b/modules/string/tests/nonreg_tests/bug_4277.tst
new file mode 100755
index 000000000..0e0bfae48
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4277.tst
@@ -0,0 +1,24 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4277 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4277
+//
+// Short description:
+// strsubst returns strange results if accented characters and
+// character class are associated in the pattern to match
+//
+//==============================================================
+subject = "subject with the é accentued letter";
+if strsubst(subject,'/é/','e','r') <> 'subject with the e accentued letter' then pause,end
+if strsubst(subject,'/[é]/','e','r')<> 'subject with the e accentued letter' then pause,end
+if strsubst(subject,'/[c]/','e','r') <> 'subjeet with the é accentued letter' then pause,end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4321.dia.ref b/modules/string/tests/nonreg_tests/bug_4321.dia.ref
new file mode 100755
index 000000000..b97c11d23
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4321.dia.ref
@@ -0,0 +1,20 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4321 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4321
+//
+// Short description:
+// [a,b]=(1,1); strcat(a,"x",b) Seg fault
+//
+//==============================================================
+[a,b]=(1,1);
+ierr = execstr("strcat(a,''x'',b)","errcatch");
+if ierr <> 999 then bugmes();quit;end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4321.tst b/modules/string/tests/nonreg_tests/bug_4321.tst
new file mode 100755
index 000000000..efe7562f7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4321.tst
@@ -0,0 +1,22 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4321 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4321
+//
+// Short description:
+// [a,b]=(1,1); strcat(a,"x",b) Seg fault
+//
+//==============================================================
+[a,b]=(1,1);
+ierr = execstr("strcat(a,''x'',b)","errcatch");
+if ierr <> 999 then pause,end
+//==============================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4359.dia.ref b/modules/string/tests/nonreg_tests/bug_4359.dia.ref
new file mode 100755
index 000000000..ce31cdf88
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4359.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4359 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4359
+//
+// <-- Short Description -->
+// M(:,:)='anything' produces erroneous result.
+M="x";
+M(:,:)="anything";
+if M<>"anything" then bugmes();quit;end
+M="x";
+M(:)="anything";
+if M<>"anything" then bugmes();quit;end
+M=["xqsdq","qzdqsdq"];
+M(:,:)=["anything" "blabla"];
+if or(M<>["anything" "blabla"]) then bugmes();quit;end
+M=["xqsdq","qzdqsdq"];
+M(:)=["anything" "blabla"];
+if or(M<>["anything" "blabla"]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4359.tst b/modules/string/tests/nonreg_tests/bug_4359.tst
new file mode 100755
index 000000000..234c13798
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4359.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4359 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4359
+//
+// <-- Short Description -->
+// M(:,:)='anything' produces erroneous result.
+
+M="x";
+M(:,:)="anything";
+if M<>"anything" then pause,end
+M="x";
+M(:)="anything";
+if M<>"anything" then pause,end
+
+M=["xqsdq","qzdqsdq"];
+M(:,:)=["anything" "blabla"];
+if or(M<>["anything" "blabla"]) then pause,end
+
+M=["xqsdq","qzdqsdq"];
+M(:)=["anything" "blabla"];
+if or(M<>["anything" "blabla"]) then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_4401.dia.ref b/modules/string/tests/nonreg_tests/bug_4401.dia.ref
new file mode 100755
index 000000000..5a2691809
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4401.dia.ref
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: removed the instructions that
+// involved real operations, such as %pi+1,
+// because they are not handled by isnum anymore
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4401 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4401
+//
+// <-- Short Description -->
+// isnum returns wrong values
+//========================================================================================
+assert_checktrue( isnum("%pi") );
+assert_checkfalse( isnum("bla_bla") );
+assert_checktrue( isnum("%nan") );
+assert_checktrue( isnum("%inf") );
+assert_checktrue( isnum("%e") );
+assert_checktrue( isnum("%eps") );
+assert_checktrue( isnum("+%eps") );
+assert_checktrue( isnum("-%eps") );
+assert_checktrue( isnum("Nan") );
+assert_checktrue( isnum("Inf") );
+assert_checktrue( isnum("Nan-%i*Nan") );
+assert_checktrue( isnum("-Inf+Inf*%i") );
+assert_checktrue( isnum("1-%i*%nan") );
+assert_checktrue( isnum("-%eps+%e*%i") );
+assert_checkfalse( isnum("%t") );
+assert_checktrue( isnum("%i") );
+assert_checktrue( isnum("1+%i") );
+assert_checkfalse( isnum("1+%2i") );
+assert_checkfalse( isnum("1+%2*i") );
+assert_checktrue( isnum("1+%i*2") );
+assert_checktrue( isnum("1+2*%i") );
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4401.tst b/modules/string/tests/nonreg_tests/bug_4401.tst
new file mode 100755
index 000000000..fab81149d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4401.tst
@@ -0,0 +1,41 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: removed the instructions that
+// involved real operations, such as %pi+1,
+// because they are not handled by isnum anymore
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4401 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4401
+//
+// <-- Short Description -->
+// isnum returns wrong values
+
+//========================================================================================
+assert_checktrue( isnum("%pi") );
+assert_checkfalse( isnum("bla_bla") );
+assert_checktrue( isnum("%nan") );
+assert_checktrue( isnum("%inf") );
+assert_checktrue( isnum("%e") );
+assert_checktrue( isnum("%eps") );
+assert_checktrue( isnum("+%eps") );
+assert_checktrue( isnum("-%eps") );
+assert_checktrue( isnum("Nan") );
+assert_checktrue( isnum("Inf") );
+assert_checktrue( isnum("Nan-%i*Nan") );
+assert_checktrue( isnum("-Inf+Inf*%i") );
+assert_checktrue( isnum("1-%i*%nan") );
+assert_checktrue( isnum("-%eps+%e*%i") );
+assert_checkfalse( isnum("%t") );
+assert_checktrue( isnum("%i") );
+assert_checktrue( isnum("1+%i") );
+assert_checkfalse( isnum("1+%2i") );
+assert_checkfalse( isnum("1+%2*i") );
+assert_checktrue( isnum("1+%i*2") );
+assert_checktrue( isnum("1+2*%i") );
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4466.dia.ref b/modules/string/tests/nonreg_tests/bug_4466.dia.ref
new file mode 100755
index 000000000..4db3d7070
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4466.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4466 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4466
+//
+// <-- Short Description -->
+// The .' operator is undefined for character string and boolean data types.
+M=['aa','bcd'];
+if or(M.'<>['aa';'bcd']) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4466.tst b/modules/string/tests/nonreg_tests/bug_4466.tst
new file mode 100755
index 000000000..ff24d8784
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4466.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4466 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4466
+//
+// <-- Short Description -->
+// The .' operator is undefined for character string and boolean data types.
+
+M=['aa','bcd'];
+if or(M.'<>['aa';'bcd']) then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_4557.dia.ref b/modules/string/tests/nonreg_tests/bug_4557.dia.ref
new file mode 100755
index 000000000..beeb9ef46
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4557.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Simon Lipp
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4557 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4557
+//
+// <-- Short Description -->
+// Crash when first argument of regexp is a double
+ierr = execstr("regexp([1.,2.,2.],''/foo/'');","errcatch");
+if ierr <> 999 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4557.tst b/modules/string/tests/nonreg_tests/bug_4557.tst
new file mode 100755
index 000000000..1584543d8
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4557.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Simon Lipp
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4557 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4557
+//
+// <-- Short Description -->
+// Crash when first argument of regexp is a double
+
+ierr = execstr("regexp([1.,2.,2.],''/foo/'');","errcatch");
+if ierr <> 999 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_4583.dia.ref b/modules/string/tests/nonreg_tests/bug_4583.dia.ref
new file mode 100755
index 000000000..9f89198ec
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4583.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 4583 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4583
+//
+// <-- Short Description -->
+// Default value for string array assignment was " " instead of an empty string
+t=[];t(3)="foo";
+if or(length(t)<>[0;0;3]) then bugmes();quit;end
+t='x';t(2,3)="foo";
+if or(length(t)<>[1 0 0;0 0 3]) then bugmes();quit;end
+t(2,3,2)='yy';
+if or(length(t(:))<>[1;0;0;0;0;3;0;0;0;0;0;2]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4583.tst b/modules/string/tests/nonreg_tests/bug_4583.tst
new file mode 100755
index 000000000..c2ed5cf79
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4583.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 4583 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4583
+//
+// <-- Short Description -->
+// Default value for string array assignment was " " instead of an empty string
+t=[];t(3)="foo";
+if or(length(t)<>[0;0;3]) then pause,end
+
+t='x';t(2,3)="foo";
+if or(length(t)<>[1 0 0;0 0 3]) then pause,end
+
+t(2,3,2)='yy';
+if or(length(t(:))<>[1;0;0;0;0;3;0;0;0;0;0;2]) then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_4656.dia.ref b/modules/string/tests/nonreg_tests/bug_4656.dia.ref
new file mode 100755
index 000000000..545420c62
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4656.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4656 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4656
+//
+// <-- Short Description -->
+// Change of behavior from 4.1.2 to 5.1.1 of the expression:
+// size(part(string(1:3),[])) = 1 1
+A = ["abcdef" "ghijkl" "mnopqr"];
+if or(size(part(A,[])) <> [1 3]) then bugmes();quit;end
+if or(part(A,[])<>["" "" ""]) then bugmes();quit;end
+if or(size(part(string(1:3),[])) <> [1 3]) then bugmes();quit;end
+if or(part(string(1:3),[])<>["" "" ""]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4656.tst b/modules/string/tests/nonreg_tests/bug_4656.tst
new file mode 100755
index 000000000..f6cc5b22b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4656.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4656 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4656
+//
+// <-- Short Description -->
+// Change of behavior from 4.1.2 to 5.1.1 of the expression:
+// size(part(string(1:3),[])) = 1 1
+
+A = ["abcdef" "ghijkl" "mnopqr"];
+
+if or(size(part(A,[])) <> [1 3]) then pause, end
+if or(part(A,[])<>["" "" ""]) then pause, end
+
+if or(size(part(string(1:3),[])) <> [1 3]) then pause, end
+if or(part(string(1:3),[])<>["" "" ""]) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_4727.dia.ref b/modules/string/tests/nonreg_tests/bug_4727.dia.ref
new file mode 100755
index 000000000..82030542d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4727.dia.ref
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4727 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4727
+//
+// <-- Short Description -->
+// The function length does not return the same value in master and Scilab 4.1.2
+//
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+if length(ascii(0)) <> 1 then bugmes();quit;end
+for i = 1 : size(tab_ref,'*')
+ str = ascii(0) + tab_ref(i) + ascii(0);
+ if length(str) <> ( 1 + length(tab_ref(i)) + 1) then bugmes();quit;end
+end
+strs = [ascii(0) ; ascii(0)];
+if length(strs) <> [1;1] then bugmes();quit;end
+strs = ['' ; ''];
+if length(strs) <> [0;0] then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4727.tst b/modules/string/tests/nonreg_tests/bug_4727.tst
new file mode 100755
index 000000000..3f24e09d9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4727.tst
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4727 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4727
+//
+// <-- Short Description -->
+// The function length does not return the same value in master and Scilab 4.1.2
+//
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+
+if length(ascii(0)) <> 1 then pause,end
+
+for i = 1 : size(tab_ref,'*')
+ str = ascii(0) + tab_ref(i) + ascii(0);
+ if length(str) <> ( 1 + length(tab_ref(i)) + 1) then pause,end
+end
+
+strs = [ascii(0) ; ascii(0)];
+if length(strs) <> [1;1] then pause,end
+
+strs = ['' ; ''];
+if length(strs) <> [0;0] then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_4728.dia.ref b/modules/string/tests/nonreg_tests/bug_4728.dia.ref
new file mode 100755
index 000000000..e0b633702
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4728.dia.ref
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4728 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4728
+//
+// <-- Short Description -->
+// Different result between Scilab 4.1.2 and Scilab master for strcat function
+//
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+if (strcat([ascii(0),"t"]) == "t" + ascii(0)) <> %f then bugmes();quit;end
+if (strcat([ascii(0),"t",ascii(0)]) <> ascii(0) + "t" + ascii(0)) <> %f then bugmes();quit;end
+A = strcat([ascii(0),"t"]);
+B = "t"+ascii(0);
+C = ascii(0) + "t";
+if A <> C then bugmes();quit;end
+sA = length(A);
+if sA <> 2 then bugmes();quit;end
+sB = length(B);
+if sB <> 2 then bugmes();quit;end
+sC = length(C);
+if sC <> 2 then bugmes();quit;end
+for i = 1 : size(tab_ref,'*')
+ r1 = strcat([tab_ref(i),ascii(0),tab_ref(i)]);
+ r2 = tab_ref(i) + ascii(0) + tab_ref(i);
+ if length(r1) <> ( 2 * length(tab_ref(i)) + 1) then bugmes();quit;end
+ if r1 <> r2 then bugmes();quit;end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_4728.tst b/modules/string/tests/nonreg_tests/bug_4728.tst
new file mode 100755
index 000000000..c37caa16d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4728.tst
@@ -0,0 +1,50 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4728 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4728
+//
+// <-- Short Description -->
+// Different result between Scilab 4.1.2 and Scilab master for strcat function
+//
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+
+if (strcat([ascii(0),"t"]) == "t" + ascii(0)) <> %f then pause,end
+
+if (strcat([ascii(0),"t",ascii(0)]) <> ascii(0) + "t" + ascii(0)) <> %f then pause,end
+
+A = strcat([ascii(0),"t"]);
+B = "t"+ascii(0);
+C = ascii(0) + "t";
+
+if A <> C then pause,end
+
+sA = length(A);
+if sA <> 2 then pause,end
+
+sB = length(B);
+if sB <> 2 then pause,end
+
+sC = length(C);
+if sC <> 2 then pause,end
+
+for i = 1 : size(tab_ref,'*')
+ r1 = strcat([tab_ref(i),ascii(0),tab_ref(i)]);
+ r2 = tab_ref(i) + ascii(0) + tab_ref(i);
+ if length(r1) <> ( 2 * length(tab_ref(i)) + 1) then pause,end
+ if r1 <> r2 then pause, end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_4752.dia.ref b/modules/string/tests/nonreg_tests/bug_4752.dia.ref
new file mode 100755
index 000000000..4ccb935fe
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4752.dia.ref
@@ -0,0 +1,17 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 -INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4752 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4752
+//
+// Short description:
+// sci2exp produces erroneous code when applied to boolean matrices (; are missing)
+a=[%f,%f,%f;%f,%f,%t];
+if sci2exp(a)<>'[%f,%f,%f;%f,%f,%t]' then bugmes();quit;end
+if sci2exp(a,0)<>'[%f,%f,%f;%f,%f,%t]' then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4752.tst b/modules/string/tests/nonreg_tests/bug_4752.tst
new file mode 100755
index 000000000..adab6853a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4752.tst
@@ -0,0 +1,22 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 -INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4752 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4752
+//
+// Short description:
+// sci2exp produces erroneous code when applied to boolean matrices (; are missing)
+
+
+a=[%f,%f,%f;%f,%f,%t];
+if sci2exp(a)<>'[%f,%f,%f;%f,%f,%t]' then pause,end
+if sci2exp(a,0)<>'[%f,%f,%f;%f,%f,%t]' then pause,end
+
diff --git a/modules/string/tests/nonreg_tests/bug_4761.dia.ref b/modules/string/tests/nonreg_tests/bug_4761.dia.ref
new file mode 100755
index 000000000..fa4d1ec94
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4761.dia.ref
@@ -0,0 +1,18 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4761 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4761
+//
+// Short description:
+// memory leak in grep with regexp crashes scilab
+a = string(rand(500,10));
+for i = 1:500
+ b = grep(a,'/123|456$/','r');
+end
diff --git a/modules/string/tests/nonreg_tests/bug_4761.tst b/modules/string/tests/nonreg_tests/bug_4761.tst
new file mode 100755
index 000000000..dabcc38b8
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4761.tst
@@ -0,0 +1,21 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4761 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4761
+//
+// Short description:
+// memory leak in grep with regexp crashes scilab
+
+a = string(rand(500,10));
+for i = 1:500
+ b = grep(a,'/123|456$/','r');
+end
diff --git a/modules/string/tests/nonreg_tests/bug_4768.dia.ref b/modules/string/tests/nonreg_tests/bug_4768.dia.ref
new file mode 100755
index 000000000..075a606bd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4768.dia.ref
@@ -0,0 +1,56 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4768 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4768
+//
+// <-- Short Description -->
+//strsplit does not work with localized characters
+//========================================================================================
+v = "世界您好";
+ref_res1 = ["世";"界您好"];
+ref_res3 = ["世界您";"好"];
+r = strsplit(v,1)
+ r =
+
+!世 !
+! !
+!界您好 !
+if r <> ref_res1 then bugmes();quit;end
+r = strsplit(v,3)
+ r =
+
+!世界您 !
+! !
+!好 !
+if r <> ref_res3 then bugmes();quit;end
+//========================================================================================
+v = "азеазея";
+ref_res1 = ["а";"зеазея"]
+ ref_res1 =
+
+!а !
+! !
+!зеазея !
+ref_res3 = ["азе";"азея"];
+r = strsplit(v,1)
+ r =
+
+!а !
+! !
+!зеазея !
+if r <> ref_res1 then bugmes();quit;end
+r = strsplit(v,3)
+ r =
+
+!азе !
+! !
+!азея !
+if r <> ref_res3 then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4768.tst b/modules/string/tests/nonreg_tests/bug_4768.tst
new file mode 100755
index 000000000..400b6f4ef
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4768.tst
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4768 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4768
+//
+// <-- Short Description -->
+//strsplit does not work with localized characters
+
+//========================================================================================
+v = "世界您好";
+ref_res1 = ["世";"界您好"];
+ref_res3 = ["世界您";"好"];
+r = strsplit(v,1)
+if r <> ref_res1 then pause,end
+r = strsplit(v,3)
+if r <> ref_res3 then pause,end
+//========================================================================================
+v = "азеазея";
+ref_res1 = ["а";"зеазея"]
+ref_res3 = ["азе";"азея"];
+r = strsplit(v,1)
+if r <> ref_res1 then pause,end
+r = strsplit(v,3)
+if r <> ref_res3 then pause,end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_4807.dia.ref b/modules/string/tests/nonreg_tests/bug_4807.dia.ref
new file mode 100755
index 000000000..99dba119a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4807.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4807 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4807
+//
+// <-- Short Description -->
+//strsubst does not check if second argument is a valid pattern when there is 'r' as
+// fourth argument
+//========================================================================================
+ierr = execstr("strsubst(''pattern -- pattern __ pattern '',''pattern'',''replace'',''r'');","errcatch");
+if ierr <> 999 then bugmes();quit;end
+ierr = execstr("strsubst(''pattern -- pattern __ pattern '',''/pattern/'',''replace'',''r'');","errcatch");
+if ierr <> 0 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_4807.tst b/modules/string/tests/nonreg_tests/bug_4807.tst
new file mode 100755
index 000000000..48a4902a0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_4807.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4807 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4807
+//
+// <-- Short Description -->
+//strsubst does not check if second argument is a valid pattern when there is 'r' as
+// fourth argument
+//========================================================================================
+ierr = execstr("strsubst(''pattern -- pattern __ pattern '',''pattern'',''replace'',''r'');","errcatch");
+if ierr <> 999 then pause,end
+
+ierr = execstr("strsubst(''pattern -- pattern __ pattern '',''/pattern/'',''replace'',''r'');","errcatch");
+if ierr <> 0 then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_5071.dia.ref b/modules/string/tests/nonreg_tests/bug_5071.dia.ref
new file mode 100755
index 000000000..bab8def90
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5071.dia.ref
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5071 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5071
+//
+// <-- Short Description -->
+// isletter("é") returns [%F %F] instead of %F
+//========================================================================================
+v = "世界您好 3";
+ref = [%T %T %T %T %F %F];
+if ~and(isletter(v) == ref) then bugmes();quit;end
+if length(v) <> size(isletter(v),'*') then bugmes();quit;end
+//========================================================================================
+v = "азеазея 3 азеазея";
+ref = [ %T %T %T %T %T %T %T %F %F %F %T %T %T %T %T %T %T ];
+if ~and(isletter(v) == ref) then bugmes();quit;end
+if length(v) <> size(isletter(v),'*') then bugmes();quit;end
+//========================================================================================
+v = "TéTé a 3";
+ref = [ %T %T %T %T %F %T %F %F ];
+if ~and(isletter(v) == ref) then bugmes();quit;end
+if length(v) <> size(isletter(v),'*') then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_5071.tst b/modules/string/tests/nonreg_tests/bug_5071.tst
new file mode 100755
index 000000000..2bca9c97a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5071.tst
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5071 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5071
+//
+// <-- Short Description -->
+// isletter("é") returns [%F %F] instead of %F
+
+//========================================================================================
+v = "世界您好 3";
+ref = [%T %T %T %T %F %F];
+if ~and(isletter(v) == ref) then pause,end
+if length(v) <> size(isletter(v),'*') then pause,end
+//========================================================================================
+v = "азеазея 3 азеазея";
+ref = [ %T %T %T %T %T %T %T %F %F %F %T %T %T %T %T %T %T ];
+if ~and(isletter(v) == ref) then pause,end
+if length(v) <> size(isletter(v),'*') then pause,end
+//========================================================================================
+v = "TéTé a 3";
+ref = [ %T %T %T %T %F %T %F %F ];
+if ~and(isletter(v) == ref) then pause,end
+if length(v) <> size(isletter(v),'*') then pause,end
+//========================================================================================
+
diff --git a/modules/string/tests/nonreg_tests/bug_5072.dia.ref b/modules/string/tests/nonreg_tests/bug_5072.dia.ref
new file mode 100755
index 000000000..b2882f4a7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5072.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5072 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5072
+//
+// <-- Short Description -->
+// strspn("aéio","éa") returns 3 instead of 2
+//========================================================================================
+ref = 2;
+res = strspn("aéio","éa");
+if ref <> res then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_5072.tst b/modules/string/tests/nonreg_tests/bug_5072.tst
new file mode 100755
index 000000000..d6901c3a7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5072.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5072 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5072
+//
+// <-- Short Description -->
+// strspn("aéio","éa") returns 3 instead of 2
+
+//========================================================================================
+ref = 2;
+res = strspn("aéio","éa");
+if ref <> res then pause,end
+//========================================================================================
+
+
diff --git a/modules/string/tests/nonreg_tests/bug_5073.dia.ref b/modules/string/tests/nonreg_tests/bug_5073.dia.ref
new file mode 100755
index 000000000..abb4348e9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5073.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 5073 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5073
+//
+// <-- Short Description -->
+// Optional argument added for decimal separator
+assert_checkequal(strtod("1,3",","),1.3);
+str_ref=",3";
+d_ref=1;
+[d, str]=strtod("1,3",".");
+assert_checkequal(d, 1);
+assert_checkequal(str, ",3");
diff --git a/modules/string/tests/nonreg_tests/bug_5073.tst b/modules/string/tests/nonreg_tests/bug_5073.tst
new file mode 100755
index 000000000..a2c33b480
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5073.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 5073 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5073
+//
+// <-- Short Description -->
+// Optional argument added for decimal separator
+
+assert_checkequal(strtod("1,3",","),1.3);
+str_ref=",3";
+d_ref=1;
+[d, str]=strtod("1,3",".");
+assert_checkequal(d, 1);
+assert_checkequal(str, ",3");
diff --git a/modules/string/tests/nonreg_tests/bug_5291.dia.ref b/modules/string/tests/nonreg_tests/bug_5291.dia.ref
new file mode 100755
index 000000000..a7c80cc39
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5291.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 5291 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5291
+//
+// <-- Short Description -->
+// [R,F]=strtod(S) should return %nan instead of 0 as interpreted real number when
+// no real number can be detected at the beginning of processed strings.
+//
+[R, F]=strtod([ "123" "+i"]);
+assert_checkequal(R(1), 123);
+assert_checktrue(isnan(R(2)));
+assert_checkequal(F, ['' '+i']);
diff --git a/modules/string/tests/nonreg_tests/bug_5291.tst b/modules/string/tests/nonreg_tests/bug_5291.tst
new file mode 100755
index 000000000..dadaefb8a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5291.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 5291 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5291
+//
+// <-- Short Description -->
+// [R,F]=strtod(S) should return %nan instead of 0 as interpreted real number when
+// no real number can be detected at the beginning of processed strings.
+//
+
+[R, F]=strtod([ "123" "+i"]);
+assert_checkequal(R(1), 123);
+assert_checktrue(isnan(R(2)));
+assert_checkequal(F, ['' '+i']);
diff --git a/modules/string/tests/nonreg_tests/bug_5373.dia.ref b/modules/string/tests/nonreg_tests/bug_5373.dia.ref
new file mode 100755
index 000000000..72fc1a392
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5373.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5373 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5373
+//
+// <-- Short Description -->
+// isalphanum() doesn't support non ascii chars
+//========================================================================================
+ref = [%T];
+res = isalphanum("é");
+if ref <> res then bugmes();quit;end
+//========================================================================================
+ref = [%T %T %T %T %T %T %F %T %F %T %T %T %T %T %T];
+res = isalphanum("scilab é scilab");
+if ~and(ref == res) then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_5373.tst b/modules/string/tests/nonreg_tests/bug_5373.tst
new file mode 100755
index 000000000..95c2363ea
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5373.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5373 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5373
+//
+// <-- Short Description -->
+// isalphanum() doesn't support non ascii chars
+
+//========================================================================================
+ref = [%T];
+res = isalphanum("é");
+if ref <> res then pause,end
+//========================================================================================
+ref = [%T %T %T %T %T %T %F %T %F %T %T %T %T %T %T];
+res = isalphanum("scilab é scilab");
+if ~and(ref == res) then pause,end
+//========================================================================================
+
+
diff --git a/modules/string/tests/nonreg_tests/bug_5375.dia.ref b/modules/string/tests/nonreg_tests/bug_5375.dia.ref
new file mode 100755
index 000000000..b83b1d41d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5375.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5375 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5375
+//
+// <-- Short Description -->
+// isdigit() doesn't support non ascii chars
+//========================================================================================
+ref = [%F %F %T];
+res = isdigit("éa2");
+if ~and(ref == res) then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_5375.tst b/modules/string/tests/nonreg_tests/bug_5375.tst
new file mode 100755
index 000000000..4dd74301b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5375.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5375 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5375
+//
+// <-- Short Description -->
+// isdigit() doesn't support non ascii chars
+
+//========================================================================================
+ref = [%F %F %T];
+res = isdigit("éa2");
+if ~and(ref == res) then pause,end
+//========================================================================================
+
+
diff --git a/modules/string/tests/nonreg_tests/bug_55.dia.ref b/modules/string/tests/nonreg_tests/bug_55.dia.ref
new file mode 100755
index 000000000..dae185b23
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_55.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 55 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=55
+//
+// <-- Short Description -->
+// The sci2exp function gives wrong result with the -%inf
+// value.
+// sci2exp(-%inf) = -Inf instead of the right result = -%inf
+if sci2exp(%inf) <> "%inf" then bugmes();quit;end
+if sci2exp(-%inf)<> "-%inf" then bugmes();quit;end
+if sci2exp(%nan) <> "%nan" then bugmes();quit;end
+if sci2exp(-%nan)<> "%nan" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_55.tst b/modules/string/tests/nonreg_tests/bug_55.tst
new file mode 100755
index 000000000..f3ec0df34
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_55.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 55 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=55
+//
+// <-- Short Description -->
+// The sci2exp function gives wrong result with the -%inf
+// value.
+// sci2exp(-%inf) = -Inf instead of the right result = -%inf
+
+if sci2exp(%inf) <> "%inf" then pause,end
+if sci2exp(-%inf)<> "-%inf" then pause,end
+if sci2exp(%nan) <> "%nan" then pause,end
+if sci2exp(-%nan)<> "%nan" then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_5659.dia.ref b/modules/string/tests/nonreg_tests/bug_5659.dia.ref
new file mode 100755
index 000000000..765e24d46
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5659.dia.ref
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5659 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5659
+//
+// <-- Short Description -->
+// emptystr changed the value of an input variable.
+//========================================================================================
+a = 3;
+b = emptystr();
+if b <> '' then bugmes();quit;end
+if a <> 3 then bugmes();quit;end
+//========================================================================================
+a = 3;
+b = emptystr(a);
+if a <> 3 then bugmes();quit;end
+//========================================================================================
+a = 3;
+b = 2;
+c = emptystr(a, b);
+if a <> 3 then bugmes();quit;end
+if b <> 2 then bugmes();quit;end
+//========================================================================================
+a = 3;
+c = emptystr(a, a);
+if a <> 3 then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_5659.tst b/modules/string/tests/nonreg_tests/bug_5659.tst
new file mode 100755
index 000000000..572b6663b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_5659.tst
@@ -0,0 +1,35 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5659 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5659
+//
+// <-- Short Description -->
+// emptystr changed the value of an input variable.
+
+//========================================================================================
+a = 3;
+b = emptystr();
+if b <> '' then pause,end
+if a <> 3 then pause,end
+//========================================================================================
+a = 3;
+b = emptystr(a);
+if a <> 3 then pause,end
+//========================================================================================
+a = 3;
+b = 2;
+c = emptystr(a, b);
+if a <> 3 then pause,end
+if b <> 2 then pause,end
+//========================================================================================
+a = 3;
+c = emptystr(a, a);
+if a <> 3 then pause,end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_6666.dia.ref b/modules/string/tests/nonreg_tests/bug_6666.dia.ref
new file mode 100755
index 000000000..73638df75
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_6666.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 6666 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6666
+//
+// <-- Short Description -->
+// emptystr() gave a wrong result instead of complaining about hypermatrix.
+//========================================================================================
+M = rand(7, 3);
+T = emptystr(M);
+if or(size(T) <> [ 7 3 ]) then bugmes();quit;end
+M = rand(2, 2, 2);
+ierr = execstr("T = emptystr(M);","errcatch");
+if ierr == 0 then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_6666.tst b/modules/string/tests/nonreg_tests/bug_6666.tst
new file mode 100755
index 000000000..cdba4e59f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_6666.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 6666 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6666
+//
+// <-- Short Description -->
+// emptystr() gave a wrong result instead of complaining about hypermatrix.
+//========================================================================================
+M = rand(7, 3);
+T = emptystr(M);
+if or(size(T) <> [ 7 3 ]) then pause, end
+
+M = rand(2, 2, 2);
+ierr = execstr("T = emptystr(M);","errcatch");
+if ierr == 0 then pause, end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_7057.dia.ref b/modules/string/tests/nonreg_tests/bug_7057.dia.ref
new file mode 100755
index 000000000..efc18eddd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7057.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7057 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7057
+//
+// <-- Short Description -->
+// isdigit & isalphanum crashed with a matrix of string as input argument.
+//========================================================================================
+a = ["a1";"b2b";"1cc2c";"4d555"];
+ierr = execstr('isdigit(a)','errcatch');
+if ierr == 0 then bugmes();quit;end
+//========================================================================================
+a = ["a1";"b2b";"1cc2c";"4d555"];
+ierr = execstr('isalphanum(a)','errcatch');
+if ierr == 0 then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_7057.tst b/modules/string/tests/nonreg_tests/bug_7057.tst
new file mode 100755
index 000000000..76ffcb21d
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7057.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7057 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7057
+//
+// <-- Short Description -->
+// isdigit & isalphanum crashed with a matrix of string as input argument.
+//========================================================================================
+a = ["a1";"b2b";"1cc2c";"4d555"];
+ierr = execstr('isdigit(a)','errcatch');
+if ierr == 0 then pause, end
+//========================================================================================
+a = ["a1";"b2b";"1cc2c";"4d555"];
+ierr = execstr('isalphanum(a)','errcatch');
+if ierr == 0 then pause, end
+//========================================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_7163.dia.ref b/modules/string/tests/nonreg_tests/bug_7163.dia.ref
new file mode 100755
index 000000000..b4c3ab738
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7163.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7163 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7163
+//
+// <-- Short Description -->
+// tree2code wrongly replaced every (:) occurence in a function definition with (eye()).
+function foo(r)
+ r(:)=1
+endfunction
+txt = tree2code(macr2tree(foo));
+if or(txt<>["function [] = foo(r)";"r(:) = 1";"";"endfunction";""]) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7163.tst b/modules/string/tests/nonreg_tests/bug_7163.tst
new file mode 100755
index 000000000..054202c4f
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7163.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7163 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7163
+//
+// <-- Short Description -->
+// tree2code wrongly replaced every (:) occurence in a function definition with (eye()).
+
+function foo(r)
+ r(:)=1
+endfunction
+
+txt = tree2code(macr2tree(foo));
+
+if or(txt<>["function [] = foo(r)";"r(:) = 1";"";"endfunction";""]) then pause; end
diff --git a/modules/string/tests/nonreg_tests/bug_7205.dia.ref b/modules/string/tests/nonreg_tests/bug_7205.dia.ref
new file mode 100755
index 000000000..0fee23bb7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7205.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7205 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7205
+//
+// <-- Short Description -->
+// length() applied to a non string hypermatrix returns 3 instead size(H,"*")
+//
+A=rand(2,2,2,2);
+assert_checkequal(length(A),double(prod(A.dims)));
+A=rand(5,5,5,5,5,5,5);
+assert_checkequal(length(A),double(prod(A.dims)));
diff --git a/modules/string/tests/nonreg_tests/bug_7205.tst b/modules/string/tests/nonreg_tests/bug_7205.tst
new file mode 100755
index 000000000..ba1ca4699
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7205.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7205 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7205
+//
+// <-- Short Description -->
+// length() applied to a non string hypermatrix returns 3 instead size(H,"*")
+//
+
+A=rand(2,2,2,2);
+assert_checkequal(length(A),double(prod(A.dims)));
+A=rand(5,5,5,5,5,5,5);
+assert_checkequal(length(A),double(prod(A.dims)));
diff --git a/modules/string/tests/nonreg_tests/bug_7236.dia.ref b/modules/string/tests/nonreg_tests/bug_7236.dia.ref
new file mode 100755
index 000000000..b8f1533f7
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7236.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7236 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7236
+//
+// <-- Short Description -->
+// sci2exp(-%inf) return a wrong value -nf and not -%inf,
+// a consequence of bug 1371 fix
+if sci2exp(%inf)<>"%inf" then bugmes();quit;end
+if sci2exp(-%inf)<>"-%inf" then bugmes();quit;end
+if sci2exp(%nan)<>"%nan" then bugmes();quit;end
+if string(%inf)<>"Inf" then bugmes();quit;end
+if string(-%inf)<>"-Inf" then bugmes();quit;end
+if string(1-imult(%inf))<>" 1-%i*Inf" then bugmes();quit;end
+if string(1+imult(%inf))<>" 1+%i*Inf" then bugmes();quit;end
+if sci2exp(1-imult(%inf))<>" 1-%i*%inf" then bugmes();quit;end
+if sci2exp(1+imult(%inf))<>" 1+%i*%inf" then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7236.tst b/modules/string/tests/nonreg_tests/bug_7236.tst
new file mode 100755
index 000000000..409b035f0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7236.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 7236 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7236
+//
+// <-- Short Description -->
+// sci2exp(-%inf) return a wrong value -nf and not -%inf,
+// a consequence of bug 1371 fix
+
+if sci2exp(%inf)<>"%inf" then pause,end
+if sci2exp(-%inf)<>"-%inf" then pause,end
+if sci2exp(%nan)<>"%nan" then pause,end
+if string(%inf)<>"Inf" then pause,end
+if string(-%inf)<>"-Inf" then pause,end
+if string(1-imult(%inf))<>" 1-%i*Inf" then pause,end
+if string(1+imult(%inf))<>" 1+%i*Inf" then pause,end
+if sci2exp(1-imult(%inf))<>" 1-%i*%inf" then pause,end
+if sci2exp(1+imult(%inf))<>" 1+%i*%inf" then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_7249.dia.ref b/modules/string/tests/nonreg_tests/bug_7249.dia.ref
new file mode 100755
index 000000000..26e72aa20
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7249.dia.ref
@@ -0,0 +1,86 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7249 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7249
+//
+// <-- Short Description -->
+// 'string' function did not work with a macro as input argument.
+//
+// =============================================================================
+function myFunc
+ disp('myFunc called');
+endfunction
+ref_txt = [' '; ..
+ 'disp(''myFunc called'');'; ..
+ ' '];
+[in, out, txt] = string(myFunc);
+assert_checkequal(out, []);
+assert_checkequal(in, []);
+assert_checkequal(txt, ref_txt);
+// =============================================================================
+deff('myFund()', 'disp(''myFunc called'');', 'n');
+[in2, out2, txt2] = string(myFund);
+assert_checkequal(out2, out);
+assert_checkequal(in2, in);
+assert_checkequal(txt2, ref_txt);
+// =============================================================================
+function [x, y, z] = myFunc1(a,b,c,d)
+ x = [];
+ y = [];
+ z = [];
+ function k = myFunc2(x)
+ k = x + 1;
+ endfunction
+ y = myFunc2(a);
+endfunction
+ref_text = [" "; ..
+ "x = [];"; ..
+ "y = [];"; ..
+ "z = [];"; ..
+ "function k = myFunc2(x)"; ..
+ " k = x + 1;"; ..
+ "endfunction"; ..
+ "y = myFunc2(a);"; ..
+ " "];
+[in, out, txt] = string(myFunc1);
+assert_checkequal(out, ['a','b','c','d']);
+assert_checkequal(in, ['x','y','z']);
+assert_checkequal(txt, ref_text);
+// =============================================================================
+deff('y = mymacro(x)', 'y = x + 1');
+[out, in, text] = string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+// =============================================================================
+deff('y = mymacrob(x)', 'y = x + 1', 'n');
+[out, in, text] = string(mymacrob);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+// =============================================================================
+[out, in, text] = string(sinc);
+assert_checkequal(out, 'y');
+assert_checkequal(in, ['x', 'fl']);
+assert_checkequal(text <> [], %t);
+// =============================================================================
+function y=foo(x);y=x+1;endfunction
+[out, in, text] = string(foo);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, 'y = x + 1;');
+// =============================================================================
+deff('[y,z] = mymacroc(x,i)', 'y = x + 1;z = y;', 'n');
+[out, in, text] = string(mymacroc);
+assert_checkequal(out, ['y', 'z']);
+assert_checkequal(in, ['x', 'i']);
+assert_checkequal(text, [' '; 'y = x + 1;z = y;'; ' ']);
+// =============================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_7249.tst b/modules/string/tests/nonreg_tests/bug_7249.tst
new file mode 100755
index 000000000..36202048c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7249.tst
@@ -0,0 +1,91 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7249 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7249
+//
+// <-- Short Description -->
+// 'string' function did not work with a macro as input argument.
+//
+// =============================================================================
+function myFunc
+ disp('myFunc called');
+endfunction
+
+ref_txt = [' '; ..
+ 'disp(''myFunc called'');'; ..
+ ' '];
+
+[in, out, txt] = string(myFunc);
+assert_checkequal(out, []);
+assert_checkequal(in, []);
+assert_checkequal(txt, ref_txt);
+// =============================================================================
+deff('myFund()', 'disp(''myFunc called'');', 'n');
+[in2, out2, txt2] = string(myFund);
+assert_checkequal(out2, out);
+assert_checkequal(in2, in);
+assert_checkequal(txt2, ref_txt);
+// =============================================================================
+function [x, y, z] = myFunc1(a,b,c,d)
+ x = [];
+ y = [];
+ z = [];
+ function k = myFunc2(x)
+ k = x + 1;
+ endfunction
+ y = myFunc2(a);
+endfunction
+
+ref_text = [" "; ..
+ "x = [];"; ..
+ "y = [];"; ..
+ "z = [];"; ..
+ "function k = myFunc2(x)"; ..
+ " k = x + 1;"; ..
+ "endfunction"; ..
+ "y = myFunc2(a);"; ..
+ " "];
+
+[in, out, txt] = string(myFunc1);
+assert_checkequal(out, ['a','b','c','d']);
+assert_checkequal(in, ['x','y','z']);
+assert_checkequal(txt, ref_text);
+// =============================================================================
+deff('y = mymacro(x)', 'y = x + 1');
+[out, in, text] = string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+// =============================================================================
+deff('y = mymacrob(x)', 'y = x + 1', 'n');
+[out, in, text] = string(mymacrob);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+// =============================================================================
+[out, in, text] = string(sinc);
+assert_checkequal(out, 'y');
+assert_checkequal(in, ['x', 'fl']);
+assert_checkequal(text <> [], %t);
+// =============================================================================
+function y=foo(x);y=x+1;endfunction
+[out, in, text] = string(foo);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, 'y = x + 1;');
+// =============================================================================
+deff('[y,z] = mymacroc(x,i)', 'y = x + 1;z = y;', 'n');
+[out, in, text] = string(mymacroc);
+assert_checkequal(out, ['y', 'z']);
+assert_checkequal(in, ['x', 'i']);
+assert_checkequal(text, [' '; 'y = x + 1;z = y;'; ' ']);
+// =============================================================================
+
diff --git a/modules/string/tests/nonreg_tests/bug_7278.dia.ref b/modules/string/tests/nonreg_tests/bug_7278.dia.ref
new file mode 100755
index 000000000..574b93d30
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7278.dia.ref
@@ -0,0 +1,110 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7278 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7278
+//
+// <-- Short Description -->
+// strsplit did not work with some particular inputs.
+//===============================
+if strsplit("0") <> "0" then bugmes();quit;end
+//===============================
+if strsplit("0","") <> "0" then bugmes();quit;end
+if strsplit("1","") <> "1" then bugmes();quit;end
+if strsplit("2","") <> "2" then bugmes();quit;end
+if strsplit("3","") <> "3" then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",":",1);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",":",1);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",",");
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("","/:|,/");
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("","/:|,/");
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("r",":",1);
+if r_1 <> "r" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(":",":",1);
+if r_1 <> ":" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(",",",");
+if r_1 <> "," then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("r","/:|,/");
+if r_1 <> "r" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(":","/:|,/");
+if r_1 <> ":" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("a",[":";","]);
+if r_1 <> "a" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(":",[":";","]);
+if r_1 <> ":" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(",",[":";","]);
+if r_1 <> "," then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit("a",[":";","],2);
+if r_1 <> "a" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(":",[":";","],2);
+if r_1 <> ":" then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
+[r_1, r_2] = strsplit(",",[":";","],2);
+if r_1 <> "," then bugmes();quit;end
+if r_2 <> [] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/nonreg_tests/bug_7278.tst b/modules/string/tests/nonreg_tests/bug_7278.tst
new file mode 100755
index 000000000..6481ca992
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7278.tst
@@ -0,0 +1,111 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7278 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7278
+//
+// <-- Short Description -->
+// strsplit did not work with some particular inputs.
+//===============================
+if strsplit("0") <> "0" then pause,end
+//===============================
+if strsplit("0","") <> "0" then pause,end
+if strsplit("1","") <> "1" then pause,end
+if strsplit("2","") <> "2" then pause,end
+if strsplit("3","") <> "3" then pause,end
+//===============================
+[r_1, r_2] = strsplit("",":",1);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",":",1);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",",");
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("","/:|,/");
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("","/:|,/");
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","]);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("",[":";","],2);
+if r_1 <> "" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("r",":",1);
+if r_1 <> "r" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(":",":",1);
+if r_1 <> ":" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(",",",");
+if r_1 <> "," then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("r","/:|,/");
+if r_1 <> "r" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(":","/:|,/");
+if r_1 <> ":" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("a",[":";","]);
+if r_1 <> "a" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(":",[":";","]);
+if r_1 <> ":" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(",",[":";","]);
+if r_1 <> "," then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit("a",[":";","],2);
+if r_1 <> "a" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(":",[":";","],2);
+if r_1 <> ":" then pause,end
+if r_2 <> [] then pause,end
+//===============================
+[r_1, r_2] = strsplit(",",[":";","],2);
+if r_1 <> "," then pause,end
+if r_2 <> [] then pause,end
+//===============================
diff --git a/modules/string/tests/nonreg_tests/bug_7282.dia.ref b/modules/string/tests/nonreg_tests/bug_7282.dia.ref
new file mode 100755
index 000000000..e18ddc082
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7282.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7282 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7282
+//
+// <-- Short Description -->
+// eval failed on some functions without output arguments.
+str = "realtimeinit(60)";
+r = eval(str);
+if r <> [] then bugmes();quit;end
+function o = blabla()
+ o = 3;
+endfunction
+r = eval("blabla()");
+if r <> 3 then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7282.tst b/modules/string/tests/nonreg_tests/bug_7282.tst
new file mode 100755
index 000000000..67217b091
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7282.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7282 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7282
+//
+// <-- Short Description -->
+// eval failed on some functions without output arguments.
+
+str = "realtimeinit(60)";
+r = eval(str);
+if r <> [] then pause, end
+
+function o = blabla()
+ o = 3;
+endfunction
+
+r = eval("blabla()");
+if r <> 3 then pause, end
+
+
diff --git a/modules/string/tests/nonreg_tests/bug_7312.dia.ref b/modules/string/tests/nonreg_tests/bug_7312.dia.ref
new file mode 100755
index 000000000..814f7b79a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7312.dia.ref
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7312
+//
+// <-- Short Description -->
+// isnum is broken when using some unusual parameters.
+if isnum("a=") then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7312.tst b/modules/string/tests/nonreg_tests/bug_7312.tst
new file mode 100755
index 000000000..ef5b7461a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7312.tst
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Pierre MARECHAL
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7312
+//
+// <-- Short Description -->
+// isnum is broken when using some unusual parameters.
+
+if isnum("a=") then pause,end
diff --git a/modules/string/tests/nonreg_tests/bug_7733.dia.ref b/modules/string/tests/nonreg_tests/bug_7733.dia.ref
new file mode 100755
index 000000000..b5fc9792c
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7733.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7312
+//
+// <-- Short Description -->
+// strstr crashed scilab if the second input argument was longer than the first one.
+if execstr("r = strstr(""small"", ""largestring"")", "errcatch") <> 0 then bugmes();quit;end
+if r <> "" then bugmes();quit;end
+r = strstr(["a","b";"c","d"], "largestring");
+ref = emptystr(2, 2);
+if or(r <> ref) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7733.tst b/modules/string/tests/nonreg_tests/bug_7733.tst
new file mode 100755
index 000000000..b1421fa36
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7733.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7312
+//
+// <-- Short Description -->
+// strstr crashed scilab if the second input argument was longer than the first one.
+
+if execstr("r = strstr(""small"", ""largestring"")", "errcatch") <> 0 then pause,end
+if r <> "" then pause, end
+
+r = strstr(["a","b";"c","d"], "largestring");
+ref = emptystr(2, 2);
+if or(r <> ref) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_7751.dia.ref b/modules/string/tests/nonreg_tests/bug_7751.dia.ref
new file mode 100755
index 000000000..14159b74e
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7751.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7751 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7751
+//
+// <-- Short Description -->
+// justify() did not work correctly with strings embedded leading or trailing spaces.
+s = [" 1223 " " hetsher " ; "abdljmkm" " fljl"];
+r1 = justify(s,"l");
+r2 = justify(s,"c");
+r3 = justify(s,"r");
+s = stripblanks(s);
+ref1 = justify(s,"l");
+ref2 = justify(s,"c");
+ref3 = justify(s,"r");
+if or(ref1 <> r1) then bugmes();quit;end
+if or(ref2 <> r2) then bugmes();quit;end
+if or(ref3 <> r3) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7751.tst b/modules/string/tests/nonreg_tests/bug_7751.tst
new file mode 100755
index 000000000..7d6b702e1
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7751.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7751 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7751
+//
+// <-- Short Description -->
+// justify() did not work correctly with strings embedded leading or trailing spaces.
+
+s = [" 1223 " " hetsher " ; "abdljmkm" " fljl"];
+r1 = justify(s,"l");
+r2 = justify(s,"c");
+r3 = justify(s,"r");
+s = stripblanks(s);
+ref1 = justify(s,"l");
+ref2 = justify(s,"c");
+ref3 = justify(s,"r");
+
+if or(ref1 <> r1) then pause, end
+if or(ref2 <> r2) then pause, end
+if or(ref3 <> r3) then pause, end
+
diff --git a/modules/string/tests/nonreg_tests/bug_7879.dia.ref b/modules/string/tests/nonreg_tests/bug_7879.dia.ref
new file mode 100755
index 000000000..b680ae68b
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7879.dia.ref
@@ -0,0 +1,46 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises- Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7879 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7879
+//
+// <-- Short Description -->
+// string now accepts plist type.
+function order = mycompfun ( x , y )
+ order = x+y;
+endfunction
+params = init_param();
+params = add_param(params, "boolval", %f);
+params = add_param(params, "funval", mycompfun);
+params = add_param(params, "doubleval", 1);
+params = add_param(params, "doublematrix", ones(10, 10));
+params = add_param(params, "stringval", "1");
+params = add_param(params, "stringmat", ["1" "2"]);
+string(params)
+ ans =
+
+!Parameters list: !
+! !
+!================ !
+! !
+!Number of fields = 6 !
+! !
+!boolval = F ("boolean") !
+! !
+!funval = "function" !
+! !
+!doubleval = 1 ("constant") !
+! !
+!doublematrix = "constant" 10x10 !
+! !
+!stringval = 1 ("string") !
+! !
+!stringmat = "string" 1x2 !
diff --git a/modules/string/tests/nonreg_tests/bug_7879.tst b/modules/string/tests/nonreg_tests/bug_7879.tst
new file mode 100755
index 000000000..7275b26a0
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7879.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises- Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7879 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7879
+//
+// <-- Short Description -->
+// string now accepts plist type.
+
+function order = mycompfun ( x , y )
+ order = x+y;
+endfunction
+
+params = init_param();
+params = add_param(params, "boolval", %f);
+params = add_param(params, "funval", mycompfun);
+params = add_param(params, "doubleval", 1);
+params = add_param(params, "doublematrix", ones(10, 10));
+params = add_param(params, "stringval", "1");
+params = add_param(params, "stringmat", ["1" "2"]);
+
+string(params)
diff --git a/modules/string/tests/nonreg_tests/bug_7951.dia.ref b/modules/string/tests/nonreg_tests/bug_7951.dia.ref
new file mode 100755
index 000000000..d3f74ea35
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7951.dia.ref
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7951 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7951
+//
+// <-- Short Description -->
+// strcat crashed with row concatenation option on linux.
+//
+ref = "line1, line2";
+if execstr("r = strcat([""line1"";""line2""], "", "", ""r"")", "errcatch") <> 0 then bugmes();quit;end
+if ref <> r then bugmes();quit;end
+ref = "line1,line2";
+r = strcat(['line1';'line2'],',','r');
+if ref <> r then bugmes();quit;end
+ref = "line1,blafdfdfdfdfffffffffffffffdfdfline2";
+r = strcat(['line1';'line2'],',blafdfdfdfdfffffffffffffffdfdf','r');
+if ref <> r then bugmes();quit;end
+num = 30;
+baseName = "arg_";
+labels = [];
+typ = list();
+values = string(1:num)';
+for i=1:num
+ varName = baseName + string(i);
+ // variable declaration
+ execstr(varName + " = []");
+ // description update
+ labels = [labels; varName];
+ // typ update
+ typ(i * 2 - 1) = "mat";
+ typ(i * 2) = [1 1];
+end
+argout = strcat(labels, ", ", 'r');
+ref = "arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11, arg_12, arg_13, arg_14, arg_15, arg_16, arg_17, ..
+arg_18, arg_19, arg_20, arg_21, arg_22, arg_23, arg_24, arg_25, arg_26, arg_27, arg_28, arg_29, arg_30";
+if ref <> argout then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_7951.tst b/modules/string/tests/nonreg_tests/bug_7951.tst
new file mode 100755
index 000000000..f781f1c61
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_7951.tst
@@ -0,0 +1,54 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7951 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7951
+//
+// <-- Short Description -->
+// strcat crashed with row concatenation option on linux.
+//
+
+ref = "line1, line2";
+if execstr("r = strcat([""line1"";""line2""], "", "", ""r"")", "errcatch") <> 0 then pause, end
+if ref <> r then pause, end
+
+ref = "line1,line2";
+r = strcat(['line1';'line2'],',','r');
+if ref <> r then pause, end
+
+ref = "line1,blafdfdfdfdfffffffffffffffdfdfline2";
+r = strcat(['line1';'line2'],',blafdfdfdfdfffffffffffffffdfdf','r');
+if ref <> r then pause, end
+
+num = 30;
+baseName = "arg_";
+labels = [];
+typ = list();
+values = string(1:num)';
+for i=1:num
+ varName = baseName + string(i);
+
+ // variable declaration
+ execstr(varName + " = []");
+
+ // description update
+ labels = [labels; varName];
+
+ // typ update
+ typ(i * 2 - 1) = "mat";
+ typ(i * 2) = [1 1];
+end
+
+argout = strcat(labels, ", ", 'r');
+ref = "arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11, arg_12, arg_13, arg_14, arg_15, arg_16, arg_17, ..
+arg_18, arg_19, arg_20, arg_21, arg_22, arg_23, arg_24, arg_25, arg_26, arg_27, arg_28, arg_29, arg_30";
+if ref <> argout then pause, end
+
diff --git a/modules/string/tests/nonreg_tests/bug_8206.dia.ref b/modules/string/tests/nonreg_tests/bug_8206.dia.ref
new file mode 100755
index 000000000..02d37d052
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8206.dia.ref
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8206 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8206
+//
+// <-- Short Description -->
+// isnum did not manage blanks
+//
+a = ["-4.5", ""; "", "-5.6"];
+ref = [%T %F; %F %T];
+r = isnum(a);
+if ~or(r == ref) then bugmes();quit;end
+if isnum("%inf") <> %t then bugmes();quit;end
+if isnum("%nan") <> %t then bugmes();quit;end
+b = ["-4.5", "", "%nan", "%f", "%i", "%pi"];
+r = isnum(b);
+ref = [%T %F %T %F %T %T];
+if ~or(r == ref) then bugmes();quit;end
+C = 1;
+c = ["-4.5", "blabla"; "C", "-5.6"];
+r = isnum(a);
+ref = [%T %F; %T %T];
+if ~or(r == ref) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_8206.tst b/modules/string/tests/nonreg_tests/bug_8206.tst
new file mode 100755
index 000000000..43334a180
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8206.tst
@@ -0,0 +1,36 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8206 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8206
+//
+// <-- Short Description -->
+// isnum did not manage blanks
+//
+
+a = ["-4.5", ""; "", "-5.6"];
+ref = [%T %F; %F %T];
+r = isnum(a);
+if ~or(r == ref) then pause, end
+
+if isnum("%inf") <> %t then pause, end
+if isnum("%nan") <> %t then pause, end
+
+b = ["-4.5", "", "%nan", "%f", "%i", "%pi"];
+r = isnum(b);
+ref = [%T %F %T %F %T %T];
+if ~or(r == ref) then pause, end
+
+C = 1;
+c = ["-4.5", "blabla"; "C", "-5.6"];
+r = isnum(a);
+ref = [%T %F; %T %T];
+if ~or(r == ref) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_8234.dia.ref b/modules/string/tests/nonreg_tests/bug_8234.dia.ref
new file mode 100755
index 000000000..8db859aae
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8234.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8234
+//
+// <-- Short Description -->
+// strtod should return an empty matrix when input argument is an empty matrix
+[d, str] = strtod([]);
+assert_checkequal(d, []);
+assert_checkequal(str, "");
diff --git a/modules/string/tests/nonreg_tests/bug_8234.tst b/modules/string/tests/nonreg_tests/bug_8234.tst
new file mode 100755
index 000000000..8f12da711
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8234.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8234
+//
+// <-- Short Description -->
+// strtod should return an empty matrix when input argument is an empty matrix
+
+[d, str] = strtod([]);
+assert_checkequal(d, []);
+assert_checkequal(str, "");
diff --git a/modules/string/tests/nonreg_tests/bug_8459.dia.ref b/modules/string/tests/nonreg_tests/bug_8459.dia.ref
new file mode 100755
index 000000000..8ff0d7c61
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8459.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8459 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8459
+//
+// <-- Short Description -->
+// strsplit failed when second input argument was a "/"
+//
+ref = [""; "foo"; "bla"];
+ierr = execstr("r1 = strsplit(""/foo/bla"", [""/"" ""\"" "":""], 256);", "errcatch");
+if ierr <> 0 then bugmes();quit;end
+if ~or(r1 == ref) then bugmes();quit;end
+ierr = execstr("r2 = strsplit(""|foo|bla"", [""|""]);", "errcatch");
+if ierr <> 0 then bugmes();quit;end
+if ~or(r2 == ref) then bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_8459.tst b/modules/string/tests/nonreg_tests/bug_8459.tst
new file mode 100755
index 000000000..23a3a7bcd
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8459.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8459 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8459
+//
+// <-- Short Description -->
+// strsplit failed when second input argument was a "/"
+//
+
+ref = [""; "foo"; "bla"];
+
+ierr = execstr("r1 = strsplit(""/foo/bla"", [""/"" ""\"" "":""], 256);", "errcatch");
+if ierr <> 0 then pause, end
+if ~or(r1 == ref) then pause, end
+
+ierr = execstr("r2 = strsplit(""|foo|bla"", [""|""]);", "errcatch");
+if ierr <> 0 then pause, end
+if ~or(r2 == ref) then pause, end
diff --git a/modules/string/tests/nonreg_tests/bug_8481.dia.ref b/modules/string/tests/nonreg_tests/bug_8481.dia.ref
new file mode 100755
index 000000000..6ddbc2e4a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8481.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8481 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/8481
+//
+// <-- Short Description -->
+// Scilab crashed when display a rational containing a complex.
+//
+// the bug came from the use of emptystr() in %r_p.sci
+a='a';
+emptystr();
+s=size(emptystr(a));
+if s(2) ~= 1 then, bugmes();quit;end
diff --git a/modules/string/tests/nonreg_tests/bug_8481.tst b/modules/string/tests/nonreg_tests/bug_8481.tst
new file mode 100755
index 000000000..249d08216
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8481.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8481 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/8481
+//
+// <-- Short Description -->
+// Scilab crashed when display a rational containing a complex.
+//
+
+// the bug came from the use of emptystr() in %r_p.sci
+a='a';
+emptystr();
+s=size(emptystr(a));
+if s(2) ~= 1 then, pause, end \ No newline at end of file
diff --git a/modules/string/tests/nonreg_tests/bug_8528.dia.ref b/modules/string/tests/nonreg_tests/bug_8528.dia.ref
new file mode 100755
index 000000000..c97496d90
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8528.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8528 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8528
+//
+// <-- Short Description -->
+// length returned a wrong size for malformed characters.
+//
+if length(ascii(181)) <> 1 then bugmes();quit;end
+if length(ascii([83. 99. 105. 108. 97. 98.])) <> 6 then bugmes();quit;end
+if length("Scilab") <> 6 then bugmes();quit;end
+if length(ascii([83. 99. 105. 181. 108. 97. 98.])) <> 7 then bugmes();quit;end
+if length("Sciµlab") <> 7 then bugmes();quit;end
+for i=127:255
+ if length(ascii(i)) <> 1 then bugmes();quit;end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_8528.tst b/modules/string/tests/nonreg_tests/bug_8528.tst
new file mode 100755
index 000000000..8a57a945a
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8528.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8528 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8528
+//
+// <-- Short Description -->
+// length returned a wrong size for malformed characters.
+//
+
+if length(ascii(181)) <> 1 then pause, end
+if length(ascii([83. 99. 105. 108. 97. 98.])) <> 6 then pause, end
+if length("Scilab") <> 6 then pause, end
+if length(ascii([83. 99. 105. 181. 108. 97. 98.])) <> 7 then pause, end
+if length("Scilab") <> 7 then pause, end
+for i=127:255
+ if length(ascii(i)) <> 1 then pause, end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_8732.dia.ref b/modules/string/tests/nonreg_tests/bug_8732.dia.ref
new file mode 100755
index 000000000..ae49aaa24
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8732.dia.ref
@@ -0,0 +1,46 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8732 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8732
+//
+// <-- Short Description -->
+// strchr did not work with a non-ASCII character needle.
+//
+// =============================================================================
+v = "世界您好";
+c = "您";
+if strchr(v, c) <> "您好" then bugmes();quit;end
+if strrchr(v, c) <> "您好" then bugmes();quit;end
+// =============================================================================
+v = "азеаея";
+c = "з";
+if strchr(v, c) <> "зеаея" then bugmes();quit;end
+if strrchr(v, c) <> "зеаея" then bugmes();quit;end
+// =============================================================================
+v = "азеаея";
+c = "е";
+if strchr(v, c) <> "еаея" then bugmes();quit;end
+if strrchr(v, c) <> "ея" then bugmes();quit;end
+// =============================================================================
+v = "ハロー・ワールド";
+c = "ド";
+if strchr(v, c) <> "ド" then bugmes();quit;end
+if strrchr(v, c) <> "ド" then bugmes();quit;end
+// =============================================================================
+v = "תוכנית";
+c = "י";
+if strchr(v, c) <> "ית" then bugmes();quit;end
+if strrchr(v, c) <> "ית" then bugmes();quit;end
+// =============================================================================
+if strchr("This is a sample string with accent é&à", "é") <> "é&à" then bugmes();quit;end
+if strrchr("This is a sample string with accent é&à", "é") <> "é&à" then bugmes();quit;end
+// =============================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_8732.tst b/modules/string/tests/nonreg_tests/bug_8732.tst
new file mode 100755
index 000000000..4dbc05cc9
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_8732.tst
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8732 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8732
+//
+// <-- Short Description -->
+// strchr did not work with a non-ASCII character needle.
+//
+// =============================================================================
+v = "世界您好";
+c = "您";
+if strchr(v, c) <> "您好" then pause, end
+if strrchr(v, c) <> "您好" then pause, end
+// =============================================================================
+v = "азеаея";
+c = "з";
+if strchr(v, c) <> "зеаея" then pause, end
+if strrchr(v, c) <> "зеаея" then pause, end
+// =============================================================================
+v = "азеаея";
+c = "е";
+if strchr(v, c) <> "еаея" then pause, end
+if strrchr(v, c) <> "ея" then pause, end
+// =============================================================================
+v = "ハロー・ワールド";
+c = "ド";
+if strchr(v, c) <> "ド" then pause, end
+if strrchr(v, c) <> "ド" then pause, end
+// =============================================================================
+v = "תוכנית";
+c = "י";
+if strchr(v, c) <> "ית" then pause, end
+if strrchr(v, c) <> "ית" then pause, end
+// =============================================================================
+if strchr("This is a sample string with accent é&à", "é") <> "é&à" then pause, end
+if strrchr("This is a sample string with accent é&à", "é") <> "é&à" then pause, end
+// =============================================================================
diff --git a/modules/string/tests/nonreg_tests/bug_9838.dia.ref b/modules/string/tests/nonreg_tests/bug_9838.dia.ref
new file mode 100755
index 000000000..85f64c224
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9838.dia.ref
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9838 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9838
+//
+// <-- Short Description -->
+// evstr freezes on some specific string
+//
+assert_checkequal(evstr('//xxx'),[]);
+t=["1";
+ "2";
+ "//xxx"];
+assert_checkequal(evstr(t),[1;2]);
+nl=ascii(10);
+t=["//comment";
+ "function y=foo(),"
+ " y=1;"
+ "endfunction"];
+t=strcat(t,nl); //make a single string that appears as a string array
+assert_checkequal(evstr(t),[]);
diff --git a/modules/string/tests/nonreg_tests/bug_9838.tst b/modules/string/tests/nonreg_tests/bug_9838.tst
new file mode 100755
index 000000000..9b8b21223
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9838.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9838 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9838
+//
+// <-- Short Description -->
+// evstr freezes on some specific string
+//
+assert_checkequal(evstr('//xxx'),[]);
+t=["1";
+ "2";
+ "//xxx"];
+assert_checkequal(evstr(t),[1;2]);
+
+nl=ascii(10);
+t=["//comment";
+ "function y=foo(),"
+ " y=1;"
+ "endfunction"];
+
+t=strcat(t,nl); //make a single string that appears as a string array
+assert_checkequal(evstr(t),[]);
diff --git a/modules/string/tests/nonreg_tests/bug_9858.dia.ref b/modules/string/tests/nonreg_tests/bug_9858.dia.ref
new file mode 100755
index 000000000..2520a93b5
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9858.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9858 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9858
+//
+// <-- Short Description -->
+// length() could not be overloaded with mlist
+//
+a = mlist(["myMlistT" "field1" "field2"],"aexample","bexampleb");
+assert_checkequal(length(a), size(["myMlistT" "field1" "field2"],"*"));
+assert_checkequal(length(a), 3);
+// we overload length for myMlistT
+function r = %myMlistT_length(M)
+ r = length(M.field1)
+endfunction
+assert_checkequal(length(a), length(a.field1));
+assert_checkequal(length(a.field1), 8);
diff --git a/modules/string/tests/nonreg_tests/bug_9858.tst b/modules/string/tests/nonreg_tests/bug_9858.tst
new file mode 100755
index 000000000..05f920986
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9858.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9858 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9858
+//
+// <-- Short Description -->
+// length() could not be overloaded with mlist
+//
+
+a = mlist(["myMlistT" "field1" "field2"],"aexample","bexampleb");
+assert_checkequal(length(a), size(["myMlistT" "field1" "field2"],"*"));
+assert_checkequal(length(a), 3);
+
+// we overload length for myMlistT
+function r = %myMlistT_length(M)
+ r = length(M.field1)
+endfunction
+
+assert_checkequal(length(a), length(a.field1));
+assert_checkequal(length(a.field1), 8);
diff --git a/modules/string/tests/nonreg_tests/bug_9899.dia.ref b/modules/string/tests/nonreg_tests/bug_9899.dia.ref
new file mode 100755
index 000000000..93cf8bb47
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9899.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9899 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9899
+//
+// <-- Short Description -->
+// string(10*log10(1/10)) give -0 instead of -10
+//
+assert_checkequal(string(10*log10(1/10)),"-10");
+N=[0.000001 0.001 0.1 1 10 100 10000 1000000];
+Ns=["0.000001" "0.001" "0.1","1","10","100","10000","1000000"] ;
+for k=1:size(N,'*')
+ n=N(k);
+ E=n*[0.5:0.01:3]*%eps;
+ for e=E
+ assert_checkequal(string(n+e),Ns(k));
+ end
+ for e=E
+ assert_checkequal(string(-n+e),"-"+Ns(k));
+ end
+end
diff --git a/modules/string/tests/nonreg_tests/bug_9899.tst b/modules/string/tests/nonreg_tests/bug_9899.tst
new file mode 100755
index 000000000..bbd8650df
--- /dev/null
+++ b/modules/string/tests/nonreg_tests/bug_9899.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9899 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9899
+//
+// <-- Short Description -->
+// string(10*log10(1/10)) give -0 instead of -10
+//
+assert_checkequal(string(10*log10(1/10)),"-10");
+
+N=[0.000001 0.001 0.1 1 10 100 10000 1000000];
+Ns=["0.000001" "0.001" "0.1","1","10","100","10000","1000000"] ;
+for k=1:size(N,'*')
+ n=N(k);
+ E=n*[0.5:0.01:3]*%eps;
+ for e=E
+ assert_checkequal(string(n+e),Ns(k));
+ end
+ for e=E
+ assert_checkequal(string(-n+e),"-"+Ns(k));
+ end
+end
diff --git a/modules/string/tests/unit_tests/ascii.dia.ref b/modules/string/tests/unit_tests/ascii.dia.ref
new file mode 100755
index 000000000..f8d27beeb
--- /dev/null
+++ b/modules/string/tests/unit_tests/ascii.dia.ref
@@ -0,0 +1,231 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// =============================================================================
+// unit tests ascii
+// =============================================================================
+// == TEST 1 ===================================================================
+if or(ascii('abcdefghijklmnopqrstuvwxyz')<>(97:122)) then bugmes();quit;end
+if or(ascii(97:122)<>'abcdefghijklmnopqrstuvwxyz') then bugmes();quit;end
+if ascii('')<>[] then bugmes();quit;end
+if ascii([])<>'' then bugmes();quit;end
+// == TEST 2 ===================================================================
+CODE_ASCII_SCILAB = [115 99 105 108 97 98];
+str_scilab = 'scilab';
+if ascii(str_scilab) <> CODE_ASCII_SCILAB then bugmes();quit;end
+if (ascii(CODE_ASCII_SCILAB) <> str_scilab) then bugmes();quit;end
+// == TEST 3 ===================================================================
+if ascii([str_scilab 'a';'b' 'c']) <> [115 99 105 108 97 98 98 97 99] then bugmes();quit;end
+// == TEST 4 ===================================================================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+ASCII_TXT = ascii(txt);
+TXT_FROM_ASCII_CODE = ascii(ASCII_TXT);
+if (length(TXT_FROM_ASCII_CODE) <> 27455) then bugmes();quit;end
+// == TEST 5 ===================================================================
+ if ascii("!") <> 33 then bugmes();quit;end
+ if ascii("""")<> 34 then bugmes();quit;end
+ if ascii("#") <> 35 then bugmes();quit;end
+ if ascii("$") <> 36 then bugmes();quit;end
+ if ascii("%") <> 37 then bugmes();quit;end
+ if ascii("&") <> 38 then bugmes();quit;end
+ if ascii("''")<> 39 then bugmes();quit;end
+ if ascii("(") <> 40 then bugmes();quit;end
+ if ascii(")") <> 41 then bugmes();quit;end
+ if ascii("*") <> 42 then bugmes();quit;end
+ if ascii("+") <> 43 then bugmes();quit;end
+ if ascii(",") <> 44 then bugmes();quit;end
+ if ascii("-") <> 45 then bugmes();quit;end
+ if ascii(".") <> 46 then bugmes();quit;end
+ if ascii("/") <> 47 then bugmes();quit;end
+ if ascii("0") <> 48 then bugmes();quit;end
+ if ascii("1") <> 49 then bugmes();quit;end
+ if ascii("2") <> 50 then bugmes();quit;end
+ if ascii("3") <> 51 then bugmes();quit;end
+ if ascii("4") <> 52 then bugmes();quit;end
+ if ascii("5") <> 53 then bugmes();quit;end
+ if ascii("6") <> 54 then bugmes();quit;end
+ if ascii("7") <> 55 then bugmes();quit;end
+ if ascii("8") <> 56 then bugmes();quit;end
+ if ascii("9") <> 57 then bugmes();quit;end
+ if ascii(":") <> 58 then bugmes();quit;end
+ if ascii(";") <> 59 then bugmes();quit;end
+ if ascii("<") <> 60 then bugmes();quit;end
+ if ascii("=") <> 61 then bugmes();quit;end
+ if ascii(">") <> 62 then bugmes();quit;end
+ if ascii("?") <> 63 then bugmes();quit;end
+ if ascii("@") <> 64 then bugmes();quit;end
+ if ascii("A") <> 65 then bugmes();quit;end
+ if ascii("B") <> 66 then bugmes();quit;end
+ if ascii("C") <> 67 then bugmes();quit;end
+ if ascii("D") <> 68 then bugmes();quit;end
+ if ascii("E") <> 69 then bugmes();quit;end
+ if ascii("F") <> 70 then bugmes();quit;end
+ if ascii("G") <> 71 then bugmes();quit;end
+ if ascii("H") <> 72 then bugmes();quit;end
+ if ascii("I") <> 73 then bugmes();quit;end
+ if ascii("J") <> 74 then bugmes();quit;end
+ if ascii("K") <> 75 then bugmes();quit;end
+ if ascii("L") <> 76 then bugmes();quit;end
+ if ascii("M") <> 77 then bugmes();quit;end
+ if ascii("N") <> 78 then bugmes();quit;end
+ if ascii("O") <> 79 then bugmes();quit;end
+ if ascii("P") <> 80 then bugmes();quit;end
+ if ascii("Q") <> 81 then bugmes();quit;end
+ if ascii("R") <> 82 then bugmes();quit;end
+ if ascii("S") <> 83 then bugmes();quit;end
+ if ascii("T") <> 84 then bugmes();quit;end
+ if ascii("U") <> 85 then bugmes();quit;end
+ if ascii("V") <> 86 then bugmes();quit;end
+ if ascii("W") <> 87 then bugmes();quit;end
+ if ascii("X") <> 88 then bugmes();quit;end
+ if ascii("Y") <> 89 then bugmes();quit;end
+ if ascii("Z") <> 90 then bugmes();quit;end
+ if ascii("[") <> 91 then bugmes();quit;end
+ if ascii("\") <> 92 then bugmes();quit;end
+ if ascii("]") <> 93 then bugmes();quit;end
+ if ascii("^") <> 94 then bugmes();quit;end
+ if ascii("_") <> 95 then bugmes();quit;end
+ if ascii("`") <> 96 then bugmes();quit;end
+ if ascii("a") <> 97 then bugmes();quit;end
+ if ascii("b") <> 98 then bugmes();quit;end
+ if ascii("c") <> 99 then bugmes();quit;end
+ if ascii("d") <> 100 then bugmes();quit;end
+ if ascii("e") <> 101 then bugmes();quit;end
+ if ascii("f") <> 102 then bugmes();quit;end
+ if ascii("g") <> 103 then bugmes();quit;end
+ if ascii("h") <> 104 then bugmes();quit;end
+ if ascii("i") <> 105 then bugmes();quit;end
+ if ascii("j") <> 106 then bugmes();quit;end
+ if ascii("k") <> 107 then bugmes();quit;end
+ if ascii("l") <> 108 then bugmes();quit;end
+ if ascii("m") <> 109 then bugmes();quit;end
+ if ascii("n") <> 110 then bugmes();quit;end
+ if ascii("o") <> 111 then bugmes();quit;end
+ if ascii("p") <> 112 then bugmes();quit;end
+ if ascii("q") <> 113 then bugmes();quit;end
+ if ascii("r") <> 114 then bugmes();quit;end
+ if ascii("s") <> 115 then bugmes();quit;end
+ if ascii("t") <> 116 then bugmes();quit;end
+ if ascii("u") <> 117 then bugmes();quit;end
+ if ascii("v") <> 118 then bugmes();quit;end
+ if ascii("w") <> 119 then bugmes();quit;end
+ if ascii("x") <> 120 then bugmes();quit;end
+ if ascii("y") <> 121 then bugmes();quit;end
+ if ascii("z") <> 122 then bugmes();quit;end
+ if ascii("{") <> 123 then bugmes();quit;end
+ if ascii("|") <> 124 then bugmes();quit;end
+ if ascii("}") <> 125 then bugmes();quit;end
+ if ascii("~") <> 126 then bugmes();quit;end
+ if ascii(33) <> "!" then bugmes();quit;end
+ if ascii(34) <> """" then bugmes();quit;end
+ if ascii(35) <> "#" then bugmes();quit;end
+ if ascii(36) <> "$" then bugmes();quit;end
+ if ascii(37) <> "%" then bugmes();quit;end
+ if ascii(38) <> "&" then bugmes();quit;end
+ if ascii(39) <> "''" then bugmes();quit;end
+ if ascii(40) <> "(" then bugmes();quit;end
+ if ascii(41) <> ")" then bugmes();quit;end
+ if ascii(42) <> "*" then bugmes();quit;end
+ if ascii(43) <> "+" then bugmes();quit;end
+ if ascii(44) <> "," then bugmes();quit;end
+ if ascii(45) <> "-" then bugmes();quit;end
+ if ascii(46) <> "." then bugmes();quit;end
+ if ascii(47) <> "/" then bugmes();quit;end
+ if ascii(48) <> "0" then bugmes();quit;end
+ if ascii(49) <> "1" then bugmes();quit;end
+ if ascii(50) <> "2" then bugmes();quit;end
+ if ascii(51) <> "3" then bugmes();quit;end
+ if ascii(52) <> "4" then bugmes();quit;end
+ if ascii(53) <> "5" then bugmes();quit;end
+ if ascii(54) <> "6" then bugmes();quit;end
+ if ascii(55) <> "7" then bugmes();quit;end
+ if ascii(56) <> "8" then bugmes();quit;end
+ if ascii(57) <> "9" then bugmes();quit;end
+ if ascii(58) <> ":" then bugmes();quit;end
+ if ascii(59) <> ";" then bugmes();quit;end
+ if ascii(60) <> "<" then bugmes();quit;end
+ if ascii(61) <> "=" then bugmes();quit;end
+ if ascii(62) <> ">" then bugmes();quit;end
+ if ascii(63) <> "?" then bugmes();quit;end
+ if ascii(64) <> "@" then bugmes();quit;end
+ if ascii(65) <> "A" then bugmes();quit;end
+ if ascii(66) <> "B" then bugmes();quit;end
+ if ascii(67) <> "C" then bugmes();quit;end
+ if ascii(68) <> "D" then bugmes();quit;end
+ if ascii(69) <> "E" then bugmes();quit;end
+ if ascii(70) <> "F" then bugmes();quit;end
+ if ascii(71) <> "G" then bugmes();quit;end
+ if ascii(72) <> "H" then bugmes();quit;end
+ if ascii(73) <> "I" then bugmes();quit;end
+ if ascii(74) <> "J" then bugmes();quit;end
+ if ascii(75) <> "K" then bugmes();quit;end
+ if ascii(76) <> "L" then bugmes();quit;end
+ if ascii(77) <> "M" then bugmes();quit;end
+ if ascii(78) <> "N" then bugmes();quit;end
+ if ascii(79) <> "O" then bugmes();quit;end
+ if ascii(80) <> "P" then bugmes();quit;end
+ if ascii(81) <> "Q" then bugmes();quit;end
+ if ascii(82) <> "R" then bugmes();quit;end
+ if ascii(83) <> "S" then bugmes();quit;end
+ if ascii(84) <> "T" then bugmes();quit;end
+ if ascii(85) <> "U" then bugmes();quit;end
+ if ascii(86) <> "V" then bugmes();quit;end
+ if ascii(87) <> "W" then bugmes();quit;end
+ if ascii(88) <> "X" then bugmes();quit;end
+ if ascii(89) <> "Y" then bugmes();quit;end
+ if ascii(90) <> "Z" then bugmes();quit;end
+ if ascii(91) <> "[" then bugmes();quit;end
+ if ascii(92) <> "\" then bugmes();quit;end
+ if ascii(93) <> "]" then bugmes();quit;end
+ if ascii(94) <> "^" then bugmes();quit;end
+ if ascii(95) <> "_" then bugmes();quit;end
+ if ascii(96) <> "`" then bugmes();quit;end
+ if ascii(97) <> "a" then bugmes();quit;end
+ if ascii(98) <> "b" then bugmes();quit;end
+ if ascii(99) <> "c" then bugmes();quit;end
+ if ascii(100) <> "d" then bugmes();quit;end
+ if ascii(101) <> "e" then bugmes();quit;end
+ if ascii(102) <> "f" then bugmes();quit;end
+ if ascii(103) <> "g" then bugmes();quit;end
+ if ascii(104) <> "h" then bugmes();quit;end
+ if ascii(105) <> "i" then bugmes();quit;end
+ if ascii(106) <> "j" then bugmes();quit;end
+ if ascii(107) <> "k" then bugmes();quit;end
+ if ascii(108) <> "l" then bugmes();quit;end
+ if ascii(109) <> "m" then bugmes();quit;end
+ if ascii(110) <> "n" then bugmes();quit;end
+ if ascii(111) <> "o" then bugmes();quit;end
+ if ascii(112) <> "p" then bugmes();quit;end
+ if ascii(113) <> "q" then bugmes();quit;end
+ if ascii(114) <> "r" then bugmes();quit;end
+ if ascii(115) <> "s" then bugmes();quit;end
+ if ascii(116) <> "t" then bugmes();quit;end
+ if ascii(117) <> "u" then bugmes();quit;end
+ if ascii(118) <> "v" then bugmes();quit;end
+ if ascii(119) <> "w" then bugmes();quit;end
+ if ascii(120) <> "x" then bugmes();quit;end
+ if ascii(121) <> "y" then bugmes();quit;end
+ if ascii(122) <> "z" then bugmes();quit;end
+ if ascii(123) <> "{" then bugmes();quit;end
+ if ascii(124) <> "|" then bugmes();quit;end
+ if ascii(125) <> "}" then bugmes();quit;end
+ if ascii(126) <> "~" then bugmes();quit;end
+// == TEST 6 ===================================================================
+NB_CHARACTERS = 400000;
+letters_ascii_code = ones(1,NB_CHARACTERS)*78;
+letters=ascii(letters_ascii_code);
+if (length(letters) <> NB_CHARACTERS) then bugmes();quit;end
+// == TEST 7 ===================================================================
+A = floor( 126 * rand(100,100) );
+if or( ascii(A) <> ascii(int8(A)) ) then bugmes();quit;end
+if or( ascii(A) <> ascii(int16(A)) ) then bugmes();quit;end
+if or( ascii(A) <> ascii(int32(A)) ) then bugmes();quit;end
+if or( ascii(A) <> ascii(uint8(A)) ) then bugmes();quit;end
+if or( ascii(A) <> ascii(uint16(A)) ) then bugmes();quit;end
+if or( ascii(A) <> ascii(uint32(A)) ) then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/ascii.tst b/modules/string/tests/unit_tests/ascii.tst
new file mode 100755
index 000000000..3a4606a66
--- /dev/null
+++ b/modules/string/tests/unit_tests/ascii.tst
@@ -0,0 +1,251 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// =============================================================================
+// unit tests ascii
+// =============================================================================
+
+// == TEST 1 ===================================================================
+
+if or(ascii('abcdefghijklmnopqrstuvwxyz')<>(97:122)) then pause,end
+if or(ascii(97:122)<>'abcdefghijklmnopqrstuvwxyz') then pause,end
+if ascii('')<>[] then pause,end
+if ascii([])<>'' then pause,end
+
+// == TEST 2 ===================================================================
+
+CODE_ASCII_SCILAB = [115 99 105 108 97 98];
+str_scilab = 'scilab';
+if ascii(str_scilab) <> CODE_ASCII_SCILAB then pause,end
+if (ascii(CODE_ASCII_SCILAB) <> str_scilab) then pause,end
+
+// == TEST 3 ===================================================================
+
+if ascii([str_scilab 'a';'b' 'c']) <> [115 99 105 108 97 98 98 97 99] then pause,end
+
+// == TEST 4 ===================================================================
+
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+ASCII_TXT = ascii(txt);
+TXT_FROM_ASCII_CODE = ascii(ASCII_TXT);
+
+if (length(TXT_FROM_ASCII_CODE) <> 27455) then pause,end
+
+// == TEST 5 ===================================================================
+
+ if ascii("!") <> 33 then pause,end
+ if ascii("""")<> 34 then pause,end
+ if ascii("#") <> 35 then pause,end
+ if ascii("$") <> 36 then pause,end
+ if ascii("%") <> 37 then pause,end
+ if ascii("&") <> 38 then pause,end
+ if ascii("''")<> 39 then pause,end
+ if ascii("(") <> 40 then pause,end
+ if ascii(")") <> 41 then pause,end
+ if ascii("*") <> 42 then pause,end
+ if ascii("+") <> 43 then pause,end
+ if ascii(",") <> 44 then pause,end
+ if ascii("-") <> 45 then pause,end
+ if ascii(".") <> 46 then pause,end
+ if ascii("/") <> 47 then pause,end
+ if ascii("0") <> 48 then pause,end
+ if ascii("1") <> 49 then pause,end
+ if ascii("2") <> 50 then pause,end
+ if ascii("3") <> 51 then pause,end
+ if ascii("4") <> 52 then pause,end
+ if ascii("5") <> 53 then pause,end
+ if ascii("6") <> 54 then pause,end
+ if ascii("7") <> 55 then pause,end
+ if ascii("8") <> 56 then pause,end
+ if ascii("9") <> 57 then pause,end
+ if ascii(":") <> 58 then pause,end
+ if ascii(";") <> 59 then pause,end
+ if ascii("<") <> 60 then pause,end
+ if ascii("=") <> 61 then pause,end
+ if ascii(">") <> 62 then pause,end
+ if ascii("?") <> 63 then pause,end
+ if ascii("@") <> 64 then pause,end
+ if ascii("A") <> 65 then pause,end
+ if ascii("B") <> 66 then pause,end
+ if ascii("C") <> 67 then pause,end
+ if ascii("D") <> 68 then pause,end
+ if ascii("E") <> 69 then pause,end
+ if ascii("F") <> 70 then pause,end
+ if ascii("G") <> 71 then pause,end
+ if ascii("H") <> 72 then pause,end
+ if ascii("I") <> 73 then pause,end
+ if ascii("J") <> 74 then pause,end
+ if ascii("K") <> 75 then pause,end
+ if ascii("L") <> 76 then pause,end
+ if ascii("M") <> 77 then pause,end
+ if ascii("N") <> 78 then pause,end
+ if ascii("O") <> 79 then pause,end
+ if ascii("P") <> 80 then pause,end
+ if ascii("Q") <> 81 then pause,end
+ if ascii("R") <> 82 then pause,end
+ if ascii("S") <> 83 then pause,end
+ if ascii("T") <> 84 then pause,end
+ if ascii("U") <> 85 then pause,end
+ if ascii("V") <> 86 then pause,end
+ if ascii("W") <> 87 then pause,end
+ if ascii("X") <> 88 then pause,end
+ if ascii("Y") <> 89 then pause,end
+ if ascii("Z") <> 90 then pause,end
+ if ascii("[") <> 91 then pause,end
+ if ascii("\") <> 92 then pause,end
+ if ascii("]") <> 93 then pause,end
+ if ascii("^") <> 94 then pause,end
+ if ascii("_") <> 95 then pause,end
+ if ascii("`") <> 96 then pause,end
+ if ascii("a") <> 97 then pause,end
+ if ascii("b") <> 98 then pause,end
+ if ascii("c") <> 99 then pause,end
+ if ascii("d") <> 100 then pause,end
+ if ascii("e") <> 101 then pause,end
+ if ascii("f") <> 102 then pause,end
+ if ascii("g") <> 103 then pause,end
+ if ascii("h") <> 104 then pause,end
+ if ascii("i") <> 105 then pause,end
+ if ascii("j") <> 106 then pause,end
+ if ascii("k") <> 107 then pause,end
+ if ascii("l") <> 108 then pause,end
+ if ascii("m") <> 109 then pause,end
+ if ascii("n") <> 110 then pause,end
+ if ascii("o") <> 111 then pause,end
+ if ascii("p") <> 112 then pause,end
+ if ascii("q") <> 113 then pause,end
+ if ascii("r") <> 114 then pause,end
+ if ascii("s") <> 115 then pause,end
+ if ascii("t") <> 116 then pause,end
+ if ascii("u") <> 117 then pause,end
+ if ascii("v") <> 118 then pause,end
+ if ascii("w") <> 119 then pause,end
+ if ascii("x") <> 120 then pause,end
+ if ascii("y") <> 121 then pause,end
+ if ascii("z") <> 122 then pause,end
+ if ascii("{") <> 123 then pause,end
+ if ascii("|") <> 124 then pause,end
+ if ascii("}") <> 125 then pause,end
+ if ascii("~") <> 126 then pause,end
+
+ if ascii(33) <> "!" then pause,end
+ if ascii(34) <> """" then pause,end
+ if ascii(35) <> "#" then pause,end
+ if ascii(36) <> "$" then pause,end
+ if ascii(37) <> "%" then pause,end
+ if ascii(38) <> "&" then pause,end
+ if ascii(39) <> "''" then pause,end
+ if ascii(40) <> "(" then pause,end
+ if ascii(41) <> ")" then pause,end
+ if ascii(42) <> "*" then pause,end
+ if ascii(43) <> "+" then pause,end
+ if ascii(44) <> "," then pause,end
+ if ascii(45) <> "-" then pause,end
+ if ascii(46) <> "." then pause,end
+ if ascii(47) <> "/" then pause,end
+ if ascii(48) <> "0" then pause,end
+ if ascii(49) <> "1" then pause,end
+ if ascii(50) <> "2" then pause,end
+ if ascii(51) <> "3" then pause,end
+ if ascii(52) <> "4" then pause,end
+ if ascii(53) <> "5" then pause,end
+ if ascii(54) <> "6" then pause,end
+ if ascii(55) <> "7" then pause,end
+ if ascii(56) <> "8" then pause,end
+ if ascii(57) <> "9" then pause,end
+ if ascii(58) <> ":" then pause,end
+ if ascii(59) <> ";" then pause,end
+ if ascii(60) <> "<" then pause,end
+ if ascii(61) <> "=" then pause,end
+ if ascii(62) <> ">" then pause,end
+ if ascii(63) <> "?" then pause,end
+ if ascii(64) <> "@" then pause,end
+ if ascii(65) <> "A" then pause,end
+ if ascii(66) <> "B" then pause,end
+ if ascii(67) <> "C" then pause,end
+ if ascii(68) <> "D" then pause,end
+ if ascii(69) <> "E" then pause,end
+ if ascii(70) <> "F" then pause,end
+ if ascii(71) <> "G" then pause,end
+ if ascii(72) <> "H" then pause,end
+ if ascii(73) <> "I" then pause,end
+ if ascii(74) <> "J" then pause,end
+ if ascii(75) <> "K" then pause,end
+ if ascii(76) <> "L" then pause,end
+ if ascii(77) <> "M" then pause,end
+ if ascii(78) <> "N" then pause,end
+ if ascii(79) <> "O" then pause,end
+ if ascii(80) <> "P" then pause,end
+ if ascii(81) <> "Q" then pause,end
+ if ascii(82) <> "R" then pause,end
+ if ascii(83) <> "S" then pause,end
+ if ascii(84) <> "T" then pause,end
+ if ascii(85) <> "U" then pause,end
+ if ascii(86) <> "V" then pause,end
+ if ascii(87) <> "W" then pause,end
+ if ascii(88) <> "X" then pause,end
+ if ascii(89) <> "Y" then pause,end
+ if ascii(90) <> "Z" then pause,end
+ if ascii(91) <> "[" then pause,end
+ if ascii(92) <> "\" then pause,end
+ if ascii(93) <> "]" then pause,end
+ if ascii(94) <> "^" then pause,end
+ if ascii(95) <> "_" then pause,end
+ if ascii(96) <> "`" then pause,end
+ if ascii(97) <> "a" then pause,end
+ if ascii(98) <> "b" then pause,end
+ if ascii(99) <> "c" then pause,end
+ if ascii(100) <> "d" then pause,end
+ if ascii(101) <> "e" then pause,end
+ if ascii(102) <> "f" then pause,end
+ if ascii(103) <> "g" then pause,end
+ if ascii(104) <> "h" then pause,end
+ if ascii(105) <> "i" then pause,end
+ if ascii(106) <> "j" then pause,end
+ if ascii(107) <> "k" then pause,end
+ if ascii(108) <> "l" then pause,end
+ if ascii(109) <> "m" then pause,end
+ if ascii(110) <> "n" then pause,end
+ if ascii(111) <> "o" then pause,end
+ if ascii(112) <> "p" then pause,end
+ if ascii(113) <> "q" then pause,end
+ if ascii(114) <> "r" then pause,end
+ if ascii(115) <> "s" then pause,end
+ if ascii(116) <> "t" then pause,end
+ if ascii(117) <> "u" then pause,end
+ if ascii(118) <> "v" then pause,end
+ if ascii(119) <> "w" then pause,end
+ if ascii(120) <> "x" then pause,end
+ if ascii(121) <> "y" then pause,end
+ if ascii(122) <> "z" then pause,end
+ if ascii(123) <> "{" then pause,end
+ if ascii(124) <> "|" then pause,end
+ if ascii(125) <> "}" then pause,end
+ if ascii(126) <> "~" then pause,end
+
+// == TEST 6 ===================================================================
+
+NB_CHARACTERS = 400000;
+letters_ascii_code = ones(1,NB_CHARACTERS)*78;
+letters=ascii(letters_ascii_code);
+if (length(letters) <> NB_CHARACTERS) then pause,end
+
+// == TEST 7 ===================================================================
+
+A = floor( 126 * rand(100,100) );
+
+if or( ascii(A) <> ascii(int8(A)) ) then pause, end
+if or( ascii(A) <> ascii(int16(A)) ) then pause, end
+if or( ascii(A) <> ascii(int32(A)) ) then pause, end
+
+if or( ascii(A) <> ascii(uint8(A)) ) then pause, end
+if or( ascii(A) <> ascii(uint16(A)) ) then pause, end
+if or( ascii(A) <> ascii(uint32(A)) ) then pause, end
diff --git a/modules/string/tests/unit_tests/asciimat.dia.ref b/modules/string/tests/unit_tests/asciimat.dia.ref
new file mode 100755
index 000000000..4458acb80
--- /dev/null
+++ b/modules/string/tests/unit_tests/asciimat.dia.ref
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// ascii to string
+ref = [97 98 99 ;100 101 102];
+code = asciimat(["a" "b" "c";"d" "e" "f"]);
+assert_checkequal(ref, code);
+ref = [97 122 98 99 ;100 101 121 102];
+code = asciimat(["az" "b" "c";"d" "ey" "f"]);
+assert_checkequal(ref, code);
+// not managed in scilab 5
+scilabversion = getversion("scilab");
+if scilabversion(1) >= 6
+ ref = matrix(97:120,2,3,4);
+ a = matrix(strsplit(ascii(97:120),1:23),2,3,4);
+ code = asciimat(a);
+ assert_checkequal(ref, code);
+end
+// string to ascii
+ref = ["azerty";"ytreza"];
+str = asciimat([97 122 101 114 116 121; 121 116 114 101 122 97]);
+assert_checkequal(ref, str);
+ref = ["bdf" "hjl" "npr" "tvx";"ceg" "ikm" "oqs" "uwy"];
+a = matrix(97+(1:2*3*4),2,3,4);
+str = asciimat(a);
+assert_checkequal(ref, str);
diff --git a/modules/string/tests/unit_tests/asciimat.tst b/modules/string/tests/unit_tests/asciimat.tst
new file mode 100755
index 000000000..5be1ec74d
--- /dev/null
+++ b/modules/string/tests/unit_tests/asciimat.tst
@@ -0,0 +1,39 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// ascii to string
+ref = [97 98 99 ;100 101 102];
+code = asciimat(["a" "b" "c";"d" "e" "f"]);
+assert_checkequal(ref, code);
+
+ref = [97 122 98 99 ;100 101 121 102];
+code = asciimat(["az" "b" "c";"d" "ey" "f"]);
+assert_checkequal(ref, code);
+
+// not managed in scilab 5
+scilabversion = getversion("scilab");
+if scilabversion(1) >= 6
+ ref = matrix(97:120,2,3,4);
+ a = matrix(strsplit(ascii(97:120),1:23),2,3,4);
+ code = asciimat(a);
+ assert_checkequal(ref, code);
+end
+
+
+// string to ascii
+ref = ["azerty";"ytreza"];
+str = asciimat([97 122 101 114 116 121; 121 116 114 101 122 97]);
+assert_checkequal(ref, str);
+
+ref = ["bdf" "hjl" "npr" "tvx";"ceg" "ikm" "oqs" "uwy"];
+a = matrix(97+(1:2*3*4),2,3,4);
+str = asciimat(a);
+assert_checkequal(ref, str);
+
+
diff --git a/modules/string/tests/unit_tests/base.dia.ref b/modules/string/tests/unit_tests/base.dia.ref
new file mode 100755
index 000000000..9d747b4f7
--- /dev/null
+++ b/modules/string/tests/unit_tests/base.dia.ref
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// Operations on strings
+if 'a'=='b' then bugmes();quit;end
+if 'a'=='' then bugmes();quit;end
+if ''=='b' then bugmes();quit;end
+if 'a'=='ab' then bugmes();quit;end
+if 'a'<>'a' then bugmes();quit;end
+if ''<>'' then bugmes();quit;end
+if execstr("''a''>''b''" ,'errcatch') == 0 then bugmes();quit;end
+if execstr("''a''>=''b''" ,'errcatch') == 0 then bugmes();quit;end
+if execstr("''a''<=''b''" ,'errcatch') == 0 then bugmes();quit;end
+if execstr("''a''<''b''" ,'errcatch') == 0 then bugmes();quit;end
+if 'abc'+'def' <> 'abcdef' then bugmes();quit;end
+if ['abc'] <> 'abc' then bugmes();quit;end
+r=['abc','def'];
+if or(size(r) <> [1 2] ) then bugmes();quit;end
+if r(1) <> 'abc' then bugmes();quit;end
+if r(1,[%t, %f]) <> 'abc' then bugmes();quit;end
+if or(r(:) <> r' ) then bugmes();quit;end
+if r(1,[%t, %f]) <>'abc' then bugmes();quit;end
+r=['abc','def'
+ '' ,'1234'
+ 'x' ,'' ];
+if or(size(r) <> [3 2] ) then bugmes();quit;end
+if or(r(1,:) <> ['abc','def'] ) then bugmes();quit;end
+if or(r([1,1],1) <> ['abc';'abc'] ) then bugmes();quit;end
+if or(r(:,[1 2 1]) <> [r(:,1) r(:,2) r(:,1)] ) then bugmes();quit;end
+if or(r(:,1) <> ['abc';'';'x'] ) then bugmes();quit;end
+if or(r(:,:) <> r ) then bugmes();quit;end
+if or(r(:) <> matrix(r,-1,1) ) then bugmes();quit;end
+r(2,:)=[];
+if or(r<>['abc','def';'x','']) then bugmes();quit;end
+r(:,1)=[];
+if or(r<>['def';'']) then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/base.tst b/modules/string/tests/unit_tests/base.tst
new file mode 100755
index 000000000..207502eb7
--- /dev/null
+++ b/modules/string/tests/unit_tests/base.tst
@@ -0,0 +1,54 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// Operations on strings
+
+if 'a'=='b' then pause,end
+if 'a'=='' then pause,end
+if ''=='b' then pause,end
+if 'a'=='ab' then pause,end
+if 'a'<>'a' then pause,end
+if ''<>'' then pause,end
+
+if execstr("''a''>''b''" ,'errcatch') == 0 then pause,end
+if execstr("''a''>=''b''" ,'errcatch') == 0 then pause,end
+if execstr("''a''<=''b''" ,'errcatch') == 0 then pause,end
+if execstr("''a''<''b''" ,'errcatch') == 0 then pause,end
+
+if 'abc'+'def' <> 'abcdef' then pause,end
+if ['abc'] <> 'abc' then pause,end
+
+
+r=['abc','def'];
+
+if or(size(r) <> [1 2] ) then pause,end
+if r(1) <> 'abc' then pause,end
+if r(1,[%t, %f]) <> 'abc' then pause,end
+if or(r(:) <> r' ) then pause,end
+if r(1,[%t, %f]) <>'abc' then pause,end
+
+
+r=['abc','def'
+ '' ,'1234'
+ 'x' ,'' ];
+
+if or(size(r) <> [3 2] ) then pause,end
+if or(r(1,:) <> ['abc','def'] ) then pause,end
+if or(r([1,1],1) <> ['abc';'abc'] ) then pause,end
+if or(r(:,[1 2 1]) <> [r(:,1) r(:,2) r(:,1)] ) then pause,end
+if or(r(:,1) <> ['abc';'';'x'] ) then pause,end
+if or(r(:,:) <> r ) then pause,end
+if or(r(:) <> matrix(r,-1,1) ) then pause,end
+
+
+r(2,:)=[];
+if or(r<>['abc','def';'x','']) then pause,end
+
+r(:,1)=[];
+if or(r<>['def';'']) then pause,end
diff --git a/modules/string/tests/unit_tests/blanks.dia.ref b/modules/string/tests/unit_tests/blanks.dia.ref
new file mode 100755
index 000000000..73ed90395
--- /dev/null
+++ b/modules/string/tests/unit_tests/blanks.dia.ref
@@ -0,0 +1,38 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//==============================================================================
+// blank unit tests
+//==============================================================================
+disp(['xxx' blanks(20) 'yyy']);
+
+!xxx yyy !
+// Test 1
+//LEN_MAX = 20000000; too slow
+LEN_MAX = 2000;
+r = blanks(LEN_MAX);
+l = length(r);
+if ( l <> LEN_MAX) then bugmes();quit;end
+// Test 2
+// check first and last characters
+FIRST_CHAR = part(r,1);
+LAST_CHAR = part(r,LEN_MAX);
+if (FIRST_CHAR <> " ") then bugmes();quit;end
+if (LAST_CHAR <> " ") then bugmes();quit;end
+// Test 3
+A = floor(abs(2^8 * rand()));
+B = floor(abs(2^16 * rand()));
+C = floor(abs(2^16 * rand()));
+D = floor(abs(2^7 * rand()));
+E = floor(abs(2^15 * rand()));
+F = floor(abs(2^15 * rand()));
+if blanks(A) <> blanks(uint8(A)) then bugmes();quit;end
+if blanks(B) <> blanks(uint16(B)) then bugmes();quit;end
+if blanks(C) <> blanks(uint32(C)) then bugmes();quit;end
+if blanks(D) <> blanks(int8(D)) then bugmes();quit;end
+if blanks(E) <> blanks(int16(E)) then bugmes();quit;end
+if blanks(F) <> blanks(int32(F)) then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/blanks.tst b/modules/string/tests/unit_tests/blanks.tst
new file mode 100755
index 000000000..07bc38e21
--- /dev/null
+++ b/modules/string/tests/unit_tests/blanks.tst
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//==============================================================================
+// blank unit tests
+//==============================================================================
+
+disp(['xxx' blanks(20) 'yyy']);
+
+// Test 1
+//LEN_MAX = 20000000; too slow
+
+LEN_MAX = 2000;
+r = blanks(LEN_MAX);
+l = length(r);
+if ( l <> LEN_MAX) then pause,end
+
+// Test 2
+// check first and last characters
+
+FIRST_CHAR = part(r,1);
+LAST_CHAR = part(r,LEN_MAX);
+if (FIRST_CHAR <> " ") then pause,end
+if (LAST_CHAR <> " ") then pause,end
+
+// Test 3
+
+A = floor(abs(2^8 * rand()));
+B = floor(abs(2^16 * rand()));
+C = floor(abs(2^16 * rand()));
+
+D = floor(abs(2^7 * rand()));
+E = floor(abs(2^15 * rand()));
+F = floor(abs(2^15 * rand()));
+
+if blanks(A) <> blanks(uint8(A)) then pause, end
+if blanks(B) <> blanks(uint16(B)) then pause, end
+if blanks(C) <> blanks(uint32(C)) then pause, end
+
+if blanks(D) <> blanks(int8(D)) then pause, end
+if blanks(E) <> blanks(int16(E)) then pause, end
+if blanks(F) <> blanks(int32(F)) then pause, end
diff --git a/modules/string/tests/unit_tests/code2str.dia.ref b/modules/string/tests/unit_tests/code2str.dia.ref
new file mode 100755
index 000000000..ae18882bd
--- /dev/null
+++ b/modules/string/tests/unit_tests/code2str.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests code2str
+//===============================
+if _code2str(10:35)<>'abcdefghijklmnopqrstuvwxyz' then bugmes();quit;end
+if _code2str(-(10:35))<>'ABCDEFGHIJKLMNOPQRSTUVWXYZ' then bugmes();quit;end
+if _code2str(0:9)<>'0123456789' then bugmes();quit;end
+if _code2str([])<>emptystr() then bugmes();quit;end
+//===============================
+s = _code2str([-28 12 18 21 10 11]);
+if (s <>'Scilab') then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/code2str.tst b/modules/string/tests/unit_tests/code2str.tst
new file mode 100755
index 000000000..3f2fa62d3
--- /dev/null
+++ b/modules/string/tests/unit_tests/code2str.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests code2str
+//===============================
+if _code2str(10:35)<>'abcdefghijklmnopqrstuvwxyz' then pause,end
+if _code2str(-(10:35))<>'ABCDEFGHIJKLMNOPQRSTUVWXYZ' then pause,end
+if _code2str(0:9)<>'0123456789' then pause,end
+if _code2str([])<>emptystr() then pause,end
+//===============================
+s = _code2str([-28 12 18 21 10 11]);
+if (s <>'Scilab') then pause,end
+//===============================
diff --git a/modules/string/tests/unit_tests/convstr.dia.ref b/modules/string/tests/unit_tests/convstr.dia.ref
new file mode 100755
index 000000000..8ad41a99e
--- /dev/null
+++ b/modules/string/tests/unit_tests/convstr.dia.ref
@@ -0,0 +1,65 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests convstr
+//===============================
+if convstr('ABC')<>'abc' then bugmes();quit;end
+if convstr('ABC','l')<>'abc' then bugmes();quit;end
+if convstr('ABC','u')<>'ABC' then bugmes();quit;end
+if convstr(['ABC';'x'])<>['abc';'x'] then bugmes();quit;end
+if convstr(['ABC';'x'],'l')<>['abc';'x'] then bugmes();quit;end
+if convstr(['ABC';'x'],'u')<>['ABC';'X'] then bugmes();quit;end
+if convstr(['ABC';'x'],'L')<>['abc';'x'] then bugmes();quit;end
+if convstr(['ABC';'x'],'U')<>['ABC';'X'] then bugmes();quit;end
+if or(convstr(['';''],'u')<>['';'']) then bugmes();quit;end
+//===============================
+if convstr('ABC')<>'abc' then bugmes();quit;end
+if convstr('ABC','l')<>'abc' then bugmes();quit;end
+if convstr('ABC','u')<>'ABC' then bugmes();quit;end
+if convstr('ABC','L')<>'abc' then bugmes();quit;end
+if convstr('ABC','U')<>'ABC' then bugmes();quit;end
+if convstr(['ABC','x'])<>['abc','x'] then bugmes();quit;end
+if convstr(['ABC','x'],'l')<>['abc','x'] then bugmes();quit;end
+if convstr(['ABC','x'],'u')<>['ABC','X'] then bugmes();quit;end
+if convstr(emptystr())<>emptystr() then bugmes();quit;end
+//===============================
+if convstr('') <> '' then bugmes();quit;end
+if convstr('','u') <> '' then bugmes();quit;end
+if convstr('','U') <> '' then bugmes();quit;end
+if convstr('','l') <> '' then bugmes();quit;end
+if convstr('','L') <> '' then bugmes();quit;end
+//===============================
+if convstr([]) <> [] then bugmes();quit;end
+if convstr([],'u') <> [] then bugmes();quit;end
+if convstr([],'U') <> [] then bugmes();quit;end
+if convstr([],'l') <> [] then bugmes();quit;end
+if convstr([],'L') <> [] then bugmes();quit;end
+//===============================
+if ( convstr('SCILAB','l') <> convstr('scilab','l') ) then bugmes();quit;end
+if ( convstr('SCILAB','u') <> convstr('scilab','u') ) then bugmes();quit;end
+//===============================
+if convstr("0123456789",'u') <> "0123456789" then bugmes();quit;end
+if convstr("0123456789",'l') <> "0123456789" then bugmes();quit;end
+//===============================
+a=[''];
+if length(convstr(a,'u')) <> 0 then bugmes();quit;end
+if length(convstr(a,'l')) <> 0 then bugmes();quit;end
+//===============================
+a=['';''];
+if length(convstr(a,'u')) <> 0 then bugmes();quit;end
+if length(convstr(a,'l')) <> 0 then bugmes();quit;end
+//===============================
+STR = ['this','is';'my','matrix'];
+if convstr(STR,'u') <> ['THIS' 'IS';'MY' 'MATRIX'] then bugmes();quit;end
+if convstr(STR,'l') <> STR then bugmes();quit;end
+//===============================
+//===============================
+// interface tests
+//===============================
+if execstr("convstr(''abc'',''i''))","errcatch") <= 0 then bugmes();quit;end
+if execstr("convstr(''abc'',''i''))","errcatch") <= 0 then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/convstr.tst b/modules/string/tests/unit_tests/convstr.tst
new file mode 100755
index 000000000..f6d3e63fe
--- /dev/null
+++ b/modules/string/tests/unit_tests/convstr.tst
@@ -0,0 +1,70 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests convstr
+//===============================
+
+if convstr('ABC')<>'abc' then pause,end
+if convstr('ABC','l')<>'abc' then pause,end
+if convstr('ABC','u')<>'ABC' then pause,end
+if convstr(['ABC';'x'])<>['abc';'x'] then pause,end
+if convstr(['ABC';'x'],'l')<>['abc';'x'] then pause,end
+if convstr(['ABC';'x'],'u')<>['ABC';'X'] then pause,end
+if convstr(['ABC';'x'],'L')<>['abc';'x'] then pause,end
+if convstr(['ABC';'x'],'U')<>['ABC';'X'] then pause,end
+if or(convstr(['';''],'u')<>['';'']) then pause,end
+//===============================
+if convstr('ABC')<>'abc' then pause,end
+if convstr('ABC','l')<>'abc' then pause,end
+if convstr('ABC','u')<>'ABC' then pause,end
+if convstr('ABC','L')<>'abc' then pause,end
+if convstr('ABC','U')<>'ABC' then pause,end
+if convstr(['ABC','x'])<>['abc','x'] then pause,end
+if convstr(['ABC','x'],'l')<>['abc','x'] then pause,end
+if convstr(['ABC','x'],'u')<>['ABC','X'] then pause,end
+if convstr(emptystr())<>emptystr() then pause,end
+//===============================
+if convstr('') <> '' then pause,end
+if convstr('','u') <> '' then pause,end
+if convstr('','U') <> '' then pause,end
+if convstr('','l') <> '' then pause,end
+if convstr('','L') <> '' then pause,end
+//===============================
+if convstr([]) <> [] then pause,end
+if convstr([],'u') <> [] then pause,end
+if convstr([],'U') <> [] then pause,end
+if convstr([],'l') <> [] then pause,end
+if convstr([],'L') <> [] then pause,end
+//===============================
+if ( convstr('SCILAB','l') <> convstr('scilab','l') ) then pause,end
+if ( convstr('SCILAB','u') <> convstr('scilab','u') ) then pause,end
+//===============================
+if convstr("0123456789",'u') <> "0123456789" then pause,end
+if convstr("0123456789",'l') <> "0123456789" then pause,end
+//===============================
+a=[''];
+if length(convstr(a,'u')) <> 0 then pause,end
+if length(convstr(a,'l')) <> 0 then pause,end
+//===============================
+a=['';''];
+if length(convstr(a,'u')) <> 0 then pause,end
+if length(convstr(a,'l')) <> 0 then pause,end
+//===============================
+STR = ['this','is';'my','matrix'];
+if convstr(STR,'u') <> ['THIS' 'IS';'MY' 'MATRIX'] then pause,end
+if convstr(STR,'l') <> STR then pause,end
+//===============================
+
+//===============================
+// interface tests
+//===============================
+
+if execstr("convstr(''abc'',''i''))","errcatch") <= 0 then pause,end
+if execstr("convstr(''abc'',''i''))","errcatch") <= 0 then pause,end
diff --git a/modules/string/tests/unit_tests/emptystr.dia.ref b/modules/string/tests/unit_tests/emptystr.dia.ref
new file mode 100755
index 000000000..ab81ff770
--- /dev/null
+++ b/modules/string/tests/unit_tests/emptystr.dia.ref
@@ -0,0 +1,57 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests emptystr
+//===============================
+s = emptystr();
+if (s <> '') then bugmes();quit;end;
+//===============================
+s = emptystr([]);
+if (s <> []) then bugmes();quit;end;
+//===============================
+s = emptystr("Scilab");
+d = size(s);
+if (d <> [1 1]) then bugmes();quit;end;
+if (s <> '') then bugmes();quit;end;
+//===============================
+MS = ["Scilab";"String"];
+s = emptystr(MS);
+d = size(s);
+if (d <> size(MS)) then bugmes();quit;end;
+if or(s <> '') then bugmes();quit;end;
+//===============================
+M = 5;
+N = 3;
+s = emptystr(M,N);
+d = size(s);
+if (d <> [M N]) then bugmes();quit;end;
+if or(s <> '') then bugmes();quit;end;
+//===============================
+M = 200;
+N = 300;
+s = emptystr(M,N);
+d = size(s);
+if (d <> [M N]) then bugmes();quit;end;
+if or(s <> '') then bugmes();quit;end;
+//===============================
+s = emptystr(0,0);
+if (s <> []) then bugmes();quit;end;
+//===============================
+s = emptystr(0);
+d = size(s);
+if (d <> [1 1]) then bugmes();quit;end;
+if (s <> '') then bugmes();quit;end;
+//===============================
+M = 200;
+s = emptystr(M);
+d = size(s);
+if (d <> [1 1]) then bugmes();quit;end;
+if (s <> '') then bugmes();quit;end;
+//===============================
+if ( size(emptystr(0,1)) <> [ 0 0 ] ) then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/emptystr.tst b/modules/string/tests/unit_tests/emptystr.tst
new file mode 100755
index 000000000..11f274516
--- /dev/null
+++ b/modules/string/tests/unit_tests/emptystr.tst
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests emptystr
+//===============================
+s = emptystr();
+if (s <> '') then pause,end;
+//===============================
+s = emptystr([]);
+if (s <> []) then pause,end;
+//===============================
+s = emptystr("Scilab");
+d = size(s);
+if (d <> [1 1]) then pause,end;
+if (s <> '') then pause,end;
+//===============================
+MS = ["Scilab";"String"];
+s = emptystr(MS);
+d = size(s);
+if (d <> size(MS)) then pause,end;
+if or(s <> '') then pause,end;
+//===============================
+M = 5;
+N = 3;
+s = emptystr(M,N);
+d = size(s);
+if (d <> [M N]) then pause,end;
+if or(s <> '') then pause,end;
+//===============================
+M = 200;
+N = 300;
+s = emptystr(M,N);
+d = size(s);
+if (d <> [M N]) then pause,end;
+if or(s <> '') then pause,end;
+//===============================
+s = emptystr(0,0);
+if (s <> []) then pause,end;
+//===============================
+s = emptystr(0);
+d = size(s);
+if (d <> [1 1]) then pause,end;
+if (s <> '') then pause,end;
+//===============================
+M = 200;
+s = emptystr(M);
+d = size(s);
+if (d <> [1 1]) then pause,end;
+if (s <> '') then pause,end;
+//===============================
+if ( size(emptystr(0,1)) <> [ 0 0 ] ) then pause,end
+//===============================
diff --git a/modules/string/tests/unit_tests/evstr.dia.ref b/modules/string/tests/unit_tests/evstr.dia.ref
new file mode 100755
index 000000000..7b742be6e
--- /dev/null
+++ b/modules/string/tests/unit_tests/evstr.dia.ref
@@ -0,0 +1,46 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// =============================================================================
+// unit tests evstr
+// =============================================================================
+a = 1;
+b = 2;
+Z = ['a','b'];
+res = evstr(Z);
+if res(1) <> a then bugmes();quit;end
+if res(2) <> b then bugmes();quit;end
+// =============================================================================
+a = 1;
+b = 2;
+Z = list(['%(1)','%(1)-%(2)'], ['a+1','b+1']);
+res = evstr(Z);
+if or(res <> [2 -1]) then bugmes();quit;end
+// =============================================================================
+if isnan(evstr(%nan)) <> %t then bugmes();quit;end
+if isinf(evstr(%inf)) <> %t then bugmes();quit;end
+if isnan(evstr('%nan')) <> %t then bugmes();quit;end
+if isinf(evstr('%inf')) <> %t then bugmes();quit;end
+if isnan(evstr('Nan')) <> %t then bugmes();quit;end
+if isinf(evstr('Inf')) <> %t then bugmes();quit;end
+if isnan(evstr('NaN')) <> %t then bugmes();quit;end
+if isinf(evstr(-%inf)) <> %t then bugmes();quit;end
+if isinf(evstr('-%inf')) <> %t then bugmes();quit;end
+if isinf(evstr('-Inf')) <> %t then bugmes();quit;end
+// =============================================================================
+Scilab_value = 3;
+if Scilab_value <> evstr('Scilab_value') then bugmes();quit;end
+// =============================================================================
+clear toto;
+if execstr("evstr(''toto'')", "errcatch") <> 4 then bugmes();quit;end
+if execstr("evstr(toto)", "errcatch") <> 4 then bugmes();quit;end
+// =============================================================================
+s = rand(3,3,3);
+if execstr("evstr(s)", "errcatch") <> 10000 then bugmes();quit;end
+// =============================================================================
diff --git a/modules/string/tests/unit_tests/evstr.tst b/modules/string/tests/unit_tests/evstr.tst
new file mode 100755
index 000000000..916eadbc8
--- /dev/null
+++ b/modules/string/tests/unit_tests/evstr.tst
@@ -0,0 +1,46 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// =============================================================================
+// unit tests evstr
+// =============================================================================
+a = 1;
+b = 2;
+Z = ['a','b'];
+res = evstr(Z);
+if res(1) <> a then pause, end
+if res(2) <> b then pause, end
+// =============================================================================
+a = 1;
+b = 2;
+Z = list(['%(1)','%(1)-%(2)'], ['a+1','b+1']);
+res = evstr(Z);
+if or(res <> [2 -1]) then pause, end
+// =============================================================================
+if isnan(evstr(%nan)) <> %t then pause, end
+if isinf(evstr(%inf)) <> %t then pause, end
+if isnan(evstr('%nan')) <> %t then pause, end
+if isinf(evstr('%inf')) <> %t then pause, end
+if isnan(evstr('Nan')) <> %t then pause, end
+if isinf(evstr('Inf')) <> %t then pause, end
+if isnan(evstr('NaN')) <> %t then pause, end
+if isinf(evstr(-%inf)) <> %t then pause, end
+if isinf(evstr('-%inf')) <> %t then pause, end
+if isinf(evstr('-Inf')) <> %t then pause, end
+// =============================================================================
+Scilab_value = 3;
+if Scilab_value <> evstr('Scilab_value') then pause, end
+// =============================================================================
+clear toto;
+if execstr("evstr(''toto'')", "errcatch") <> 4 then pause, end
+if execstr("evstr(toto)", "errcatch") <> 4 then pause, end
+// =============================================================================
+s = rand(3,3,3);
+if execstr("evstr(s)", "errcatch") <> 10000 then pause, end
+// =============================================================================
diff --git a/modules/string/tests/unit_tests/grep.dia.ref b/modules/string/tests/unit_tests/grep.dia.ref
new file mode 100755
index 000000000..94a621297
--- /dev/null
+++ b/modules/string/tests/unit_tests/grep.dia.ref
@@ -0,0 +1,670 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+lf = ascii(10);
+//===============================
+// unit tests grep
+//===============================
+txt=['find matches of a string in a vector of strings'
+ 'search position of a character string in an other string'
+ 'Compare Strings'];
+//===============================
+if grep(txt,'vide')<>[] then bugmes();quit;end
+if grep([],'vide')<>[] then bugmes();quit;end
+if grep('','vide')<>[] then bugmes();quit;end
+e='';if execstr('grep(txt,e)','errcatch')==0 then bugmes();quit;end
+//===============================
+if grep(txt,'strings')<>1 then bugmes();quit;end
+if or(grep(txt,['strings' 'Strings'])<>[1 3]) then bugmes();quit;end
+//===============================
+[r,w]=grep(txt,['strings' 'Strings']);
+if or(w<>[1 2])|or(r<>[1 3]) then bugmes();quit;end
+//===============================
+e=['strings' '']; if execstr('[r,w]=grep(txt,e)','errcatch')==0 then bugmes();quit;end;
+//===============================
+if grep([],' ') <> [] then bugmes();quit;end
+//===============================
+if grep('AB',['A','B']) <> 1 then bugmes();quit;end
+//===============================
+if grep('AB',['A';'B']) <> 1 then bugmes();quit;end
+//===============================
+if grep(['AB','B'],['A';'B']) <> 1 then bugmes();quit;end
+//===============================
+if grep(['AB','B'],['A';'B';'C']) <> 1 then bugmes();quit;end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+//===============================
+if grep(txt,'scilab') <> [] then bugmes();quit;end
+//===============================
+ref = [ 1., 3., 5., 32., 48., 83., 110., 114., 162., 175., 177., 272., 365., 390., 402., 404., 408.];
+if grep(txt,'Scilab') <> ref then bugmes();quit;end
+//===============================
+if grep('abc' ,'/abc/' ,'r') <> 1 then bugmes();quit;end
+if grep('xbc' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if grep('axc' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if grep('abx' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if grep('xabcy' ,'/abc/' ,'r') <> 1 then bugmes();quit;end
+if grep('ababc' ,'/abc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab*c/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/.{1}/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/.{3,4}/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab{0,}bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbc' ,'/ab+bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab+bc/' ,'r') <> [] then bugmes();quit;end
+if grep('abq' ,'/ab+bc/' ,'r') <> [] then bugmes();quit;end
+if grep('abq' ,'/ab{1,}bc/' ,'r') <> [] then bugmes();quit;end
+if grep('abbbbc' ,'/ab+bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab{1,}bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab{1,3}bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab{3,4}bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab{4,5}bc/' ,'r') <> [] then bugmes();quit;end
+if grep('abbc' ,'/ab?bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab?bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab{0,1}bc/' ,'r') <> 1 then bugmes();quit;end
+if grep('abbbbc' ,'/ab?bc/' ,'r') <> [] then bugmes();quit;end
+if grep('abc' ,'/ab?c/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab{0,1}c/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/^abc$/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcc' ,'/^abc$/' ,'r') <> [] then bugmes();quit;end
+if grep('abcc' ,'/^abc/' ,'r') <> 1 then bugmes();quit;end
+if grep('aabc' ,'/^abc$/' ,'r') <> [] then bugmes();quit;end
+if grep('aabc' ,'/abc$/' ,'r') <> 1 then bugmes();quit;end
+if grep('aabcd' ,'/abc$/' ,'r') <> [] then bugmes();quit;end
+if grep('abc' ,'/^/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/$/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/a.c/' ,'r') <> 1 then bugmes();quit;end
+if grep('axc' ,'/a.c/' ,'r') <> 1 then bugmes();quit;end
+if grep('axyzc' ,'/a.*c/' ,'r') <> 1 then bugmes();quit;end
+if grep('axyzd' ,'/a.*c/' ,'r') <> [] then bugmes();quit;end
+if grep('abc' ,'/a[bc]d/' ,'r') <> [] then bugmes();quit;end
+if grep('abd' ,'/a[bc]d/' ,'r') <> 1 then bugmes();quit;end
+if grep('abd' ,'/a[b-d]e/' ,'r') <> [] then bugmes();quit;end
+if grep('ace' ,'/a[b-d]e/' ,'r') <> 1 then bugmes();quit;end
+if grep('aac' ,'/a[b-d]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-' ,'/a[-b]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-' ,'/a[b-]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a]' ,'/a]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a]b' ,'/a[]]b/' ,'r') <> 1 then bugmes();quit;end
+if grep('aed' ,'/a[^bc]d/' ,'r') <> 1 then bugmes();quit;end
+if grep('abd' ,'/a[^bc]d/' ,'r') <> [] then bugmes();quit;end
+if grep('adc' ,'/a[^-b]c/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-c' ,'/a[^-b]c/' ,'r') <> [] then bugmes();quit;end
+if grep('a]c' ,'/a[^]b]c/' ,'r') <> [] then bugmes();quit;end
+if grep('adc' ,'/a[^]b]c/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-' ,'/\ba\b/' ,'r') <> 1 then bugmes();quit;end
+if grep('-a' ,'/\ba\b/' ,'r') <> 1 then bugmes();quit;end
+if grep('-a-' ,'/\ba\b/' ,'r') <> 1 then bugmes();quit;end
+if grep('xy' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if grep('yz' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if grep('xyz' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if grep('a-' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if grep('-a' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if grep('-a-' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if grep('xy' ,'/\By\b/' ,'r') <> 1 then bugmes();quit;end
+if grep('xy' ,'/\By\b/' ,'r') <> 1 then bugmes();quit;end
+if grep('yz' ,'/\by\B/' ,'r') <> 1 then bugmes();quit;end
+if grep('xyz' ,'/\By\B/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/\w/' ,'r') <> 1 then bugmes();quit;end
+if grep('-' ,'/\w/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/\W/' ,'r') <> [] then bugmes();quit;end
+if grep('-' ,'/\W/' ,'r') <> 1 then bugmes();quit;end
+if grep('a b' ,'/a\sb/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-b' ,'/a\sb/' ,'r') <> [] then bugmes();quit;end
+if grep('a b' ,'/a\Sb/' ,'r') <> [] then bugmes();quit;end
+if grep('a-b' ,'/a\Sb/' ,'r') <> 1 then bugmes();quit;end
+if grep('1' ,'/\d/' ,'r') <> 1 then bugmes();quit;end
+if grep('-' ,'/\d/' ,'r') <> [] then bugmes();quit;end
+if grep('1' ,'/\D/' ,'r') <> [] then bugmes();quit;end
+if grep('-' ,'/\D/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/[\w]/' ,'r') <> 1 then bugmes();quit;end
+if grep('-' ,'/[\w]/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/[\W]/' ,'r') <> [] then bugmes();quit;end
+if grep('-' ,'/[\W]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a b' ,'/a[\s]b/' ,'r') <> 1 then bugmes();quit;end
+if grep('a-b' ,'/a[\s]b/' ,'r') <> [] then bugmes();quit;end
+if grep('a b' ,'/a[\S]b/' ,'r') <> [] then bugmes();quit;end
+if grep('a-b' ,'/a[\S]b/' ,'r') <> 1 then bugmes();quit;end
+if grep('1' ,'/[\d]/' ,'r') <> 1 then bugmes();quit;end
+if grep('-' ,'/[\d]/' ,'r') <> [] then bugmes();quit;end
+if grep('1' ,'/[\D]/' ,'r') <> [] then bugmes();quit;end
+if grep('-' ,'/[\D]/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/ab|cd/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcd' ,'/ab|cd/' ,'r') <> 1 then bugmes();quit;end
+if grep('b' ,'/$b/' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/a\(*b/' ,'r') <> 1 then bugmes();quit;end
+if grep('a((b' ,'/a\(*b/' ,'r') <> 1 then bugmes();quit;end
+if grep('aabbabc' ,'/a+b+c/' ,'r') <> 1 then bugmes();quit;end
+if grep('aabbabc' ,'/a{1,}b{1,}c/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcabc' ,'/a.+?c/' ,'r') <> 1 then bugmes();quit;end
+if grep('cde' ,'/[^ab]*/' ,'r') <> 1 then bugmes();quit;end
+if grep('' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if grep('' ,'/a*/' ,'r') <> [] then bugmes();quit;end
+if grep('e' ,'/a|b|c|d|e/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcdefg' ,'/abcd*efg/' ,'r') <> 1 then bugmes();quit;end
+if grep('xabyabbbz' ,'/ab*/' ,'r') <> 1 then bugmes();quit;end
+if grep('xayabbbz' ,'/ab*/' ,'r') <> 1 then bugmes();quit;end
+if grep('hij' ,'/[abhgefdc]ij/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcde' ,'/^(ab|cd)e/' ,'r') <> [] then bugmes();quit;end
+if grep('adcdcde' ,'/a[bcd]*dcdcde/' ,'r') <> 1 then bugmes();quit;end
+if grep('adcdcde' ,'/a[bcd]+dcdcde/' ,'r') <> [] then bugmes();quit;end
+if grep('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ,'r') <> 1 then bugmes();quit;end
+if grep('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then bugmes();quit;end
+if grep('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then bugmes();quit;end
+if grep('aa' ,'/((((((((((a))))))))))\10/' ,'r') <> 1 then bugmes();quit;end
+if grep('aa' ,'/((((((((((a))))))))))\041/' ,'r') <> [] then bugmes();quit;end
+if grep('a!' ,'/((((((((((a))))))))))\041/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/(((((((((a)))))))))/' ,'r') <> 1 then bugmes();quit;end
+if grep('uh-uh' ,'/multiple words of text/' ,'r') <> [] then bugmes();quit;end
+if grep('multiple words, yeah' ,'/multiple words/' ,'r') <> 1 then bugmes();quit;end
+if grep('ab' ,'/[k]/' ,'r') <> [] then bugmes();quit;end
+if grep('ac' ,'/a[-]?c/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/(a)|\1/' ,'r') <> 1 then bugmes();quit;end
+if grep('x' ,'/(a)|\1/' ,'r') <> [] then bugmes();quit;end
+if grep('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ,'r') <> [] then bugmes();quit;end
+if grep('ABC' ,'/abc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('XBC' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if grep('AXC' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABX' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if grep('XABCY' ,'/abc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABABC' ,'/abc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab*c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab*bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBC' ,'/ab*bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab*?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab{0,}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBC' ,'/ab+?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab+bc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABQ' ,'/ab+bc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABQ' ,'/ab{1,}bc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABBBBC' ,'/ab+bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab{1,}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab{1,3}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab{3,4}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab{4,5}?bc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABBC' ,'/ab??bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab??bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab{0,1}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABBBBC' ,'/ab??bc/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABC' ,'/ab??c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab{0,1}?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/^abc$/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCC' ,'/^abc$/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABCC' ,'/^abc/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AABC' ,'/^abc$/i' ,'r') <> [] then bugmes();quit;end
+if grep('AABC' ,'/abc$/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/^/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/$/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/a.c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AXC' ,'/a.c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AXYZC' ,'/a.*?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AXYZD' ,'/a.*c/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABC' ,'/a[bc]d/i' ,'r') <> [] then bugmes();quit;end
+if grep('ABD' ,'/a[bc]d/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABD' ,'/a[b-d]e/i' ,'r') <> [] then bugmes();quit;end
+if grep('ACE' ,'/a[b-d]e/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AAC' ,'/a[b-d]/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A-' ,'/a[-b]/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A-' ,'/a[b-]/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A]' ,'/a]/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A]B' ,'/a[]]b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AED' ,'/a[^bc]d/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABD' ,'/a[^bc]d/i' ,'r') <> [] then bugmes();quit;end
+if grep('ADC' ,'/a[^-b]c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A-C' ,'/a[^-b]c/i' ,'r') <> [] then bugmes();quit;end
+if grep('A]C' ,'/a[^]b]c/i' ,'r') <> [] then bugmes();quit;end
+if grep('ADC' ,'/a[^]b]c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABC' ,'/ab|cd/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCD' ,'/ab|cd/i' ,'r') <> 1 then bugmes();quit;end
+if grep('B' ,'/$b/i' ,'r') <> [] then bugmes();quit;end
+if grep('AB' ,'/a\(*b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A((B' ,'/a\(*b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AABBABC' ,'/a+b+c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AABBABC' ,'/a{1,}b{1,}c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCABC' ,'/a.+?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCABC' ,'/a.*?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCABC' ,'/a.{0,5}?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('CDE' ,'/[^ab]*/i' ,'r') <> 1 then bugmes();quit;end
+if grep('' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if grep('' ,'/a*/i' ,'r') <> [] then bugmes();quit;end
+if grep('E' ,'/a|b|c|d|e/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCDEFG' ,'/abcd*efg/i' ,'r') <> 1 then bugmes();quit;end
+if grep('XABYABBBZ' ,'/ab*/i' ,'r') <> 1 then bugmes();quit;end
+if grep('XAYABBBZ' ,'/ab*/i' ,'r') <> 1 then bugmes();quit;end
+if grep('HIJ' ,'/[abhgefdc]ij/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ABCDE' ,'/^(ab|cd)e/i' ,'r') <> [] then bugmes();quit;end
+if grep('ADCDCDE' ,'/a[bcd]*dcdcde/i' ,'r') <> 1 then bugmes();quit;end
+if grep('ADCDCDE' ,'/a[bcd]+dcdcde/i' ,'r') <> [] then bugmes();quit;end
+if grep('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ,'r') <> 1 then bugmes();quit;end
+if grep('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then bugmes();quit;end
+if grep('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then bugmes();quit;end
+if grep('AA' ,'/((((((((((a))))))))))\10/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AA' ,'/((((((((((a))))))))))\041/i' ,'r') <> [] then bugmes();quit;end
+if grep('A!' ,'/((((((((((a))))))))))\041/i' ,'r') <> 1 then bugmes();quit;end
+if grep('A' ,'/(((((((((a)))))))))/i' ,'r') <> 1 then bugmes();quit;end
+if grep('UH-UH' ,'/multiple words of text/i' ,'r') <> [] then bugmes();quit;end
+if grep('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AB' ,'/[k]/i' ,'r') <> [] then bugmes();quit;end
+if grep('AC' ,'/a[-]?c/i' ,'r') <> 1 then bugmes();quit;end
+if grep('abad' ,'/a(?!b)./' ,'r') <> 1 then bugmes();quit;end
+if grep('abad' ,'/a(?=d)./' ,'r') <> 1 then bugmes();quit;end
+if grep('abad' ,'/a(?=c|d)./' ,'r') <> 1 then bugmes();quit;end
+if grep('<&OUT' ,'/^[<>]&/' ,'r') <> 1 then bugmes();quit;end
+if grep('aaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then bugmes();quit;end
+if grep('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then bugmes();quit;end
+if grep('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then bugmes();quit;end
+if grep('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/(?<=a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('cb' ,'/(?<=a)b/' ,'r') <> [] then bugmes();quit;end
+if grep('b' ,'/(?<=a)b/' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/(?<!c)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('cb' ,'/(?<!c)b/' ,'r') <> [] then bugmes();quit;end
+if grep('b' ,'/(?<!c)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('b' ,'/(?<!c)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('aba' ,'/(?:..)*a/' ,'r') <> 1 then bugmes();quit;end
+if grep('aba' ,'/(?:..)*?a/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/^(?:b|a(?=(.)))*\1/' ,'r') <> 1 then bugmes();quit;end
+if grep('ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('Ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('aB' ,'/(?:(?i)a)b/' ,'r') <> [] then bugmes();quit;end
+if grep('aB' ,'/((?i)a)b/' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/(?i:a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('Ab' ,'/(?i:a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('aB' ,'/(?i:a)b/' ,'r') <> [] then bugmes();quit;end
+if grep('aB' ,'/((?i:a))b/' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('Ab' ,'/(?:(?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('Ab' ,'/((?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AB' ,'/(?:(?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('AB' ,'/((?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('ab' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('Ab' ,'/(?-i:a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('Ab' ,'/((?-i:a))b/i' ,'r') <> [] then bugmes();quit;end
+if grep('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if grep('AB' ,'/(?-i:a)b/i' ,'r') <> [] then bugmes();quit;end
+if grep('AB' ,'/((?-i:a))b/i' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'B' ,'/((?-i:a.))b/i' ,'r') <> [] then bugmes();quit;end
+if grep('B'+lf+'B' ,'/((?s-i:a.))b/i' ,'r') <> [] then bugmes();quit;end
+if grep('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/','r') <> 1 then bugmes();quit;end
+if grep('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/','r') <> 1 then bugmes();quit;end
+if grep('foobar1234baz' ,'/foo\w*\d{4}baz/' ,'r') <> 1 then bugmes();quit;end
+if grep('x~~' ,'/x(~~)*(?:(?:F)?)?/' ,'r') <> 1 then bugmes();quit;end
+if grep('aaac' ,'/^a(?#xxx){3}c/' ,'r') <> 1 then bugmes();quit;end
+if grep('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ,'r') <> 1 then bugmes();quit;end
+if grep('dbcb' ,'/(?<![cd])b/' ,'r') <> [] then bugmes();quit;end
+if grep('dbaacb' ,'/(?<![cd])[ab]/' ,'r') <> 1 then bugmes();quit;end
+if grep('dbcb' ,'/(?<!(c|d))b/' ,'r') <> [] then bugmes();quit;end
+if grep('dbaacb' ,'/(?<!(c|d))[ab]/' ,'r') <> 1 then bugmes();quit;end
+if grep('cdaccb' ,'/(?<!cd)[ab]/' ,'r') <> 1 then bugmes();quit;end
+if grep('a--' ,'/^(?:a?b?)*$/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/(?m)^b/' ,'r') <> 1 then bugmes();quit;end
+if grep('a'+lf+'b'+lf+'c'+lf ,'/^b/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/(x)?(?(1)a|b)/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/(x)?(?(1)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/()?(?(1)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/()(?(1)b|a)/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/()?(?(1)a|b)/' ,'r') <> 1 then bugmes();quit;end
+if grep('blah)' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if grep('(blah' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if grep('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if grep('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/(?(?!a)a|b)/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/(?(?!a)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/(?(?=a)b|a)/' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/(?(?=a)a|b)/' ,'r') <> 1 then bugmes();quit;end
+if grep('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then bugmes();quit;end
+if grep('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then bugmes();quit;end
+if grep('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then bugmes();quit;end
+if grep('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then bugmes();quit;end
+if grep('aaab' ,'/(>a+)ab/' ,'r') <> [] then bugmes();quit;end
+if grep('aaab' ,'/(?>a+)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then bugmes();quit;end
+if grep('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then bugmes();quit;end
+if grep('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ,'r') <> 1 then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/a\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/a\z/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/a$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'a'+lf ,'/a\z/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/a\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/a\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'a'+lf ,'/a\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('aa'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('aa'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('aa'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'aa'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('aa'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('aa'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'aa'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if grep('ab'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ab'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ab'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ab'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ab'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ab'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ab'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if grep('abb'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('abb'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('abb'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'abb'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('abb'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('abb'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'abb'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ac'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ac' ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('ca'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if grep('b'+lf+'ca' ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if grep('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/','r') <> [] then bugmes();quit;end
+if grep('foo.bart' ,'/foo.bart/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ,'r') <> 1 then bugmes();quit;end
+if grep('xxxtt' ,'/tt+$/' ,'r') <> 1 then bugmes();quit;end
+if grep('aaaXbX' ,'/\GX.*X/' ,'r') <> [] then bugmes();quit;end
+if grep('Changes' ,'/\.c(pp|xx|c)?$/i' ,'r') <> [] then bugmes();quit;end
+if grep('IO.c' ,'/\.c(pp|xx|c)?$/i' ,'r') <> 1 then bugmes();quit;end
+if grep('C:/' ,'/^([a-z]:)/' ,'r') <> [] then bugmes();quit;end
+if grep(lf+'x aa' ,'/^\S\s+aa$/m' ,'r') <> 1 then bugmes();quit;end
+if grep('ab' ,'/(^|a)b/' ,'r') <> 1 then bugmes();quit;end
+if grep('abcab' ,'/(\w)?(abc)\1b/' ,'r') <> [] then bugmes();quit;end
+if grep('a,b,c' ,'/^(?:.,){2}c/' ,'r') <> 1 then bugmes();quit;end
+if grep('a,b,c' ,'/^(?:[^,]*,){2}c/' ,'r') <> 1 then bugmes();quit;end
+if grep('' ,'/(?i)/' ,'r') <> [] then bugmes();quit;end
+if grep('a'+lf+'xb'+lf ,'/(?!\A)x/m' ,'r') <> 1 then bugmes();quit;end
+if grep('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ,'r') <> 1 then bugmes();quit;end
+if grep('a' ,'/^(a)?(?(1)a|b)+$/' ,'r') <> [] then bugmes();quit;end
+if grep('x1' ,'/^(0+)?(?:x(1))?/' ,'r') <> 1 then bugmes();quit;end
+if grep('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/','r') <> 1 then bugmes();quit;end
+if grep('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then bugmes();quit;end
+if grep('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then bugmes();quit;end
+if grep('a'+lf+'b'+lf ,'/b\s^/m' ,'r') <> [] then bugmes();quit;end
+if grep('a' ,'/\ba/' ,'r') <> 1 then bugmes();quit;end
+if grep('AbCd' ,'/ab(?i)cd/' ,'r') <> [] then bugmes();quit;end
+if grep('abCd' ,'/ab(?i)cd/' ,'r') <> 1 then bugmes();quit;end
+if grep('Oo' ,'/^(o)(?!.*\1)/i' ,'r') <> [] then bugmes();quit;end
+if grep('2' ,'/2(]*)?$\1/' ,'r') <> 1 then bugmes();quit;end
+if grep('......abef' ,'/.*a(?!(b|cd)*e).*f/' ,'r') <> [] then bugmes();quit;end
+if grep('fools' ,'/(foo|fool|x.|money|parted)$/' ,'r') <> [] then bugmes();quit;end
+if grep('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ,'r') <> [] then bugmes();quit;end
+if grep('fools' ,'/(foo|fool|money|parted)$/' ,'r') <> [] then bugmes();quit;end
+//========================================================================================
+// depend of PCRE library options
+//if grep('a\b' ,'/a\\b/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+X/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+XX/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+X/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+X/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+XX/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+X/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X][X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+[X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X][X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+[X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X][X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X][X](.+)+[X]/' ,'r') <> 1 then bugmes();quit;end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X][X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X][X](.+)+[X]/' ,'r') <> [] then bugmes();quit;end
+//if grep('cabd' ,'/a(?{})b/' ,'r') <> 1 then bugmes();quit;end
+//if grep('a' ,'/(?(?{0})b|a)/' ,'r') <> 1 then bugmes();quit;end
+//if grep('a' ,'/(?(?{1})a|b)/' ,'r') <> 1 then bugmes();quit;end
+//if grep('x' ,'/(??{})/' ,'r') <> 1 then bugmes();quit;end
+//if grep('cabd' ,'/a(?{"\{"})b/' ,'r') <> 1 then bugmes();quit;end
+//if grep('A\B' ,'/a\\b/i' ,'r') <> 1 then bugmes();quit;end
+//if grep('aaaaaaaaaaaaaaab' ,'/(a|aa|aaa|aaaa|aaaaa|aaaaaa)(??{$1&&"foo"})(b|c)/','r') <> [] then bugmes();quit;end
+//========================================================================================
+str = "世界您好";
+needle = "界";
+[r,w] = grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+str = "азеазея";
+needle = "з";
+[r,w] = grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+str = "ハロー・ワールド";
+needle = "ワ";
+[r,w] = grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+str = "เฮลโลเวิลด์";
+needle = "วิ";
+[r,w] = grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+str = "حريات وحقوق";
+needle = "و";
+[r,w] = grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+str = "תוכנית";
+needle = "ו";
+grep(str,needle);
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+//========================================================================================
+// Chinese
+str = '世界您好';
+[r,w] = grep(str,'/^世界/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/世界$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/您好$/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/^您好/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/界您/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'界您');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/界_您/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Russian
+str = 'привет мир';
+[r,w] = grep(str,'/^привет/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/привет$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/мир$/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/^мир/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/вет\sм/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/вет_м/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+[r,w] = grep(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+[r,w] = grep(str,'/^丑丞串乃之乎也云亘亙些亦/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/丑丞串乃之乎也云亘亙些亦$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/凰凱函刹劉劫勁勃$/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/^凰凱函刹劉劫勁勃/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/亨亮仔伊伎伍伽佃佑伶侃/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[r,w] = grep(str,'/^มกระดุกกร/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/มกระดุกกร$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/กกระดิก$/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/^กกระดิก/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = grep(str,'/ดุกก/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = grep(str,'/ดุก_ก/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/grep.tst b/modules/string/tests/unit_tests/grep.tst
new file mode 100755
index 000000000..bc157b7f5
--- /dev/null
+++ b/modules/string/tests/unit_tests/grep.tst
@@ -0,0 +1,707 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+lf = ascii(10);
+
+//===============================
+// unit tests grep
+//===============================
+txt=['find matches of a string in a vector of strings'
+ 'search position of a character string in an other string'
+ 'Compare Strings'];
+//===============================
+if grep(txt,'vide')<>[] then pause,end
+if grep([],'vide')<>[] then pause,end
+if grep('','vide')<>[] then pause,end
+e='';if execstr('grep(txt,e)','errcatch')==0 then pause,end
+//===============================
+if grep(txt,'strings')<>1 then pause,end
+if or(grep(txt,['strings' 'Strings'])<>[1 3]) then pause,end
+//===============================
+[r,w]=grep(txt,['strings' 'Strings']);
+if or(w<>[1 2])|or(r<>[1 3]) then pause,end
+//===============================
+e=['strings' '']; if execstr('[r,w]=grep(txt,e)','errcatch')==0 then pause,end;
+//===============================
+if grep([],' ') <> [] then pause,end
+//===============================
+if grep('AB',['A','B']) <> 1 then pause,end
+//===============================
+if grep('AB',['A';'B']) <> 1 then pause,end
+//===============================
+if grep(['AB','B'],['A';'B']) <> 1 then pause,end
+//===============================
+if grep(['AB','B'],['A';'B';'C']) <> 1 then pause,end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+//===============================
+if grep(txt,'scilab') <> [] then pause,end
+//===============================
+ref = [ 1., 3., 5., 32., 48., 83., 110., 114., 162., 175., 177., 272., 365., 390., 402., 404., 408.];
+if grep(txt,'Scilab') <> ref then pause,end
+//===============================
+if grep('abc' ,'/abc/' ,'r') <> 1 then pause,end
+if grep('xbc' ,'/abc/' ,'r') <> [] then pause,end
+if grep('axc' ,'/abc/' ,'r') <> [] then pause,end
+if grep('abx' ,'/abc/' ,'r') <> [] then pause,end
+if grep('xabcy' ,'/abc/' ,'r') <> 1 then pause,end
+if grep('ababc' ,'/abc/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab*c/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if grep('abbc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/.{1}/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/.{3,4}/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab{0,}bc/' ,'r') <> 1 then pause,end
+if grep('abbc' ,'/ab+bc/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab+bc/' ,'r') <> [] then pause,end
+if grep('abq' ,'/ab+bc/' ,'r') <> [] then pause,end
+if grep('abq' ,'/ab{1,}bc/' ,'r') <> [] then pause,end
+if grep('abbbbc' ,'/ab+bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab{1,}bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab{1,3}bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab{3,4}bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab{4,5}bc/' ,'r') <> [] then pause,end
+if grep('abbc' ,'/ab?bc/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab?bc/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab{0,1}bc/' ,'r') <> 1 then pause,end
+if grep('abbbbc' ,'/ab?bc/' ,'r') <> [] then pause,end
+if grep('abc' ,'/ab?c/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab{0,1}c/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/^abc$/' ,'r') <> 1 then pause,end
+if grep('abcc' ,'/^abc$/' ,'r') <> [] then pause,end
+if grep('abcc' ,'/^abc/' ,'r') <> 1 then pause,end
+if grep('aabc' ,'/^abc$/' ,'r') <> [] then pause,end
+if grep('aabc' ,'/abc$/' ,'r') <> 1 then pause,end
+if grep('aabcd' ,'/abc$/' ,'r') <> [] then pause,end
+if grep('abc' ,'/^/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/$/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/a.c/' ,'r') <> 1 then pause,end
+if grep('axc' ,'/a.c/' ,'r') <> 1 then pause,end
+if grep('axyzc' ,'/a.*c/' ,'r') <> 1 then pause,end
+if grep('axyzd' ,'/a.*c/' ,'r') <> [] then pause,end
+if grep('abc' ,'/a[bc]d/' ,'r') <> [] then pause,end
+if grep('abd' ,'/a[bc]d/' ,'r') <> 1 then pause,end
+if grep('abd' ,'/a[b-d]e/' ,'r') <> [] then pause,end
+if grep('ace' ,'/a[b-d]e/' ,'r') <> 1 then pause,end
+if grep('aac' ,'/a[b-d]/' ,'r') <> 1 then pause,end
+if grep('a-' ,'/a[-b]/' ,'r') <> 1 then pause,end
+if grep('a-' ,'/a[b-]/' ,'r') <> 1 then pause,end
+if grep('a]' ,'/a]/' ,'r') <> 1 then pause,end
+if grep('a]b' ,'/a[]]b/' ,'r') <> 1 then pause,end
+if grep('aed' ,'/a[^bc]d/' ,'r') <> 1 then pause,end
+if grep('abd' ,'/a[^bc]d/' ,'r') <> [] then pause,end
+if grep('adc' ,'/a[^-b]c/' ,'r') <> 1 then pause,end
+if grep('a-c' ,'/a[^-b]c/' ,'r') <> [] then pause,end
+if grep('a]c' ,'/a[^]b]c/' ,'r') <> [] then pause,end
+if grep('adc' ,'/a[^]b]c/' ,'r') <> 1 then pause,end
+if grep('a-' ,'/\ba\b/' ,'r') <> 1 then pause,end
+if grep('-a' ,'/\ba\b/' ,'r') <> 1 then pause,end
+if grep('-a-' ,'/\ba\b/' ,'r') <> 1 then pause,end
+if grep('xy' ,'/\by\b/' ,'r') <> [] then pause,end
+if grep('yz' ,'/\by\b/' ,'r') <> [] then pause,end
+if grep('xyz' ,'/\by\b/' ,'r') <> [] then pause,end
+if grep('a-' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if grep('-a' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if grep('-a-' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if grep('xy' ,'/\By\b/' ,'r') <> 1 then pause,end
+if grep('xy' ,'/\By\b/' ,'r') <> 1 then pause,end
+if grep('yz' ,'/\by\B/' ,'r') <> 1 then pause,end
+if grep('xyz' ,'/\By\B/' ,'r') <> 1 then pause,end
+if grep('a' ,'/\w/' ,'r') <> 1 then pause,end
+if grep('-' ,'/\w/' ,'r') <> [] then pause,end
+if grep('a' ,'/\W/' ,'r') <> [] then pause,end
+if grep('-' ,'/\W/' ,'r') <> 1 then pause,end
+if grep('a b' ,'/a\sb/' ,'r') <> 1 then pause,end
+if grep('a-b' ,'/a\sb/' ,'r') <> [] then pause,end
+if grep('a b' ,'/a\Sb/' ,'r') <> [] then pause,end
+if grep('a-b' ,'/a\Sb/' ,'r') <> 1 then pause,end
+if grep('1' ,'/\d/' ,'r') <> 1 then pause,end
+if grep('-' ,'/\d/' ,'r') <> [] then pause,end
+if grep('1' ,'/\D/' ,'r') <> [] then pause,end
+if grep('-' ,'/\D/' ,'r') <> 1 then pause,end
+if grep('a' ,'/[\w]/' ,'r') <> 1 then pause,end
+if grep('-' ,'/[\w]/' ,'r') <> [] then pause,end
+if grep('a' ,'/[\W]/' ,'r') <> [] then pause,end
+if grep('-' ,'/[\W]/' ,'r') <> 1 then pause,end
+if grep('a b' ,'/a[\s]b/' ,'r') <> 1 then pause,end
+if grep('a-b' ,'/a[\s]b/' ,'r') <> [] then pause,end
+if grep('a b' ,'/a[\S]b/' ,'r') <> [] then pause,end
+if grep('a-b' ,'/a[\S]b/' ,'r') <> 1 then pause,end
+if grep('1' ,'/[\d]/' ,'r') <> 1 then pause,end
+if grep('-' ,'/[\d]/' ,'r') <> [] then pause,end
+if grep('1' ,'/[\D]/' ,'r') <> [] then pause,end
+if grep('-' ,'/[\D]/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/ab|cd/' ,'r') <> 1 then pause,end
+if grep('abcd' ,'/ab|cd/' ,'r') <> 1 then pause,end
+if grep('b' ,'/$b/' ,'r') <> [] then pause,end
+if grep('ab' ,'/a\(*b/' ,'r') <> 1 then pause,end
+if grep('a((b' ,'/a\(*b/' ,'r') <> 1 then pause,end
+if grep('aabbabc' ,'/a+b+c/' ,'r') <> 1 then pause,end
+if grep('aabbabc' ,'/a{1,}b{1,}c/' ,'r') <> 1 then pause,end
+if grep('abcabc' ,'/a.+?c/' ,'r') <> 1 then pause,end
+if grep('cde' ,'/[^ab]*/' ,'r') <> 1 then pause,end
+if grep('' ,'/abc/' ,'r') <> [] then pause,end
+if grep('' ,'/a*/' ,'r') <> [] then pause,end
+if grep('e' ,'/a|b|c|d|e/' ,'r') <> 1 then pause,end
+if grep('abcdefg' ,'/abcd*efg/' ,'r') <> 1 then pause,end
+if grep('xabyabbbz' ,'/ab*/' ,'r') <> 1 then pause,end
+if grep('xayabbbz' ,'/ab*/' ,'r') <> 1 then pause,end
+if grep('hij' ,'/[abhgefdc]ij/' ,'r') <> 1 then pause,end
+if grep('abcde' ,'/^(ab|cd)e/' ,'r') <> [] then pause,end
+if grep('adcdcde' ,'/a[bcd]*dcdcde/' ,'r') <> 1 then pause,end
+if grep('adcdcde' ,'/a[bcd]+dcdcde/' ,'r') <> [] then pause,end
+if grep('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ,'r') <> 1 then pause,end
+if grep('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then pause,end
+if grep('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then pause,end
+if grep('aa' ,'/((((((((((a))))))))))\10/' ,'r') <> 1 then pause,end
+if grep('aa' ,'/((((((((((a))))))))))\041/' ,'r') <> [] then pause,end
+if grep('a!' ,'/((((((((((a))))))))))\041/' ,'r') <> 1 then pause,end
+if grep('a' ,'/(((((((((a)))))))))/' ,'r') <> 1 then pause,end
+if grep('uh-uh' ,'/multiple words of text/' ,'r') <> [] then pause,end
+if grep('multiple words, yeah' ,'/multiple words/' ,'r') <> 1 then pause,end
+if grep('ab' ,'/[k]/' ,'r') <> [] then pause,end
+if grep('ac' ,'/a[-]?c/' ,'r') <> 1 then pause,end
+if grep('a' ,'/(a)|\1/' ,'r') <> 1 then pause,end
+if grep('x' ,'/(a)|\1/' ,'r') <> [] then pause,end
+if grep('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ,'r') <> [] then pause,end
+if grep('ABC' ,'/abc/i' ,'r') <> 1 then pause,end
+if grep('XBC' ,'/abc/i' ,'r') <> [] then pause,end
+if grep('AXC' ,'/abc/i' ,'r') <> [] then pause,end
+if grep('ABX' ,'/abc/i' ,'r') <> [] then pause,end
+if grep('XABCY' ,'/abc/i' ,'r') <> 1 then pause,end
+if grep('ABABC' ,'/abc/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab*c/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab*bc/i' ,'r') <> 1 then pause,end
+if grep('ABBC' ,'/ab*bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab*?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab{0,}?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBC' ,'/ab+?bc/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab+bc/i' ,'r') <> [] then pause,end
+if grep('ABQ' ,'/ab+bc/i' ,'r') <> [] then pause,end
+if grep('ABQ' ,'/ab{1,}bc/i' ,'r') <> [] then pause,end
+if grep('ABBBBC' ,'/ab+bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab{1,}?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab{1,3}?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab{3,4}?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab{4,5}?bc/i' ,'r') <> [] then pause,end
+if grep('ABBC' ,'/ab??bc/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab??bc/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab{0,1}?bc/i' ,'r') <> 1 then pause,end
+if grep('ABBBBC' ,'/ab??bc/i' ,'r') <> [] then pause,end
+if grep('ABC' ,'/ab??c/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab{0,1}?c/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/^abc$/i' ,'r') <> 1 then pause,end
+if grep('ABCC' ,'/^abc$/i' ,'r') <> [] then pause,end
+if grep('ABCC' ,'/^abc/i' ,'r') <> 1 then pause,end
+if grep('AABC' ,'/^abc$/i' ,'r') <> [] then pause,end
+if grep('AABC' ,'/abc$/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/^/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/$/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/a.c/i' ,'r') <> 1 then pause,end
+if grep('AXC' ,'/a.c/i' ,'r') <> 1 then pause,end
+if grep('AXYZC' ,'/a.*?c/i' ,'r') <> 1 then pause,end
+if grep('AXYZD' ,'/a.*c/i' ,'r') <> [] then pause,end
+if grep('ABC' ,'/a[bc]d/i' ,'r') <> [] then pause,end
+if grep('ABD' ,'/a[bc]d/i' ,'r') <> 1 then pause,end
+if grep('ABD' ,'/a[b-d]e/i' ,'r') <> [] then pause,end
+if grep('ACE' ,'/a[b-d]e/i' ,'r') <> 1 then pause,end
+if grep('AAC' ,'/a[b-d]/i' ,'r') <> 1 then pause,end
+if grep('A-' ,'/a[-b]/i' ,'r') <> 1 then pause,end
+if grep('A-' ,'/a[b-]/i' ,'r') <> 1 then pause,end
+if grep('A]' ,'/a]/i' ,'r') <> 1 then pause,end
+if grep('A]B' ,'/a[]]b/i' ,'r') <> 1 then pause,end
+if grep('AED' ,'/a[^bc]d/i' ,'r') <> 1 then pause,end
+if grep('ABD' ,'/a[^bc]d/i' ,'r') <> [] then pause,end
+if grep('ADC' ,'/a[^-b]c/i' ,'r') <> 1 then pause,end
+if grep('A-C' ,'/a[^-b]c/i' ,'r') <> [] then pause,end
+if grep('A]C' ,'/a[^]b]c/i' ,'r') <> [] then pause,end
+if grep('ADC' ,'/a[^]b]c/i' ,'r') <> 1 then pause,end
+if grep('ABC' ,'/ab|cd/i' ,'r') <> 1 then pause,end
+if grep('ABCD' ,'/ab|cd/i' ,'r') <> 1 then pause,end
+if grep('B' ,'/$b/i' ,'r') <> [] then pause,end
+if grep('AB' ,'/a\(*b/i' ,'r') <> 1 then pause,end
+if grep('A((B' ,'/a\(*b/i' ,'r') <> 1 then pause,end
+if grep('AABBABC' ,'/a+b+c/i' ,'r') <> 1 then pause,end
+if grep('AABBABC' ,'/a{1,}b{1,}c/i' ,'r') <> 1 then pause,end
+if grep('ABCABC' ,'/a.+?c/i' ,'r') <> 1 then pause,end
+if grep('ABCABC' ,'/a.*?c/i' ,'r') <> 1 then pause,end
+if grep('ABCABC' ,'/a.{0,5}?c/i' ,'r') <> 1 then pause,end
+if grep('CDE' ,'/[^ab]*/i' ,'r') <> 1 then pause,end
+if grep('' ,'/abc/i' ,'r') <> [] then pause,end
+if grep('' ,'/a*/i' ,'r') <> [] then pause,end
+if grep('E' ,'/a|b|c|d|e/i' ,'r') <> 1 then pause,end
+if grep('ABCDEFG' ,'/abcd*efg/i' ,'r') <> 1 then pause,end
+if grep('XABYABBBZ' ,'/ab*/i' ,'r') <> 1 then pause,end
+if grep('XAYABBBZ' ,'/ab*/i' ,'r') <> 1 then pause,end
+if grep('HIJ' ,'/[abhgefdc]ij/i' ,'r') <> 1 then pause,end
+if grep('ABCDE' ,'/^(ab|cd)e/i' ,'r') <> [] then pause,end
+if grep('ADCDCDE' ,'/a[bcd]*dcdcde/i' ,'r') <> 1 then pause,end
+if grep('ADCDCDE' ,'/a[bcd]+dcdcde/i' ,'r') <> [] then pause,end
+if grep('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ,'r') <> 1 then pause,end
+if grep('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then pause,end
+if grep('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then pause,end
+if grep('AA' ,'/((((((((((a))))))))))\10/i' ,'r') <> 1 then pause,end
+if grep('AA' ,'/((((((((((a))))))))))\041/i' ,'r') <> [] then pause,end
+if grep('A!' ,'/((((((((((a))))))))))\041/i' ,'r') <> 1 then pause,end
+if grep('A' ,'/(((((((((a)))))))))/i' ,'r') <> 1 then pause,end
+if grep('UH-UH' ,'/multiple words of text/i' ,'r') <> [] then pause,end
+if grep('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ,'r') <> 1 then pause,end
+if grep('AB' ,'/[k]/i' ,'r') <> [] then pause,end
+if grep('AC' ,'/a[-]?c/i' ,'r') <> 1 then pause,end
+if grep('abad' ,'/a(?!b)./' ,'r') <> 1 then pause,end
+if grep('abad' ,'/a(?=d)./' ,'r') <> 1 then pause,end
+if grep('abad' ,'/a(?=c|d)./' ,'r') <> 1 then pause,end
+if grep('<&OUT' ,'/^[<>]&/' ,'r') <> 1 then pause,end
+if grep('aaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then pause,end
+if grep('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then pause,end
+if grep('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then pause,end
+if grep('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then pause,end
+if grep('ab' ,'/(?<=a)b/' ,'r') <> 1 then pause,end
+if grep('cb' ,'/(?<=a)b/' ,'r') <> [] then pause,end
+if grep('b' ,'/(?<=a)b/' ,'r') <> [] then pause,end
+if grep('ab' ,'/(?<!c)b/' ,'r') <> 1 then pause,end
+if grep('cb' ,'/(?<!c)b/' ,'r') <> [] then pause,end
+if grep('b' ,'/(?<!c)b/' ,'r') <> 1 then pause,end
+if grep('b' ,'/(?<!c)b/' ,'r') <> 1 then pause,end
+if grep('aba' ,'/(?:..)*a/' ,'r') <> 1 then pause,end
+if grep('aba' ,'/(?:..)*?a/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/^(?:b|a(?=(.)))*\1/' ,'r') <> 1 then pause,end
+if grep('ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then pause,end
+if grep('Ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then pause,end
+if grep('aB' ,'/(?:(?i)a)b/' ,'r') <> [] then pause,end
+if grep('aB' ,'/((?i)a)b/' ,'r') <> [] then pause,end
+if grep('ab' ,'/(?i:a)b/' ,'r') <> 1 then pause,end
+if grep('Ab' ,'/(?i:a)b/' ,'r') <> 1 then pause,end
+if grep('aB' ,'/(?i:a)b/' ,'r') <> [] then pause,end
+if grep('aB' ,'/((?i:a))b/' ,'r') <> [] then pause,end
+if grep('ab' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if grep('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if grep('Ab' ,'/(?:(?-i)a)b/i' ,'r') <> [] then pause,end
+if grep('Ab' ,'/((?-i)a)b/i' ,'r') <> [] then pause,end
+if grep('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if grep('AB' ,'/(?:(?-i)a)b/i' ,'r') <> [] then pause,end
+if grep('AB' ,'/((?-i)a)b/i' ,'r') <> [] then pause,end
+if grep('ab' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if grep('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if grep('Ab' ,'/(?-i:a)b/i' ,'r') <> [] then pause,end
+if grep('Ab' ,'/((?-i:a))b/i' ,'r') <> [] then pause,end
+if grep('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if grep('AB' ,'/(?-i:a)b/i' ,'r') <> [] then pause,end
+if grep('AB' ,'/((?-i:a))b/i' ,'r') <> [] then pause,end
+if grep('a'+lf+'B' ,'/((?-i:a.))b/i' ,'r') <> [] then pause,end
+if grep('B'+lf+'B' ,'/((?s-i:a.))b/i' ,'r') <> [] then pause,end
+if grep('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/','r') <> 1 then pause,end
+if grep('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/','r') <> 1 then pause,end
+if grep('foobar1234baz' ,'/foo\w*\d{4}baz/' ,'r') <> 1 then pause,end
+if grep('x~~' ,'/x(~~)*(?:(?:F)?)?/' ,'r') <> 1 then pause,end
+if grep('aaac' ,'/^a(?#xxx){3}c/' ,'r') <> 1 then pause,end
+if grep('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ,'r') <> 1 then pause,end
+if grep('dbcb' ,'/(?<![cd])b/' ,'r') <> [] then pause,end
+if grep('dbaacb' ,'/(?<![cd])[ab]/' ,'r') <> 1 then pause,end
+if grep('dbcb' ,'/(?<!(c|d))b/' ,'r') <> [] then pause,end
+if grep('dbaacb' ,'/(?<!(c|d))[ab]/' ,'r') <> 1 then pause,end
+if grep('cdaccb' ,'/(?<!cd)[ab]/' ,'r') <> 1 then pause,end
+if grep('a--' ,'/^(?:a?b?)*$/' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf ,'/(?m)^b/' ,'r') <> 1 then pause,end
+if grep('a'+lf+'b'+lf+'c'+lf ,'/^b/' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ,'r') <> [] then pause,end
+if grep('a' ,'/(x)?(?(1)a|b)/' ,'r') <> [] then pause,end
+if grep('a' ,'/(x)?(?(1)b|a)/' ,'r') <> 1 then pause,end
+if grep('a' ,'/()?(?(1)b|a)/' ,'r') <> 1 then pause,end
+if grep('a' ,'/()(?(1)b|a)/' ,'r') <> [] then pause,end
+if grep('a' ,'/()?(?(1)a|b)/' ,'r') <> 1 then pause,end
+if grep('blah)' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if grep('(blah' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if grep('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if grep('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if grep('a' ,'/(?(?!a)a|b)/' ,'r') <> [] then pause,end
+if grep('a' ,'/(?(?!a)b|a)/' ,'r') <> 1 then pause,end
+if grep('a' ,'/(?(?=a)b|a)/' ,'r') <> [] then pause,end
+if grep('a' ,'/(?(?=a)a|b)/' ,'r') <> 1 then pause,end
+if grep('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then pause,end
+if grep('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then pause,end
+if grep('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then pause,end
+if grep('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then pause,end
+if grep('aaab' ,'/(>a+)ab/' ,'r') <> [] then pause,end
+if grep('aaab' ,'/(?>a+)b/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then pause,end
+if grep('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then pause,end
+if grep('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ,'r') <> 1 then pause,end
+if grep('a'+lf+'b'+lf ,'/a\Z/' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf ,'/a\z/' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf ,'/a$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'a'+lf ,'/a\z/' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf ,'/a\Z/m' ,'r') <> [] then pause,end
+if grep('a'+lf+'b'+lf ,'/a\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'a'+lf ,'/a\z/m' ,'r') <> [] then pause,end
+if grep('aa'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('aa'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('aa'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'aa'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('aa'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('aa'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'aa'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa$/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa$/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/aa$/m' ,'r') <> [] then pause,end
+if grep('ab'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('ab'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('ab'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ab'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('ab'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('ab'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ab'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab$/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab$/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/ab$/m' ,'r') <> [] then pause,end
+if grep('abb'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('abb'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('abb'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'abb'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('abb'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('abb'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'abb'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb$/' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('ac'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ac' ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb\Z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb\z/' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb$/' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('ca'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb\Z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb\z/m' ,'r') <> [] then pause,end
+if grep('b'+lf+'ca' ,'/abb$/m' ,'r') <> [] then pause,end
+if grep('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/','r') <> [] then pause,end
+if grep('foo.bart' ,'/foo.bart/' ,'r') <> 1 then pause,end
+if grep('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ,'r') <> 1 then pause,end
+if grep('xxxtt' ,'/tt+$/' ,'r') <> 1 then pause,end
+if grep('aaaXbX' ,'/\GX.*X/' ,'r') <> [] then pause,end
+if grep('Changes' ,'/\.c(pp|xx|c)?$/i' ,'r') <> [] then pause,end
+if grep('IO.c' ,'/\.c(pp|xx|c)?$/i' ,'r') <> 1 then pause,end
+if grep('C:/' ,'/^([a-z]:)/' ,'r') <> [] then pause,end
+if grep(lf+'x aa' ,'/^\S\s+aa$/m' ,'r') <> 1 then pause,end
+if grep('ab' ,'/(^|a)b/' ,'r') <> 1 then pause,end
+if grep('abcab' ,'/(\w)?(abc)\1b/' ,'r') <> [] then pause,end
+if grep('a,b,c' ,'/^(?:.,){2}c/' ,'r') <> 1 then pause,end
+if grep('a,b,c' ,'/^(?:[^,]*,){2}c/' ,'r') <> 1 then pause,end
+if grep('' ,'/(?i)/' ,'r') <> [] then pause,end
+if grep('a'+lf+'xb'+lf ,'/(?!\A)x/m' ,'r') <> 1 then pause,end
+if grep('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ,'r') <> 1 then pause,end
+if grep('a' ,'/^(a)?(?(1)a|b)+$/' ,'r') <> [] then pause,end
+if grep('x1' ,'/^(0+)?(?:x(1))?/' ,'r') <> 1 then pause,end
+if grep('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/','r') <> 1 then pause,end
+if grep('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then pause,end
+if grep('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then pause,end
+if grep('a'+lf+'b'+lf ,'/b\s^/m' ,'r') <> [] then pause,end
+if grep('a' ,'/\ba/' ,'r') <> 1 then pause,end
+if grep('AbCd' ,'/ab(?i)cd/' ,'r') <> [] then pause,end
+if grep('abCd' ,'/ab(?i)cd/' ,'r') <> 1 then pause,end
+if grep('Oo' ,'/^(o)(?!.*\1)/i' ,'r') <> [] then pause,end
+if grep('2' ,'/2(]*)?$\1/' ,'r') <> 1 then pause,end
+if grep('......abef' ,'/.*a(?!(b|cd)*e).*f/' ,'r') <> [] then pause,end
+if grep('fools' ,'/(foo|fool|x.|money|parted)$/' ,'r') <> [] then pause,end
+if grep('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ,'r') <> [] then pause,end
+if grep('fools' ,'/(foo|fool|money|parted)$/' ,'r') <> [] then pause,end
+//========================================================================================
+// depend of PCRE library options
+//if grep('a\b' ,'/a\\b/' ,'r') <> 1 then pause,end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+X/' ,'r') <> 1 then pause,end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+XX/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+X/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+X/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+XX/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+X/' ,'r') <> [] then pause,end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X][X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+[X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X]/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.X(.+)+[X][X]/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.XX(.+)+[X]/' ,'r') <> [] then pause,end
+//if grep('bbbbXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXcXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X][X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXcXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X][X](.+)+[X]/' ,'r') <> 1 then pause,end
+//if grep('bbbbXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X]/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X](.+)+[X][X]/' ,'r') <> [] then pause,end
+//if grep('bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ,'/.[X][X](.+)+[X]/' ,'r') <> [] then pause,end
+//if grep('cabd' ,'/a(?{})b/' ,'r') <> 1 then pause,end
+//if grep('a' ,'/(?(?{0})b|a)/' ,'r') <> 1 then pause,end
+//if grep('a' ,'/(?(?{1})a|b)/' ,'r') <> 1 then pause,end
+//if grep('x' ,'/(??{})/' ,'r') <> 1 then pause,end
+//if grep('cabd' ,'/a(?{"\{"})b/' ,'r') <> 1 then pause,end
+//if grep('A\B' ,'/a\\b/i' ,'r') <> 1 then pause,end
+//if grep('aaaaaaaaaaaaaaab' ,'/(a|aa|aaa|aaaa|aaaaa|aaaaaa)(??{$1&&"foo"})(b|c)/','r') <> [] then pause,end
+//========================================================================================
+str = "世界您好";
+needle = "界";
+[r,w] = grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+str = "азеазея";
+needle = "з";
+[r,w] = grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+str = "ハロー・ワールド";
+needle = "ワ";
+[r,w] = grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+str = "เฮลโลเวิลด์";
+needle = "วิ";
+[r,w] = grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+str = "حريات وحقوق";
+needle = "و";
+[r,w] = grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+str = "תוכנית";
+needle = "ו";
+grep(str,needle);
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+//========================================================================================
+// Chinese
+str = '世界您好';
+[r,w] = grep(str,'/^世界/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/世界$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/您好$/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/^您好/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/界您/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'界您');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/界_您/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Russian
+str = 'привет мир';
+[r,w] = grep(str,'/^привет/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/привет$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/мир$/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/^мир/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/вет\sм/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/вет_м/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+
+[r,w] = grep(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+
+[r,w] = grep(str,'/^丑丞串乃之乎也云亘亙些亦/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/丑丞串乃之乎也云亘亙些亦$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/凰凱函刹劉劫勁勃$/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/^凰凱函刹劉劫勁勃/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/亨亮仔伊伎伍伽佃佑伶侃/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[r,w] = grep(str,'/^มกระดุกกร/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/มกระดุกกร$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/กกระดิก$/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/^กกระดิก/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = grep(str,'/ดุกก/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = grep(str,'/ดุก_ก/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/grep_pcre76.dia.ref b/modules/string/tests/unit_tests/grep_pcre76.dia.ref
new file mode 100755
index 000000000..87bb3b99a
--- /dev/null
+++ b/modules/string/tests/unit_tests/grep_pcre76.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("grep(''a'' ,''/(?(1)a|b)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("grep(''a'',''/(?(?{0})a|b)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("grep(''a'',''/(?(?{1})b|a)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("grep(''a'',''/(?(1)b|a)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/grep_pcre76.tst b/modules/string/tests/unit_tests/grep_pcre76.tst
new file mode 100755
index 000000000..2ced682de
--- /dev/null
+++ b/modules/string/tests/unit_tests/grep_pcre76.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("grep(''a'' ,''/(?(1)a|b)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("grep(''a'',''/(?(?{0})a|b)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("grep(''a'',''/(?(?{1})b|a)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("grep(''a'',''/(?(1)b|a)/'',''r'')","errcatch") <> 999 then pause,end
diff --git a/modules/string/tests/unit_tests/isalphanum.dia.ref b/modules/string/tests/unit_tests/isalphanum.dia.ref
new file mode 100755
index 000000000..279dc6331
--- /dev/null
+++ b/modules/string/tests/unit_tests/isalphanum.dia.ref
@@ -0,0 +1,103 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests isalphanum
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isalphanum(TXT) <> [ %T %T %F %T %T %F %T %T] then bugmes();quit;end
+//===============================
+if isalphanum('') <> [] then bugmes();quit;end
+//===============================
+if ~isalphanum('a') then bugmes();quit;end
+if ~isalphanum('b') then bugmes();quit;end
+if ~isalphanum('c') then bugmes();quit;end
+if ~isalphanum('d') then bugmes();quit;end
+if ~isalphanum('e') then bugmes();quit;end
+if ~isalphanum('f') then bugmes();quit;end
+if ~isalphanum('g') then bugmes();quit;end
+if ~isalphanum('h') then bugmes();quit;end
+if ~isalphanum('i') then bugmes();quit;end
+if ~isalphanum('j') then bugmes();quit;end
+if ~isalphanum('k') then bugmes();quit;end
+if ~isalphanum('l') then bugmes();quit;end
+if ~isalphanum('m') then bugmes();quit;end
+if ~isalphanum('n') then bugmes();quit;end
+if ~isalphanum('o') then bugmes();quit;end
+if ~isalphanum('p') then bugmes();quit;end
+if ~isalphanum('q') then bugmes();quit;end
+if ~isalphanum('r') then bugmes();quit;end
+if ~isalphanum('s') then bugmes();quit;end
+if ~isalphanum('t') then bugmes();quit;end
+if ~isalphanum('u') then bugmes();quit;end
+if ~isalphanum('v') then bugmes();quit;end
+if ~isalphanum('x') then bugmes();quit;end
+if ~isalphanum('y') then bugmes();quit;end
+if ~isalphanum('z') then bugmes();quit;end
+if ~isalphanum('A') then bugmes();quit;end
+if ~isalphanum('B') then bugmes();quit;end
+if ~isalphanum('C') then bugmes();quit;end
+if ~isalphanum('D') then bugmes();quit;end
+if ~isalphanum('E') then bugmes();quit;end
+if ~isalphanum('F') then bugmes();quit;end
+if ~isalphanum('G') then bugmes();quit;end
+if ~isalphanum('H') then bugmes();quit;end
+if ~isalphanum('I') then bugmes();quit;end
+if ~isalphanum('J') then bugmes();quit;end
+if ~isalphanum('K') then bugmes();quit;end
+if ~isalphanum('L') then bugmes();quit;end
+if ~isalphanum('M') then bugmes();quit;end
+if ~isalphanum('O') then bugmes();quit;end
+if ~isalphanum('P') then bugmes();quit;end
+if ~isalphanum('Q') then bugmes();quit;end
+if ~isalphanum('R') then bugmes();quit;end
+if ~isalphanum('S') then bugmes();quit;end
+if ~isalphanum('T') then bugmes();quit;end
+if ~isalphanum('U') then bugmes();quit;end
+if ~isalphanum('V') then bugmes();quit;end
+if ~isalphanum('X') then bugmes();quit;end
+if ~isalphanum('Y') then bugmes();quit;end
+if ~isalphanum('Z') then bugmes();quit;end
+if ~isalphanum('1') then bugmes();quit;end
+if ~isalphanum('2') then bugmes();quit;end
+if ~isalphanum('3') then bugmes();quit;end
+if ~isalphanum('4') then bugmes();quit;end
+if ~isalphanum('5') then bugmes();quit;end
+if ~isalphanum('6') then bugmes();quit;end
+if ~isalphanum('7') then bugmes();quit;end
+if ~isalphanum('8') then bugmes();quit;end
+if ~isalphanum('9') then bugmes();quit;end
+if isalphanum('!') then bugmes();quit;end
+if isalphanum('#') then bugmes();quit;end
+if isalphanum('$') then bugmes();quit;end
+if isalphanum('%') then bugmes();quit;end
+if isalphanum('&') then bugmes();quit;end
+if isalphanum('(') then bugmes();quit;end
+if isalphanum(')') then bugmes();quit;end
+if isalphanum('*') then bugmes();quit;end
+if isalphanum('+') then bugmes();quit;end
+if isalphanum(',') then bugmes();quit;end
+if isalphanum('-') then bugmes();quit;end
+if isalphanum('.') then bugmes();quit;end
+if isalphanum('/') then bugmes();quit;end
+if isalphanum(':') then bugmes();quit;end
+if isalphanum(';') then bugmes();quit;end
+if isalphanum('<') then bugmes();quit;end
+if isalphanum('=') then bugmes();quit;end
+if isalphanum('>') then bugmes();quit;end
+if isalphanum('@') then bugmes();quit;end
+if isalphanum('[') then bugmes();quit;end
+if isalphanum('\') then bugmes();quit;end
+if isalphanum(']') then bugmes();quit;end
+if isalphanum('^') then bugmes();quit;end
+if isalphanum('_') then bugmes();quit;end
+if isalphanum('`') then bugmes();quit;end
+if isalphanum('{') then bugmes();quit;end
+if isalphanum('|') then bugmes();quit;end
+if isalphanum('}') then bugmes();quit;end
+if isalphanum('~') then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/isalphanum.tst b/modules/string/tests/unit_tests/isalphanum.tst
new file mode 100755
index 000000000..91c57f470
--- /dev/null
+++ b/modules/string/tests/unit_tests/isalphanum.tst
@@ -0,0 +1,108 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests isalphanum
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isalphanum(TXT) <> [ %T %T %F %T %T %F %T %T] then pause,end
+//===============================
+if isalphanum('') <> [] then pause,end
+//===============================
+
+if ~isalphanum('a') then pause,end
+if ~isalphanum('b') then pause,end
+if ~isalphanum('c') then pause,end
+if ~isalphanum('d') then pause,end
+if ~isalphanum('e') then pause,end
+if ~isalphanum('f') then pause,end
+if ~isalphanum('g') then pause,end
+if ~isalphanum('h') then pause,end
+if ~isalphanum('i') then pause,end
+if ~isalphanum('j') then pause,end
+if ~isalphanum('k') then pause,end
+if ~isalphanum('l') then pause,end
+if ~isalphanum('m') then pause,end
+if ~isalphanum('n') then pause,end
+if ~isalphanum('o') then pause,end
+if ~isalphanum('p') then pause,end
+if ~isalphanum('q') then pause,end
+if ~isalphanum('r') then pause,end
+if ~isalphanum('s') then pause,end
+if ~isalphanum('t') then pause,end
+if ~isalphanum('u') then pause,end
+if ~isalphanum('v') then pause,end
+if ~isalphanum('x') then pause,end
+if ~isalphanum('y') then pause,end
+if ~isalphanum('z') then pause,end
+if ~isalphanum('A') then pause,end
+if ~isalphanum('B') then pause,end
+if ~isalphanum('C') then pause,end
+if ~isalphanum('D') then pause,end
+if ~isalphanum('E') then pause,end
+if ~isalphanum('F') then pause,end
+if ~isalphanum('G') then pause,end
+if ~isalphanum('H') then pause,end
+if ~isalphanum('I') then pause,end
+if ~isalphanum('J') then pause,end
+if ~isalphanum('K') then pause,end
+if ~isalphanum('L') then pause,end
+if ~isalphanum('M') then pause,end
+if ~isalphanum('O') then pause,end
+if ~isalphanum('P') then pause,end
+if ~isalphanum('Q') then pause,end
+if ~isalphanum('R') then pause,end
+if ~isalphanum('S') then pause,end
+if ~isalphanum('T') then pause,end
+if ~isalphanum('U') then pause,end
+if ~isalphanum('V') then pause,end
+if ~isalphanum('X') then pause,end
+if ~isalphanum('Y') then pause,end
+if ~isalphanum('Z') then pause,end
+
+if ~isalphanum('1') then pause,end
+if ~isalphanum('2') then pause,end
+if ~isalphanum('3') then pause,end
+if ~isalphanum('4') then pause,end
+if ~isalphanum('5') then pause,end
+if ~isalphanum('6') then pause,end
+if ~isalphanum('7') then pause,end
+if ~isalphanum('8') then pause,end
+if ~isalphanum('9') then pause,end
+
+if isalphanum('!') then pause,end
+if isalphanum('#') then pause,end
+if isalphanum('$') then pause,end
+if isalphanum('%') then pause,end
+if isalphanum('&') then pause,end
+if isalphanum('(') then pause,end
+if isalphanum(')') then pause,end
+if isalphanum('*') then pause,end
+if isalphanum('+') then pause,end
+if isalphanum(',') then pause,end
+if isalphanum('-') then pause,end
+if isalphanum('.') then pause,end
+if isalphanum('/') then pause,end
+if isalphanum(':') then pause,end
+if isalphanum(';') then pause,end
+if isalphanum('<') then pause,end
+if isalphanum('=') then pause,end
+if isalphanum('>') then pause,end
+if isalphanum('@') then pause,end
+if isalphanum('[') then pause,end
+if isalphanum('\') then pause,end
+if isalphanum(']') then pause,end
+if isalphanum('^') then pause,end
+if isalphanum('_') then pause,end
+if isalphanum('`') then pause,end
+if isalphanum('{') then pause,end
+if isalphanum('|') then pause,end
+if isalphanum('}') then pause,end
+if isalphanum('~') then pause,end
diff --git a/modules/string/tests/unit_tests/isascii.dia.ref b/modules/string/tests/unit_tests/isascii.dia.ref
new file mode 100755
index 000000000..653f53827
--- /dev/null
+++ b/modules/string/tests/unit_tests/isascii.dia.ref
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// =============================================================================
+// unit tests isascii
+// =============================================================================
+chars = ascii(1:127);
+if or(isascii(chars)) <> %T then bugmes();quit;end
+// =============================================================================
+if or(isascii(255:300)) <> %F then bugmes();quit;end
+// =============================================================================
+if or(isascii('This is a sentence')) <> %T then bugmes();quit;end
+// =============================================================================
+if isascii(ascii(20)) <> %T then bugmes();quit;end
+// =============================================================================
+if or(isascii(ascii(20:50))) <> %T then bugmes();quit;end
+// =============================================================================
+tab_ref = [
+"世界A您好",
+"азеAазея",
+"ハロー・Aワールド",
+"เฮลโลเAวิลด์",
+"حرياتAوحقوق",
+"תוAכנית"];
+r_ref = list([%F,%F,%T,%F,%F], ..
+[%F,%F,%F,%T,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%T,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%F,%F,%T,%F,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%F,%T,%F,%F,%F,%F,%F], ..
+[%F,%F,%T,%F,%F,%F,%F]);
+for i = 1 : size(tab_ref,'*')
+ if and(isascii(tab_ref(i))<> r_ref(i)) then bugmes();quit;end
+end
diff --git a/modules/string/tests/unit_tests/isascii.tst b/modules/string/tests/unit_tests/isascii.tst
new file mode 100755
index 000000000..1502d0f6c
--- /dev/null
+++ b/modules/string/tests/unit_tests/isascii.tst
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// =============================================================================
+// unit tests isascii
+// =============================================================================
+chars = ascii(1:127);
+if or(isascii(chars)) <> %T then pause,end
+// =============================================================================
+if or(isascii(255:300)) <> %F then pause,end
+// =============================================================================
+if or(isascii('This is a sentence')) <> %T then pause,end
+// =============================================================================
+if isascii(ascii(20)) <> %T then pause,end
+// =============================================================================
+if or(isascii(ascii(20:50))) <> %T then pause,end
+// =============================================================================
+tab_ref = [
+"世界A您好",
+"азеAазея",
+"ハロー・Aワールド",
+"เฮลโลเAวิลด์",
+"حرياتAوحقوق",
+"תוAכנית"];
+
+r_ref = list([%F,%F,%T,%F,%F], ..
+[%F,%F,%F,%T,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%T,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%F,%F,%T,%F,%F,%F,%F,%F], ..
+[%F,%F,%F,%F,%F,%T,%F,%F,%F,%F,%F], ..
+[%F,%F,%T,%F,%F,%F,%F]);
+
+
+for i = 1 : size(tab_ref,'*')
+ if and(isascii(tab_ref(i))<> r_ref(i)) then pause,end
+end \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/isdigit.dia.ref b/modules/string/tests/unit_tests/isdigit.dia.ref
new file mode 100755
index 000000000..29dc18023
--- /dev/null
+++ b/modules/string/tests/unit_tests/isdigit.dia.ref
@@ -0,0 +1,105 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests isdigit
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isdigit(TXT) <> [%F %T %F %F %T %F %F %T] then bugmes();quit;end
+//===============================
+if isdigit('') <> [] then bugmes();quit;end
+//===============================
+if isdigit('a') then bugmes();quit;end
+if isdigit('b') then bugmes();quit;end
+if isdigit('c') then bugmes();quit;end
+if isdigit('d') then bugmes();quit;end
+if isdigit('e') then bugmes();quit;end
+if isdigit('f') then bugmes();quit;end
+if isdigit('g') then bugmes();quit;end
+if isdigit('h') then bugmes();quit;end
+if isdigit('i') then bugmes();quit;end
+if isdigit('j') then bugmes();quit;end
+if isdigit('k') then bugmes();quit;end
+if isdigit('l') then bugmes();quit;end
+if isdigit('m') then bugmes();quit;end
+if isdigit('n') then bugmes();quit;end
+if isdigit('o') then bugmes();quit;end
+if isdigit('p') then bugmes();quit;end
+if isdigit('q') then bugmes();quit;end
+if isdigit('r') then bugmes();quit;end
+if isdigit('s') then bugmes();quit;end
+if isdigit('t') then bugmes();quit;end
+if isdigit('u') then bugmes();quit;end
+if isdigit('v') then bugmes();quit;end
+if isdigit('x') then bugmes();quit;end
+if isdigit('y') then bugmes();quit;end
+if isdigit('z') then bugmes();quit;end
+if isdigit('A') then bugmes();quit;end
+if isdigit('B') then bugmes();quit;end
+if isdigit('C') then bugmes();quit;end
+if isdigit('D') then bugmes();quit;end
+if isdigit('E') then bugmes();quit;end
+if isdigit('F') then bugmes();quit;end
+if isdigit('G') then bugmes();quit;end
+if isdigit('H') then bugmes();quit;end
+if isdigit('I') then bugmes();quit;end
+if isdigit('J') then bugmes();quit;end
+if isdigit('K') then bugmes();quit;end
+if isdigit('L') then bugmes();quit;end
+if isdigit('M') then bugmes();quit;end
+if isdigit('O') then bugmes();quit;end
+if isdigit('P') then bugmes();quit;end
+if isdigit('Q') then bugmes();quit;end
+if isdigit('R') then bugmes();quit;end
+if isdigit('S') then bugmes();quit;end
+if isdigit('T') then bugmes();quit;end
+if isdigit('U') then bugmes();quit;end
+if isdigit('V') then bugmes();quit;end
+if isdigit('X') then bugmes();quit;end
+if isdigit('Y') then bugmes();quit;end
+if isdigit('Z') then bugmes();quit;end
+if isdigit('!') then bugmes();quit;end
+if isdigit('#') then bugmes();quit;end
+if isdigit('$') then bugmes();quit;end
+if isdigit('%') then bugmes();quit;end
+if isdigit('&') then bugmes();quit;end
+if isdigit('(') then bugmes();quit;end
+if isdigit(')') then bugmes();quit;end
+if isdigit('*') then bugmes();quit;end
+if isdigit('+') then bugmes();quit;end
+if isdigit(',') then bugmes();quit;end
+if isdigit('-') then bugmes();quit;end
+if isdigit('.') then bugmes();quit;end
+if isdigit('/') then bugmes();quit;end
+if isdigit(':') then bugmes();quit;end
+if isdigit(';') then bugmes();quit;end
+if isdigit('<') then bugmes();quit;end
+if isdigit('=') then bugmes();quit;end
+if isdigit('>') then bugmes();quit;end
+if isdigit('@') then bugmes();quit;end
+if isdigit('[') then bugmes();quit;end
+if isdigit('\') then bugmes();quit;end
+if isdigit(']') then bugmes();quit;end
+if isdigit('^') then bugmes();quit;end
+if isdigit('_') then bugmes();quit;end
+if isdigit('`') then bugmes();quit;end
+if isdigit('{') then bugmes();quit;end
+if isdigit('|') then bugmes();quit;end
+if isdigit('}') then bugmes();quit;end
+if isdigit('~') then bugmes();quit;end
+if isdigit('""') then bugmes();quit;end
+if isdigit('''') then bugmes();quit;end
+if ~isdigit('1') then bugmes();quit;end
+if ~isdigit('2') then bugmes();quit;end
+if ~isdigit('3') then bugmes();quit;end
+if ~isdigit('4') then bugmes();quit;end
+if ~isdigit('5') then bugmes();quit;end
+if ~isdigit('6') then bugmes();quit;end
+if ~isdigit('7') then bugmes();quit;end
+if ~isdigit('8') then bugmes();quit;end
+if ~isdigit('9') then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/isdigit.tst b/modules/string/tests/unit_tests/isdigit.tst
new file mode 100755
index 000000000..462e57932
--- /dev/null
+++ b/modules/string/tests/unit_tests/isdigit.tst
@@ -0,0 +1,111 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests isdigit
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isdigit(TXT) <> [%F %T %F %F %T %F %F %T] then pause,end
+//===============================
+if isdigit('') <> [] then pause,end
+//===============================
+
+if isdigit('a') then pause,end
+if isdigit('b') then pause,end
+if isdigit('c') then pause,end
+if isdigit('d') then pause,end
+if isdigit('e') then pause,end
+if isdigit('f') then pause,end
+if isdigit('g') then pause,end
+if isdigit('h') then pause,end
+if isdigit('i') then pause,end
+if isdigit('j') then pause,end
+if isdigit('k') then pause,end
+if isdigit('l') then pause,end
+if isdigit('m') then pause,end
+if isdigit('n') then pause,end
+if isdigit('o') then pause,end
+if isdigit('p') then pause,end
+if isdigit('q') then pause,end
+if isdigit('r') then pause,end
+if isdigit('s') then pause,end
+if isdigit('t') then pause,end
+if isdigit('u') then pause,end
+if isdigit('v') then pause,end
+if isdigit('x') then pause,end
+if isdigit('y') then pause,end
+if isdigit('z') then pause,end
+if isdigit('A') then pause,end
+if isdigit('B') then pause,end
+if isdigit('C') then pause,end
+if isdigit('D') then pause,end
+if isdigit('E') then pause,end
+if isdigit('F') then pause,end
+if isdigit('G') then pause,end
+if isdigit('H') then pause,end
+if isdigit('I') then pause,end
+if isdigit('J') then pause,end
+if isdigit('K') then pause,end
+if isdigit('L') then pause,end
+if isdigit('M') then pause,end
+if isdigit('O') then pause,end
+if isdigit('P') then pause,end
+if isdigit('Q') then pause,end
+if isdigit('R') then pause,end
+if isdigit('S') then pause,end
+if isdigit('T') then pause,end
+if isdigit('U') then pause,end
+if isdigit('V') then pause,end
+if isdigit('X') then pause,end
+if isdigit('Y') then pause,end
+if isdigit('Z') then pause,end
+
+if isdigit('!') then pause,end
+if isdigit('#') then pause,end
+if isdigit('$') then pause,end
+if isdigit('%') then pause,end
+if isdigit('&') then pause,end
+if isdigit('(') then pause,end
+if isdigit(')') then pause,end
+if isdigit('*') then pause,end
+if isdigit('+') then pause,end
+if isdigit(',') then pause,end
+if isdigit('-') then pause,end
+if isdigit('.') then pause,end
+if isdigit('/') then pause,end
+if isdigit(':') then pause,end
+if isdigit(';') then pause,end
+if isdigit('<') then pause,end
+if isdigit('=') then pause,end
+if isdigit('>') then pause,end
+if isdigit('@') then pause,end
+if isdigit('[') then pause,end
+if isdigit('\') then pause,end
+if isdigit(']') then pause,end
+if isdigit('^') then pause,end
+if isdigit('_') then pause,end
+if isdigit('`') then pause,end
+if isdigit('{') then pause,end
+if isdigit('|') then pause,end
+if isdigit('}') then pause,end
+if isdigit('~') then pause,end
+
+if isdigit('""') then pause,end
+if isdigit('''') then pause,end
+
+if ~isdigit('1') then pause,end
+if ~isdigit('2') then pause,end
+if ~isdigit('3') then pause,end
+if ~isdigit('4') then pause,end
+if ~isdigit('5') then pause,end
+if ~isdigit('6') then pause,end
+if ~isdigit('7') then pause,end
+if ~isdigit('8') then pause,end
+if ~isdigit('9') then pause,end
diff --git a/modules/string/tests/unit_tests/isletter.dia.ref b/modules/string/tests/unit_tests/isletter.dia.ref
new file mode 100755
index 000000000..12273953d
--- /dev/null
+++ b/modules/string/tests/unit_tests/isletter.dia.ref
@@ -0,0 +1,106 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests isletter
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isletter(TXT) <> [%T %F %F %T %F %F %T %F] then bugmes();quit;end
+//===============================
+if isletter('') <> [] then bugmes();quit;end
+//===============================
+if ~isletter('a') then bugmes();quit;end
+if ~isletter('b') then bugmes();quit;end
+if ~isletter('c') then bugmes();quit;end
+if ~isletter('d') then bugmes();quit;end
+if ~isletter('e') then bugmes();quit;end
+if ~isletter('f') then bugmes();quit;end
+if ~isletter('g') then bugmes();quit;end
+if ~isletter('h') then bugmes();quit;end
+if ~isletter('i') then bugmes();quit;end
+if ~isletter('j') then bugmes();quit;end
+if ~isletter('k') then bugmes();quit;end
+if ~isletter('l') then bugmes();quit;end
+if ~isletter('m') then bugmes();quit;end
+if ~isletter('n') then bugmes();quit;end
+if ~isletter('o') then bugmes();quit;end
+if ~isletter('p') then bugmes();quit;end
+if ~isletter('q') then bugmes();quit;end
+if ~isletter('r') then bugmes();quit;end
+if ~isletter('s') then bugmes();quit;end
+if ~isletter('t') then bugmes();quit;end
+if ~isletter('u') then bugmes();quit;end
+if ~isletter('v') then bugmes();quit;end
+if ~isletter('x') then bugmes();quit;end
+if ~isletter('y') then bugmes();quit;end
+if ~isletter('z') then bugmes();quit;end
+if ~isletter('A') then bugmes();quit;end
+if ~isletter('B') then bugmes();quit;end
+if ~isletter('C') then bugmes();quit;end
+if ~isletter('D') then bugmes();quit;end
+if ~isletter('E') then bugmes();quit;end
+if ~isletter('F') then bugmes();quit;end
+if ~isletter('G') then bugmes();quit;end
+if ~isletter('H') then bugmes();quit;end
+if ~isletter('I') then bugmes();quit;end
+if ~isletter('J') then bugmes();quit;end
+if ~isletter('K') then bugmes();quit;end
+if ~isletter('L') then bugmes();quit;end
+if ~isletter('M') then bugmes();quit;end
+if ~isletter('O') then bugmes();quit;end
+if ~isletter('P') then bugmes();quit;end
+if ~isletter('Q') then bugmes();quit;end
+if ~isletter('R') then bugmes();quit;end
+if ~isletter('S') then bugmes();quit;end
+if ~isletter('T') then bugmes();quit;end
+if ~isletter('U') then bugmes();quit;end
+if ~isletter('V') then bugmes();quit;end
+if ~isletter('X') then bugmes();quit;end
+if ~isletter('Y') then bugmes();quit;end
+if ~isletter('Z') then bugmes();quit;end
+if isletter('!') then bugmes();quit;end
+if isletter('#') then bugmes();quit;end
+if isletter('$') then bugmes();quit;end
+if isletter('%') then bugmes();quit;end
+if isletter('&') then bugmes();quit;end
+if isletter('(') then bugmes();quit;end
+if isletter(')') then bugmes();quit;end
+if isletter('*') then bugmes();quit;end
+if isletter('+') then bugmes();quit;end
+if isletter(',') then bugmes();quit;end
+if isletter('-') then bugmes();quit;end
+if isletter('.') then bugmes();quit;end
+if isletter('/') then bugmes();quit;end
+if isletter(':') then bugmes();quit;end
+if isletter(';') then bugmes();quit;end
+if isletter('<') then bugmes();quit;end
+if isletter('=') then bugmes();quit;end
+if isletter('>') then bugmes();quit;end
+if isletter('@') then bugmes();quit;end
+if isletter('[') then bugmes();quit;end
+if isletter('\') then bugmes();quit;end
+if isletter(']') then bugmes();quit;end
+if isletter('^') then bugmes();quit;end
+if isletter('_') then bugmes();quit;end
+if isletter('`') then bugmes();quit;end
+if isletter('{') then bugmes();quit;end
+if isletter('|') then bugmes();quit;end
+if isletter('}') then bugmes();quit;end
+if isletter('~') then bugmes();quit;end
+if isletter('0') then bugmes();quit;end
+if isletter('1') then bugmes();quit;end
+if isletter('2') then bugmes();quit;end
+if isletter('3') then bugmes();quit;end
+if isletter('4') then bugmes();quit;end
+if isletter('5') then bugmes();quit;end
+if isletter('6') then bugmes();quit;end
+if isletter('7') then bugmes();quit;end
+if isletter('8') then bugmes();quit;end
+if isletter('9') then bugmes();quit;end
+if isletter('''') then bugmes();quit;end
+if isletter('""') then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/isletter.tst b/modules/string/tests/unit_tests/isletter.tst
new file mode 100755
index 000000000..2d090406c
--- /dev/null
+++ b/modules/string/tests/unit_tests/isletter.tst
@@ -0,0 +1,112 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests isletter
+//===============================
+TXT = 'A1,B2,C3';
+//===============================
+if isletter(TXT) <> [%T %F %F %T %F %F %T %F] then pause,end
+//===============================
+if isletter('') <> [] then pause,end
+//===============================
+
+if ~isletter('a') then pause,end
+if ~isletter('b') then pause,end
+if ~isletter('c') then pause,end
+if ~isletter('d') then pause,end
+if ~isletter('e') then pause,end
+if ~isletter('f') then pause,end
+if ~isletter('g') then pause,end
+if ~isletter('h') then pause,end
+if ~isletter('i') then pause,end
+if ~isletter('j') then pause,end
+if ~isletter('k') then pause,end
+if ~isletter('l') then pause,end
+if ~isletter('m') then pause,end
+if ~isletter('n') then pause,end
+if ~isletter('o') then pause,end
+if ~isletter('p') then pause,end
+if ~isletter('q') then pause,end
+if ~isletter('r') then pause,end
+if ~isletter('s') then pause,end
+if ~isletter('t') then pause,end
+if ~isletter('u') then pause,end
+if ~isletter('v') then pause,end
+if ~isletter('x') then pause,end
+if ~isletter('y') then pause,end
+if ~isletter('z') then pause,end
+if ~isletter('A') then pause,end
+if ~isletter('B') then pause,end
+if ~isletter('C') then pause,end
+if ~isletter('D') then pause,end
+if ~isletter('E') then pause,end
+if ~isletter('F') then pause,end
+if ~isletter('G') then pause,end
+if ~isletter('H') then pause,end
+if ~isletter('I') then pause,end
+if ~isletter('J') then pause,end
+if ~isletter('K') then pause,end
+if ~isletter('L') then pause,end
+if ~isletter('M') then pause,end
+if ~isletter('O') then pause,end
+if ~isletter('P') then pause,end
+if ~isletter('Q') then pause,end
+if ~isletter('R') then pause,end
+if ~isletter('S') then pause,end
+if ~isletter('T') then pause,end
+if ~isletter('U') then pause,end
+if ~isletter('V') then pause,end
+if ~isletter('X') then pause,end
+if ~isletter('Y') then pause,end
+if ~isletter('Z') then pause,end
+
+if isletter('!') then pause,end
+if isletter('#') then pause,end
+if isletter('$') then pause,end
+if isletter('%') then pause,end
+if isletter('&') then pause,end
+if isletter('(') then pause,end
+if isletter(')') then pause,end
+if isletter('*') then pause,end
+if isletter('+') then pause,end
+if isletter(',') then pause,end
+if isletter('-') then pause,end
+if isletter('.') then pause,end
+if isletter('/') then pause,end
+if isletter(':') then pause,end
+if isletter(';') then pause,end
+if isletter('<') then pause,end
+if isletter('=') then pause,end
+if isletter('>') then pause,end
+if isletter('@') then pause,end
+if isletter('[') then pause,end
+if isletter('\') then pause,end
+if isletter(']') then pause,end
+if isletter('^') then pause,end
+if isletter('_') then pause,end
+if isletter('`') then pause,end
+if isletter('{') then pause,end
+if isletter('|') then pause,end
+if isletter('}') then pause,end
+if isletter('~') then pause,end
+
+if isletter('0') then pause,end
+if isletter('1') then pause,end
+if isletter('2') then pause,end
+if isletter('3') then pause,end
+if isletter('4') then pause,end
+if isletter('5') then pause,end
+if isletter('6') then pause,end
+if isletter('7') then pause,end
+if isletter('8') then pause,end
+if isletter('9') then pause,end
+
+if isletter('''') then pause,end
+if isletter('""') then pause,end
diff --git a/modules/string/tests/unit_tests/isnum.dia.ref b/modules/string/tests/unit_tests/isnum.dia.ref
new file mode 100755
index 000000000..1bc8f8d99
--- /dev/null
+++ b/modules/string/tests/unit_tests/isnum.dia.ref
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+assert_checktrue(isnum('%pi'));
+assert_checktrue(isnum('1'));
+assert_checktrue(isnum('1.2'));
+assert_checktrue(isnum('+1.2'));
+assert_checktrue(isnum('-1.2'));
+assert_checktrue(isnum('1e2'));
+assert_checktrue(isnum('1d2'));
+assert_checktrue(isnum('1E2'));
+assert_checktrue(isnum('1D2'));
+assert_checktrue(isnum('1e+2'));
+assert_checktrue(isnum('1e-2'));
+assert_checktrue(isnum('+1e+2'));
+assert_checktrue(isnum('-1e+2'));
+assert_checktrue(isnum('-12e+3'));
+assert_checktrue(isnum('-1.2e+3'));
+assert_checktrue(isnum('-1.2e+345'));
+assert_checkfalse(isnum('a'));
+assert_checkfalse(isnum('e'));
+assert_checkfalse(isnum('d'));
+assert_checkfalse(isnum('E'));
+assert_checkfalse(isnum('e'));
+assert_checkfalse(isnum('-1.2a+345'));
+assert_checkfalse(isnum('-1.2e+3+45'));
+assert_checkfalse(isnum('-1.2e+3-45'));
+assert_checkerror("isnum(1)",[],999);
diff --git a/modules/string/tests/unit_tests/isnum.tst b/modules/string/tests/unit_tests/isnum.tst
new file mode 100755
index 000000000..6b6b1e014
--- /dev/null
+++ b/modules/string/tests/unit_tests/isnum.tst
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre .marechal@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+assert_checktrue(isnum('%pi'));
+
+assert_checktrue(isnum('1'));
+assert_checktrue(isnum('1.2'));
+assert_checktrue(isnum('+1.2'));
+assert_checktrue(isnum('-1.2'));
+
+assert_checktrue(isnum('1e2'));
+assert_checktrue(isnum('1d2'));
+assert_checktrue(isnum('1E2'));
+assert_checktrue(isnum('1D2'));
+
+assert_checktrue(isnum('1e+2'));
+assert_checktrue(isnum('1e-2'));
+assert_checktrue(isnum('+1e+2'));
+assert_checktrue(isnum('-1e+2'));
+
+assert_checktrue(isnum('-12e+3'));
+
+assert_checktrue(isnum('-1.2e+3'));
+assert_checktrue(isnum('-1.2e+345'));
+
+assert_checkfalse(isnum('a'));
+assert_checkfalse(isnum('e'));
+assert_checkfalse(isnum('d'));
+assert_checkfalse(isnum('E'));
+assert_checkfalse(isnum('e'));
+
+assert_checkfalse(isnum('-1.2a+345'));
+assert_checkfalse(isnum('-1.2e+3+45'));
+assert_checkfalse(isnum('-1.2e+3-45'));
+
+assert_checkerror("isnum(1)",[],999);
diff --git a/modules/string/tests/unit_tests/length.dia.ref b/modules/string/tests/unit_tests/length.dia.ref
new file mode 100755
index 000000000..1988e1609
--- /dev/null
+++ b/modules/string/tests/unit_tests/length.dia.ref
@@ -0,0 +1,82 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// =============================================================================
+// unit tests length
+// =============================================================================
+// = Empty matrix ==============================================================
+l = length([]);
+if (l <> 0) then bugmes();quit;end;
+// = integer ===================================================================
+N = 321;
+l = length(N);
+if (l <> 1) then bugmes();quit;end;
+// = Matrix of integer =========================================================
+N = 321;
+M = 32;
+PARAMIN = [N,M;M,N];
+l = length(PARAMIN);
+if (l <> size(PARAMIN,'*') ) then bugmes();quit;end;
+// = String ====================================================================
+STRING = "Scilab";
+l = length(STRING);
+if (l <> 6 ) then bugmes();quit;end;
+// = Matrix of Strings =========================================================
+STRING1 = "Scilab";
+STRING2 = "Strings";
+PARAMIN = [STRING1,STRING2;STRING2,STRING1];
+l = length(PARAMIN);
+LS1 = length(STRING1);
+LS2 = length(STRING2);
+if (LS1 <> 6 ) then bugmes();quit;end;
+if (LS2 <> 7 ) then bugmes();quit;end;
+if (l <> [ LS1, LS2; LS2 , LS1 ]) then bugmes();quit;end
+// = List (of strings) =========================================================
+STRING1 = "Scilab";
+STRING2 = "5.x";
+m=list();
+m(1)=STRING1;
+m(2)=STRING2;
+if length(m) <> 2 then bugmes();quit;end
+// = List (mixed) ==============================================================
+l = list(1,["a" "b"],[1 2 3 4],%T);
+if length(l) <> 4 then bugmes();quit;end
+// = mlist =====================================================================
+M = mlist(['V','name','value'],['a','b','c'],[1 2 3]);
+if length(M) <> 3 then bugmes();quit;end
+// = tlist =====================================================================
+Sys=tlist(['lss';'A';'B';'C';'D';'X0';'dt'],1,2,3,4,5,'c');
+if length(Sys) <> 7 then bugmes();quit;end
+// = Matrix of Strings =========================================================
+STRING1 = "Scilab";
+STRING2 = "5.x";
+LS1 = length(STRING1);
+LS2 = length(STRING2);
+if length([STRING1,STRING2]) <> [LS1,LS2] then bugmes();quit;end
+// = Matrix of Strings =========================================================
+if length('abd')<>3 then bugmes();quit;end
+if length(emptystr())<>0 then bugmes();quit;end
+if or(length(['abd';emptystr()])<>[3;0]) then bugmes();quit;end
+if or(length(string(ones(10,10)))<>1) then bugmes();quit;end
+// = with a file ===============================================================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+if length(txt(1)) <> 280 then bugmes();quit;end
+S = size(txt);
+if length(txt(S(1)-1)) <> 106 then bugmes();quit;end
+if length(txt(S(1))) <> 0 then bugmes();quit;end
+// = an hypermatrix (double) ===================================================
+A = rand(2,5,2,3,2);
+assert_checkequal(length(A), double(prod(A.dims)));
+A = hypermat([2,3,4], 1:24);
+assert_checkequal(length(A), double(prod(A.dims)));
+// = an hypermatrix (string) ===================================================
+clear S;
+S(:,:,1) = ["a","b";"c","d"];
+S(:,:,2) = ["ab", "bc"; "cd", "de"];
+assert_checkequal(length(S),3);
diff --git a/modules/string/tests/unit_tests/length.tst b/modules/string/tests/unit_tests/length.tst
new file mode 100755
index 000000000..8d746947a
--- /dev/null
+++ b/modules/string/tests/unit_tests/length.tst
@@ -0,0 +1,111 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// =============================================================================
+// unit tests length
+// =============================================================================
+
+
+// = Empty matrix ==============================================================
+l = length([]);
+if (l <> 0) then pause,end;
+
+
+// = integer ===================================================================
+N = 321;
+l = length(N);
+if (l <> 1) then pause,end;
+
+
+// = Matrix of integer =========================================================
+N = 321;
+M = 32;
+PARAMIN = [N,M;M,N];
+l = length(PARAMIN);
+if (l <> size(PARAMIN,'*') ) then pause,end;
+
+
+// = String ====================================================================
+STRING = "Scilab";
+l = length(STRING);
+if (l <> 6 ) then pause,end;
+
+
+// = Matrix of Strings =========================================================
+STRING1 = "Scilab";
+STRING2 = "Strings";
+PARAMIN = [STRING1,STRING2;STRING2,STRING1];
+l = length(PARAMIN);
+LS1 = length(STRING1);
+LS2 = length(STRING2);
+if (LS1 <> 6 ) then pause,end;
+if (LS2 <> 7 ) then pause,end;
+if (l <> [ LS1, LS2; LS2 , LS1 ]) then pause,end
+
+
+// = List (of strings) =========================================================
+STRING1 = "Scilab";
+STRING2 = "5.x";
+m=list();
+m(1)=STRING1;
+m(2)=STRING2;
+if length(m) <> 2 then pause,end
+
+
+// = List (mixed) ==============================================================
+l = list(1,["a" "b"],[1 2 3 4],%T);
+if length(l) <> 4 then pause,end
+
+
+// = mlist =====================================================================
+M = mlist(['V','name','value'],['a','b','c'],[1 2 3]);
+if length(M) <> 3 then pause,end
+
+
+// = tlist =====================================================================
+Sys=tlist(['lss';'A';'B';'C';'D';'X0';'dt'],1,2,3,4,5,'c');
+if length(Sys) <> 7 then pause,end
+
+
+// = Matrix of Strings =========================================================
+STRING1 = "Scilab";
+STRING2 = "5.x";
+LS1 = length(STRING1);
+LS2 = length(STRING2);
+if length([STRING1,STRING2]) <> [LS1,LS2] then pause,end
+
+
+// = Matrix of Strings =========================================================
+if length('abd')<>3 then pause,end
+if length(emptystr())<>0 then pause,end
+if or(length(['abd';emptystr()])<>[3;0]) then pause,end
+if or(length(string(ones(10,10)))<>1) then pause,end
+
+
+// = with a file ===============================================================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+if length(txt(1)) <> 280 then pause,end
+S = size(txt);
+if length(txt(S(1)-1)) <> 106 then pause,end
+if length(txt(S(1))) <> 0 then pause,end
+
+
+// = an hypermatrix (double) ===================================================
+A = rand(2,5,2,3,2);
+assert_checkequal(length(A), double(prod(A.dims)));
+A = hypermat([2,3,4], 1:24);
+assert_checkequal(length(A), double(prod(A.dims)));
+
+// = an hypermatrix (string) ===================================================
+clear S;
+S(:,:,1) = ["a","b";"c","d"];
+S(:,:,2) = ["ab", "bc"; "cd", "de"];
+assert_checkequal(length(S),3);
diff --git a/modules/string/tests/unit_tests/part.dia.ref b/modules/string/tests/unit_tests/part.dia.ref
new file mode 100755
index 000000000..64aad91d2
--- /dev/null
+++ b/modules/string/tests/unit_tests/part.dia.ref
@@ -0,0 +1,62 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests part
+//===============================
+EMPTY_STR = "";
+BLANK = " ";
+//===============================
+s = part(EMPTY_STR ,[]);
+if (s <> EMPTY_STR ) then bugmes();quit;end
+//===============================
+// compatibility 4.x
+N = 50;
+s = part(EMPTY_STR ,N);
+if (s <> BLANK) then bugmes();quit;end
+//===============================
+s = part(["a","abc","abcd"],[1,1,2]);
+if (s <> ["aa","aab","aab"]) then bugmes();quit;end
+//===============================
+s1 = part(["a","abc","abcd"],[2,4,6]);
+s2 = part(["a","abc","abcd"],[2,4,5]);
+if (s1 <> s2) then bugmes();quit;end
+if (s1 <> [" ","b","bd"]) then bugmes();quit;end
+//===============================
+N = 20;
+s = part(" ",ones(1,N));
+if (blanks(N) <> s) then bugmes();quit;end
+//===============================
+if part("abc",1)<>"a" then bugmes();quit;end
+if part("abc",[1 1])<>"aa" then bugmes();quit;end
+if part("abc",[1;1])<>"aa" then bugmes();quit;end
+if part("abc",[])<>emptystr() then bugmes();quit;end
+if part("abc",5)<>BLANK then bugmes();quit;end
+if part("abc",5:6)<>" " then bugmes();quit;end
+if or(part(["abc";"x"],1)<>["a";"x"]) then bugmes();quit;end
+if or(part(["abc";"x"],[1,1])<>["aa";"xx"]) then bugmes();quit;end
+if or(part(["abc";"x"],[1,2])<>["ab";"x "]) then bugmes();quit;end
+if or(part(["abc";"x"],[1;1])<>["aa";"xx"]) then bugmes();quit;end
+if or(part(["abc";"x"],[1;2])<>["ab";"x "]) then bugmes();quit;end
+//===============================
+a=part(["a","abc","abcd"],[1]);
+assert_checkequal(a,["a","a","a"]);
+a=part(["a","abc","abcd"],[1,1]);
+assert_checkequal(a,["aa","aa","aa"]);
+a=part(["a","abc","abcd"],[1,1,2]);
+assert_checkequal(a,["aa ","aab","aab"]);
+N = 10; a=part("-",ones(1:N));
+assert_checkequal(a,"----------");
+N = 6; pat = "- ";
+a=part(pat, ones(1:N).*.(1:length(pat)));
+assert_checkequal(a,"- - - - - - ");
+a=part(["a string" "another longer one"], $-2:$ );
+assert_checkequal(a,["ing","one"]);
+a=part("Hello world", $:-1:1);
+assert_checkequal(a,"dlrow olleH");
+a=part("Hello world", [ $ 5:6 ]);
+assert_checkequal(a,"do ");
diff --git a/modules/string/tests/unit_tests/part.tst b/modules/string/tests/unit_tests/part.tst
new file mode 100755
index 000000000..211ca930a
--- /dev/null
+++ b/modules/string/tests/unit_tests/part.tst
@@ -0,0 +1,74 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests part
+//===============================
+EMPTY_STR = "";
+BLANK = " ";
+//===============================
+s = part(EMPTY_STR ,[]);
+if (s <> EMPTY_STR ) then pause,end
+//===============================
+// compatibility 4.x
+N = 50;
+s = part(EMPTY_STR ,N);
+if (s <> BLANK) then pause,end
+//===============================
+s = part(["a","abc","abcd"],[1,1,2]);
+if (s <> ["aa","aab","aab"]) then pause,end
+//===============================
+s1 = part(["a","abc","abcd"],[2,4,6]);
+s2 = part(["a","abc","abcd"],[2,4,5]);
+if (s1 <> s2) then pause,end
+if (s1 <> [" ","b","bd"]) then pause,end
+//===============================
+N = 20;
+s = part(" ",ones(1,N));
+if (blanks(N) <> s) then pause,end
+//===============================
+if part("abc",1)<>"a" then pause,end
+if part("abc",[1 1])<>"aa" then pause,end
+if part("abc",[1;1])<>"aa" then pause,end
+if part("abc",[])<>emptystr() then pause,end
+if part("abc",5)<>BLANK then pause,end
+if part("abc",5:6)<>" " then pause,end
+if or(part(["abc";"x"],1)<>["a";"x"]) then pause,end
+if or(part(["abc";"x"],[1,1])<>["aa";"xx"]) then pause,end
+if or(part(["abc";"x"],[1,2])<>["ab";"x "]) then pause,end
+if or(part(["abc";"x"],[1;1])<>["aa";"xx"]) then pause,end
+if or(part(["abc";"x"],[1;2])<>["ab";"x "]) then pause,end
+//===============================
+
+
+
+a=part(["a","abc","abcd"],[1]);
+assert_checkequal(a,["a","a","a"]);
+
+a=part(["a","abc","abcd"],[1,1]);
+assert_checkequal(a,["aa","aa","aa"]);
+
+a=part(["a","abc","abcd"],[1,1,2]);
+assert_checkequal(a,["aa ","aab","aab"]);
+
+N = 10; a=part("-",ones(1:N));
+assert_checkequal(a,"----------");
+
+N = 6; pat = "- ";
+a=part(pat, ones(1:N).*.(1:length(pat)));
+assert_checkequal(a,"- - - - - - ");
+
+a=part(["a string" "another longer one"], $-2:$ );
+assert_checkequal(a,["ing","one"]);
+
+a=part("Hello world", $:-1:1);
+assert_checkequal(a,"dlrow olleH");
+a=part("Hello world", [ $ 5:6 ]);
+assert_checkequal(a,"do ");
+
diff --git a/modules/string/tests/unit_tests/part_UTF_nw.dia.ref b/modules/string/tests/unit_tests/part_UTF_nw.dia.ref
new file mode 100755
index 000000000..555fc7b96
--- /dev/null
+++ b/modules/string/tests/unit_tests/part_UTF_nw.dia.ref
@@ -0,0 +1,13 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012-2012 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+txt = "Angel: Raphaël Archange";
+current_field_length = regexp(txt,"/:\s/","o");
+current_field = part(txt,1:current_field_length-1);
+assert_checkequal(current_field, "Angel");
+disp(txt);
+
+ Angel: Raphaël Archange
diff --git a/modules/string/tests/unit_tests/part_UTF_nw.tst b/modules/string/tests/unit_tests/part_UTF_nw.tst
new file mode 100755
index 000000000..751b1938c
--- /dev/null
+++ b/modules/string/tests/unit_tests/part_UTF_nw.tst
@@ -0,0 +1,14 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012-2012 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+txt = "Angel: Raphaël Archange";
+current_field_length = regexp(txt,"/:\s/","o");
+current_field = part(txt,1:current_field_length-1);
+
+assert_checkequal(current_field, "Angel");
+
+disp(txt); \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/part_UTF_nwni.dia.ref b/modules/string/tests/unit_tests/part_UTF_nwni.dia.ref
new file mode 100755
index 000000000..8e24d6a15
--- /dev/null
+++ b/modules/string/tests/unit_tests/part_UTF_nwni.dia.ref
@@ -0,0 +1,14 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012-2012 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+txt = "Angel: Raphaël Archange";
+current_field_length = regexp(txt,"/:\s/","o");
+current_field = part(txt,1:current_field_length-1);
+assert_checkequal(current_field, "Angel");
+disp(txt);
+
+ Angel: Raphaël Archange
diff --git a/modules/string/tests/unit_tests/part_UTF_nwni.tst b/modules/string/tests/unit_tests/part_UTF_nwni.tst
new file mode 100755
index 000000000..502e799c5
--- /dev/null
+++ b/modules/string/tests/unit_tests/part_UTF_nwni.tst
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012-2012 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+txt = "Angel: Raphaël Archange";
+current_field_length = regexp(txt,"/:\s/","o");
+current_field = part(txt,1:current_field_length-1);
+
+assert_checkequal(current_field, "Angel");
+
+disp(txt); \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/regexp.dia.ref b/modules/string/tests/unit_tests/regexp.dia.ref
new file mode 100755
index 000000000..ecd78e72c
--- /dev/null
+++ b/modules/string/tests/unit_tests/regexp.dia.ref
@@ -0,0 +1,610 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===================================================================
+// unit tests regexp
+//===================================================================
+lf = ascii(10);
+if regexp('abc','/abc/','o') <> 1 then bugmes();quit;end
+ierr = execstr("regexp(''abc'',''/abc/'',''r'');","errcatch");
+if ierr <> 999 then bugmes();quit;end
+t = 'aaa aab aac aad aae';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern,'o');
+if size(start_pos,'*') <> 1 then bugmes();quit;end
+if size(end_pos,'*') <> 1 then bugmes();quit;end
+if start_pos <> 1 then bugmes();quit;end
+if end_pos <> 2 then bugmes();quit;end
+//===================================================================
+if regexp('abc' ,'/abc/' ) <> 1 then bugmes();quit;end
+if regexp('xbc' ,'/abc/' ) <> [] then bugmes();quit;end
+if regexp('axc' ,'/abc/' ) <> [] then bugmes();quit;end
+if regexp('abx' ,'/abc/' ) <> [] then bugmes();quit;end
+if regexp('xabcy' ,'/abc/' ) <> 2 then bugmes();quit;end
+if regexp('ababc' ,'/abc/' ) <> 3 then bugmes();quit;end
+if regexp('abc' ,'/ab*c/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab*bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbc' ,'/ab*bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab*bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/.{1}/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/.{3,4}/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab{0,}bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbc' ,'/ab+bc/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab+bc/' ) <> [] then bugmes();quit;end
+if regexp('abq' ,'/ab+bc/' ) <> [] then bugmes();quit;end
+if regexp('abq' ,'/ab{1,}bc/' ) <> [] then bugmes();quit;end
+if regexp('abbbbc' ,'/ab+bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab{1,}bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab{1,3}bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab{3,4}bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab{4,5}bc/' ) <> [] then bugmes();quit;end
+if regexp('abbc' ,'/ab?bc/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab?bc/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab{0,1}bc/' ) <> 1 then bugmes();quit;end
+if regexp('abbbbc' ,'/ab?bc/' ) <> [] then bugmes();quit;end
+if regexp('abc' ,'/ab?c/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab{0,1}c/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/^abc$/' ) <> 1 then bugmes();quit;end
+if regexp('abcc' ,'/^abc$/' ) <> [] then bugmes();quit;end
+if regexp('abcc' ,'/^abc/' ) <> 1 then bugmes();quit;end
+if regexp('aabc' ,'/^abc$/' ) <> [] then bugmes();quit;end
+if regexp('aabc' ,'/abc$/' ) <> 2 then bugmes();quit;end
+if regexp('aabcd' ,'/abc$/' ) <> [] then bugmes();quit;end
+if regexp('abc' ,'/a.c/' ) <> 1 then bugmes();quit;end
+if regexp('axc' ,'/a.c/' ) <> 1 then bugmes();quit;end
+if regexp('axyzc' ,'/a.*c/' ) <> 1 then bugmes();quit;end
+if regexp('axyzd' ,'/a.*c/' ) <> [] then bugmes();quit;end
+if regexp('abc' ,'/a[bc]d/' ) <> [] then bugmes();quit;end
+if regexp('abd' ,'/a[bc]d/' ) <> 1 then bugmes();quit;end
+if regexp('abd' ,'/a[b-d]e/' ) <> [] then bugmes();quit;end
+if regexp('ace' ,'/a[b-d]e/' ) <> 1 then bugmes();quit;end
+if regexp('aac' ,'/a[b-d]/' ) <> 2 then bugmes();quit;end
+if regexp('a-' ,'/a[-b]/' ) <> 1 then bugmes();quit;end
+if regexp('a-' ,'/a[b-]/' ) <> 1 then bugmes();quit;end
+if regexp('a]' ,'/a]/' ) <> 1 then bugmes();quit;end
+if regexp('a]b' ,'/a[]]b/' ) <> 1 then bugmes();quit;end
+if regexp('aed' ,'/a[^bc]d/' ) <> 1 then bugmes();quit;end
+if regexp('abd' ,'/a[^bc]d/' ) <> [] then bugmes();quit;end
+if regexp('adc' ,'/a[^-b]c/' ) <> 1 then bugmes();quit;end
+if regexp('a-c' ,'/a[^-b]c/' ) <> [] then bugmes();quit;end
+if regexp('a]c' ,'/a[^]b]c/' ) <> [] then bugmes();quit;end
+if regexp('adc' ,'/a[^]b]c/' ) <> 1 then bugmes();quit;end
+if regexp('a-' ,'/\ba\b/' ) <> 1 then bugmes();quit;end
+if regexp('-a' ,'/\ba\b/' ) <> 2 then bugmes();quit;end
+if regexp('-a-' ,'/\ba\b/' ) <> 2 then bugmes();quit;end
+if regexp('xy' ,'/\by\b/' ) <> [] then bugmes();quit;end
+if regexp('yz' ,'/\by\b/' ) <> [] then bugmes();quit;end
+if regexp('xyz' ,'/\by\b/' ) <> [] then bugmes();quit;end
+if regexp('a-' ,'/\Ba\B/' ) <> [] then bugmes();quit;end
+if regexp('-a' ,'/\Ba\B/' ) <> [] then bugmes();quit;end
+if regexp('-a-' ,'/\Ba\B/' ) <> [] then bugmes();quit;end
+if regexp('xy' ,'/\By\b/' ) <> 2 then bugmes();quit;end
+if regexp('xy' ,'/\By\b/' ) <> 2 then bugmes();quit;end
+if regexp('yz' ,'/\by\B/' ) <> 1 then bugmes();quit;end
+if regexp('xyz' ,'/\By\B/' ) <> 2 then bugmes();quit;end
+if regexp('a' ,'/\w/' ) <> 1 then bugmes();quit;end
+if regexp('-' ,'/\w/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/\W/' ) <> [] then bugmes();quit;end
+if regexp('-' ,'/\W/' ) <> 1 then bugmes();quit;end
+if regexp('a b' ,'/a\sb/' ) <> 1 then bugmes();quit;end
+if regexp('a-b' ,'/a\sb/' ) <> [] then bugmes();quit;end
+if regexp('a b' ,'/a\Sb/' ) <> [] then bugmes();quit;end
+if regexp('a-b' ,'/a\Sb/' ) <> 1 then bugmes();quit;end
+if regexp('1' ,'/\d/' ) <> 1 then bugmes();quit;end
+if regexp('-' ,'/\d/' ) <> [] then bugmes();quit;end
+if regexp('1' ,'/\D/' ) <> [] then bugmes();quit;end
+if regexp('-' ,'/\D/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/[\w]/' ) <> 1 then bugmes();quit;end
+if regexp('-' ,'/[\w]/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/[\W]/' ) <> [] then bugmes();quit;end
+if regexp('-' ,'/[\W]/' ) <> 1 then bugmes();quit;end
+if regexp('a b' ,'/a[\s]b/' ) <> 1 then bugmes();quit;end
+if regexp('a-b' ,'/a[\s]b/' ) <> [] then bugmes();quit;end
+if regexp('a b' ,'/a[\S]b/' ) <> [] then bugmes();quit;end
+if regexp('a-b' ,'/a[\S]b/' ) <> 1 then bugmes();quit;end
+if regexp('1' ,'/[\d]/' ) <> 1 then bugmes();quit;end
+if regexp('-' ,'/[\d]/' ) <> [] then bugmes();quit;end
+if regexp('1' ,'/[\D]/' ) <> [] then bugmes();quit;end
+if regexp('-' ,'/[\D]/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/ab|cd/' ) <> 1 then bugmes();quit;end
+if regexp('abcd' ,'/ab|cd/' ) <> 1 then bugmes();quit;end
+if regexp('b' ,'/$b/' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/a\(*b/' ) <> 1 then bugmes();quit;end
+if regexp('a((b' ,'/a\(*b/' ) <> 1 then bugmes();quit;end
+if regexp('aabbabc' ,'/a+b+c/' ) <> 5 then bugmes();quit;end
+if regexp('aabbabc' ,'/a{1,}b{1,}c/' ) <> 5 then bugmes();quit;end
+if regexp('abcabc' ,'/a.+?c/' ) <> 1 then bugmes();quit;end
+if regexp('cde' ,'/[^ab]*/' ) <> 1 then bugmes();quit;end
+if regexp('' ,'/abc/' ) <> [] then bugmes();quit;end
+if regexp('' ,'/a*/' ) <> [] then bugmes();quit;end
+if regexp('e' ,'/a|b|c|d|e/' ) <> 1 then bugmes();quit;end
+if regexp('abcdefg' ,'/abcd*efg/' ) <> 1 then bugmes();quit;end
+if regexp('xabyabbbz' ,'/ab*/' ) <> [2 5] then bugmes();quit;end
+if regexp('xayabbbz' ,'/ab*/' ) <> [2 4] then bugmes();quit;end
+if regexp('hij' ,'/[abhgefdc]ij/' ) <> 1 then bugmes();quit;end
+if regexp('abcde' ,'/^(ab|cd)e/' ) <> [] then bugmes();quit;end
+if regexp('adcdcde' ,'/a[bcd]*dcdcde/' ) <> 1 then bugmes();quit;end
+if regexp('adcdcde' ,'/a[bcd]+dcdcde/' ) <> [] then bugmes();quit;end
+if regexp('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ) <> 1 then bugmes();quit;end
+if regexp('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ) <> [] then bugmes();quit;end
+if regexp('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ) <> [] then bugmes();quit;end
+if regexp('aa' ,'/((((((((((a))))))))))\10/' ) <> 1 then bugmes();quit;end
+if regexp('aa' ,'/((((((((((a))))))))))\041/' ) <> [] then bugmes();quit;end
+if regexp('a!' ,'/((((((((((a))))))))))\041/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/(((((((((a)))))))))/' ) <> 1 then bugmes();quit;end
+if regexp('uh-uh' ,'/multiple words of text/' ) <> [] then bugmes();quit;end
+if regexp('multiple words, yeah' ,'/multiple words/' ) <> 1 then bugmes();quit;end
+if regexp('ab' ,'/[k]/' ) <> [] then bugmes();quit;end
+if regexp('ac' ,'/a[-]?c/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/(a)|\1/' ) <> 1 then bugmes();quit;end
+if regexp('x' ,'/(a)|\1/' ) <> [] then bugmes();quit;end
+if regexp('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ) <> [] then bugmes();quit;end
+if regexp('ABC' ,'/abc/i' ) <> 1 then bugmes();quit;end
+if regexp('XBC' ,'/abc/i' ) <> [] then bugmes();quit;end
+if regexp('AXC' ,'/abc/i' ) <> [] then bugmes();quit;end
+if regexp('ABX' ,'/abc/i' ) <> [] then bugmes();quit;end
+if regexp('XABCY' ,'/abc/i' ) <> 2 then bugmes();quit;end
+if regexp('ABABC' ,'/abc/i' ) <> 3 then bugmes();quit;end
+if regexp('ABC' ,'/ab*c/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab*bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBC' ,'/ab*bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab*?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab{0,}?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBC' ,'/ab+?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab+bc/i' ) <> [] then bugmes();quit;end
+if regexp('ABQ' ,'/ab+bc/i' ) <> [] then bugmes();quit;end
+if regexp('ABQ' ,'/ab{1,}bc/i' ) <> [] then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab+bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab{1,}?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab{1,3}?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab{3,4}?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab{4,5}?bc/i' ) <> [] then bugmes();quit;end
+if regexp('ABBC' ,'/ab??bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab??bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab{0,1}?bc/i' ) <> 1 then bugmes();quit;end
+if regexp('ABBBBC' ,'/ab??bc/i' ) <> [] then bugmes();quit;end
+if regexp('ABC' ,'/ab??c/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab{0,1}?c/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/^abc$/i' ) <> 1 then bugmes();quit;end
+if regexp('ABCC' ,'/^abc$/i' ) <> [] then bugmes();quit;end
+if regexp('ABCC' ,'/^abc/i' ) <> 1 then bugmes();quit;end
+if regexp('AABC' ,'/^abc$/i' ) <> [] then bugmes();quit;end
+if regexp('AABC' ,'/abc$/i' ) <> 2 then bugmes();quit;end
+if regexp('ABC' ,'/a.c/i' ) <> 1 then bugmes();quit;end
+if regexp('AXC' ,'/a.c/i' ) <> 1 then bugmes();quit;end
+if regexp('AXYZC' ,'/a.*?c/i' ) <> 1 then bugmes();quit;end
+if regexp('AXYZD' ,'/a.*c/i' ) <> [] then bugmes();quit;end
+if regexp('ABC' ,'/a[bc]d/i' ) <> [] then bugmes();quit;end
+if regexp('ABD' ,'/a[bc]d/i' ) <> 1 then bugmes();quit;end
+if regexp('ABD' ,'/a[b-d]e/i' ) <> [] then bugmes();quit;end
+if regexp('ACE' ,'/a[b-d]e/i' ) <> 1 then bugmes();quit;end
+if regexp('AAC' ,'/a[b-d]/i' ) <> 2 then bugmes();quit;end
+if regexp('A-' ,'/a[-b]/i' ) <> 1 then bugmes();quit;end
+if regexp('A-' ,'/a[b-]/i' ) <> 1 then bugmes();quit;end
+if regexp('A]' ,'/a]/i' ) <> 1 then bugmes();quit;end
+if regexp('A]B' ,'/a[]]b/i' ) <> 1 then bugmes();quit;end
+if regexp('AED' ,'/a[^bc]d/i' ) <> 1 then bugmes();quit;end
+if regexp('ABD' ,'/a[^bc]d/i' ) <> [] then bugmes();quit;end
+if regexp('ADC' ,'/a[^-b]c/i' ) <> 1 then bugmes();quit;end
+if regexp('A-C' ,'/a[^-b]c/i' ) <> [] then bugmes();quit;end
+if regexp('A]C' ,'/a[^]b]c/i' ) <> [] then bugmes();quit;end
+if regexp('ADC' ,'/a[^]b]c/i' ) <> 1 then bugmes();quit;end
+if regexp('ABC' ,'/ab|cd/i' ) <> 1 then bugmes();quit;end
+if regexp('ABCD' ,'/ab|cd/i' ) <> 1 then bugmes();quit;end
+if regexp('B' ,'/$b/i' ) <> [] then bugmes();quit;end
+if regexp('AB' ,'/a\(*b/i' ) <> 1 then bugmes();quit;end
+if regexp('A((B' ,'/a\(*b/i' ) <> 1 then bugmes();quit;end
+if regexp('AABBABC' ,'/a+b+c/i' ) <> 5 then bugmes();quit;end
+if regexp('AABBABC' ,'/a{1,}b{1,}c/i' ) <> 5 then bugmes();quit;end
+if regexp('ABCABC' ,'/a.+?c/i' ) <> [1 4] then bugmes();quit;end
+if regexp('ABCABC' ,'/a.*?c/i' ) <> 1 then bugmes();quit;end
+if regexp('ABCABC' ,'/a.{0,5}?c/i' ) <> 1 then bugmes();quit;end
+if regexp('CDE' ,'/[^ab]*/i' ) <> 1 then bugmes();quit;end
+if regexp('' ,'/abc/i' ) <> [] then bugmes();quit;end
+if regexp('' ,'/a*/i' ) <> [] then bugmes();quit;end
+if regexp('E' ,'/a|b|c|d|e/i' ) <> 1 then bugmes();quit;end
+if regexp('ABCDEFG' ,'/abcd*efg/i' ) <> 1 then bugmes();quit;end
+if regexp('XABYABBBZ' ,'/ab*/i' ) <> [2 5] then bugmes();quit;end
+if regexp('XAYABBBZ' ,'/ab*/i' ) <> [2 4] then bugmes();quit;end
+if regexp('HIJ' ,'/[abhgefdc]ij/i' ) <> 1 then bugmes();quit;end
+if regexp('ABCDE' ,'/^(ab|cd)e/i' ) <> [] then bugmes();quit;end
+if regexp('ADCDCDE' ,'/a[bcd]*dcdcde/i' ) <> 1 then bugmes();quit;end
+if regexp('ADCDCDE' ,'/a[bcd]+dcdcde/i' ) <> [] then bugmes();quit;end
+if regexp('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ) <> 1 then bugmes();quit;end
+if regexp('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ) <> [] then bugmes();quit;end
+if regexp('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ) <> [] then bugmes();quit;end
+if regexp('AA' ,'/((((((((((a))))))))))\10/i' ) <> 1 then bugmes();quit;end
+if regexp('AA' ,'/((((((((((a))))))))))\041/i' ) <> [] then bugmes();quit;end
+if regexp('A!' ,'/((((((((((a))))))))))\041/i' ) <> 1 then bugmes();quit;end
+if regexp('A' ,'/(((((((((a)))))))))/i' ) <> 1 then bugmes();quit;end
+if regexp('UH-UH' ,'/multiple words of text/i' ) <> [] then bugmes();quit;end
+if regexp('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ) <> 1 then bugmes();quit;end
+if regexp('AB' ,'/[k]/i' ) <> [] then bugmes();quit;end
+if regexp('AC' ,'/a[-]?c/i' ) <> 1 then bugmes();quit;end
+if regexp('abad' ,'/a(?!b)./' ) <> 3 then bugmes();quit;end
+if regexp('abad' ,'/a(?=d)./' ) <> 3 then bugmes();quit;end
+if regexp('abad' ,'/a(?=c|d)./' ) <> 3 then bugmes();quit;end
+if regexp('<&OUT' ,'/^[<>]&/' ) <> 1 then bugmes();quit;end
+if regexp('aaaaaaaaa' ,'/^(a\1?){4}$/' ) <> [] then bugmes();quit;end
+if regexp('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ) <> [] then bugmes();quit;end
+if regexp('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ) <> [] then bugmes();quit;end
+if regexp('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/(?<=a)b/' ) <> 2 then bugmes();quit;end
+if regexp('cb' ,'/(?<=a)b/' ) <> [] then bugmes();quit;end
+if regexp('b' ,'/(?<=a)b/' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/(?<!c)b/' ) <> 2 then bugmes();quit;end
+if regexp('cb' ,'/(?<!c)b/' ) <> [] then bugmes();quit;end
+if regexp('b' ,'/(?<!c)b/' ) <> 1 then bugmes();quit;end
+if regexp('b' ,'/(?<!c)b/' ) <> 1 then bugmes();quit;end
+if regexp('aba' ,'/(?:..)*a/' ) <> 1 then bugmes();quit;end
+if regexp('aba' ,'/(?:..)*?a/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/^(?:b|a(?=(.)))*\1/' ) <> 1 then bugmes();quit;end
+if regexp('ab' ,'/(?:(?i)a)b/' ) <> 1 then bugmes();quit;end
+if regexp('Ab' ,'/(?:(?i)a)b/' ) <> 1 then bugmes();quit;end
+if regexp('aB' ,'/(?:(?i)a)b/' ) <> [] then bugmes();quit;end
+if regexp('aB' ,'/((?i)a)b/' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/(?i:a)b/' ) <> 1 then bugmes();quit;end
+if regexp('Ab' ,'/(?i:a)b/' ) <> 1 then bugmes();quit;end
+if regexp('aB' ,'/(?i:a)b/' ) <> [] then bugmes();quit;end
+if regexp('aB' ,'/((?i:a))b/' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/(?:(?-i)a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('aB' ,'/(?:(?-i)a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('Ab' ,'/(?:(?-i)a)b/i' ) <> [] then bugmes();quit;end
+if regexp('Ab' ,'/((?-i)a)b/i' ) <> [] then bugmes();quit;end
+if regexp('aB' ,'/(?:(?-i)a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('AB' ,'/(?:(?-i)a)b/i' ) <> [] then bugmes();quit;end
+if regexp('AB' ,'/((?-i)a)b/i' ) <> [] then bugmes();quit;end
+if regexp('ab' ,'/(?-i:a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('aB' ,'/(?-i:a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('Ab' ,'/(?-i:a)b/i' ) <> [] then bugmes();quit;end
+if regexp('Ab' ,'/((?-i:a))b/i' ) <> [] then bugmes();quit;end
+if regexp('aB' ,'/(?-i:a)b/i' ) <> 1 then bugmes();quit;end
+if regexp('AB' ,'/(?-i:a)b/i' ) <> [] then bugmes();quit;end
+if regexp('AB' ,'/((?-i:a))b/i' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'B' ,'/((?-i:a.))b/i' ) <> [] then bugmes();quit;end
+if regexp('B'+lf+'B' ,'/((?s-i:a.))b/i' ) <> [] then bugmes();quit;end
+if regexp('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/') <> 1 then bugmes();quit;end
+if regexp('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/') <> 1 then bugmes();quit;end
+if regexp('foobar1234baz' ,'/foo\w*\d{4}baz/' ) <> 1 then bugmes();quit;end
+if regexp('x~~' ,'/x(~~)*(?:(?:F)?)?/' ) <> 1 then bugmes();quit;end
+if regexp('aaac' ,'/^a(?#xxx){3}c/' ) <> 1 then bugmes();quit;end
+if regexp('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ) <> 1 then bugmes();quit;end
+if regexp('dbcb' ,'/(?<![cd])b/' ) <> [] then bugmes();quit;end
+if regexp('dbaacb' ,'/(?<![cd])[ab]/' ) <> [3 4] then bugmes();quit;end
+if regexp('dbcb' ,'/(?<!(c|d))b/' ) <> [] then bugmes();quit;end
+if regexp('dbaacb' ,'/(?<!(c|d))[ab]/' ) <> [3 4] then bugmes();quit;end
+if regexp('cdaccb' ,'/(?<!cd)[ab]/' ) <> 6 then bugmes();quit;end
+if regexp('a--' ,'/^(?:a?b?)*$/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/(?m)^b/' ) <> [3 4] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf+'c'+lf ,'/^b/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/(x)?(?(1)a|b)/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/(x)?(?(1)b|a)/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/()?(?(1)b|a)/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/()(?(1)b|a)/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/()?(?(1)a|b)/' ) <> 1 then bugmes();quit;end
+if regexp('blah)' ,'/^(\()?blah(?(1)(\)))$/' ) <> [] then bugmes();quit;end
+if regexp('(blah' ,'/^(\()?blah(?(1)(\)))$/' ) <> [] then bugmes();quit;end
+if regexp('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ) <> [] then bugmes();quit;end
+if regexp('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/(?(?!a)a|b)/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/(?(?!a)b|a)/' ) <> 1 then bugmes();quit;end
+if regexp('a' ,'/(?(?=a)b|a)/' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/(?(?=a)a|b)/' ) <> 1 then bugmes();quit;end
+if regexp('aaab' ,'/^(?=(a+?))\1ab/' ) <> [] then bugmes();quit;end
+if regexp('aaab' ,'/^(?=(a+?))\1ab/' ) <> [] then bugmes();quit;end
+if regexp('abcd:' ,'/([\w:]+::)?(\w+)$/' ) <> [] then bugmes();quit;end
+if regexp('abcd:' ,'/([\w:]+::)?(\w+)$/' ) <> [] then bugmes();quit;end
+if regexp('aaab' ,'/(>a+)ab/' ) <> [] then bugmes();quit;end
+if regexp('aaab' ,'/(?>a+)b/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/[a[:]b[:c]/' ) <> 1 then bugmes();quit;end
+if regexp('abc' ,'/[a[:]b[:c]/' ) <> 1 then bugmes();quit;end
+if regexp('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ) <> 3 then bugmes();quit;end
+//===================================================================
+if regexp('a'+lf+'b'+lf ,'/a\Z/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/a\z/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/a$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'a'+lf ,'/a\z/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/a\Z/m' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/a\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'a'+lf ,'/a\z/m' ) <> [] then bugmes();quit;end
+if regexp('aa'+lf+'b'+lf ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('aa'+lf+'b'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('aa'+lf+'b'+lf ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'aa'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('aa'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('aa'+lf+'b'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'aa'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa$/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/aa$/m' ) <> [] then bugmes();quit;end
+if regexp('ab'+lf+'b'+lf ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('ab'+lf+'b'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('ab'+lf+'b'+lf ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ab'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('ab'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ab'+lf+'b'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ab'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab$/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/ab$/m' ) <> [] then bugmes();quit;end
+if regexp('abb'+lf+'b'+lf ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('abb'+lf+'b'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('abb'+lf+'b'+lf ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'abb'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('abb'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('abb'+lf+'b'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'abb'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('ac'+lf+'b'+lf ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac'+lf ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ac' ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb\Z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb\z/' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb$/' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('ca'+lf+'b'+lf ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca'+lf ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb\Z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb\z/m' ) <> [] then bugmes();quit;end
+if regexp('b'+lf+'ca' ,'/abb$/m' ) <> [] then bugmes();quit;end
+if regexp('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/') <> [] then bugmes();quit;end
+if regexp('foo.bart' ,'/foo.bart/' ) <> 1 then bugmes();quit;end
+if regexp('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ) <> 6 then bugmes();quit;end
+if regexp('xxxtt' ,'/tt+$/' ) <> 4 then bugmes();quit;end
+if regexp('aaaXbX' ,'/\GX.*X/' ) <> [] then bugmes();quit;end
+if regexp('Changes' ,'/\.c(pp|xx|c)?$/i' ) <> [] then bugmes();quit;end
+if regexp('IO.c' ,'/\.c(pp|xx|c)?$/i' ) <> 3 then bugmes();quit;end
+if regexp('C:/' ,'/^([a-z]:)/' ) <> [] then bugmes();quit;end
+if regexp(lf+'x aa' ,'/^\S\s+aa$/m' ) <> 2 then bugmes();quit;end
+[start_pos, end_pos, match_str] = regexp(lf+'x aa' ,'/^\S\s+aa$/m' );
+if (start_pos <> 2) then bugmes();quit;end
+if (end_pos <> 5) then bugmes();quit;end
+if (match_str <> 'x aa') then bugmes();quit;end
+if regexp('ab' ,'/(^|a)b/' ) <> 1 then bugmes();quit;end
+if regexp('abcab' ,'/(\w)?(abc)\1b/' ) <> [] then bugmes();quit;end
+if regexp('a,b,c' ,'/^(?:.,){2}c/' ) <> 1 then bugmes();quit;end
+if regexp('a,b,c' ,'/^(?:[^,]*,){2}c/' ) <> 1 then bugmes();quit;end
+if regexp('' ,'/(?i)/' ) <> [] then bugmes();quit;end
+if regexp('a'+lf+'xb'+lf ,'/(?!\A)x/m' ) <> 3 then bugmes();quit;end
+if regexp('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ) <> 5 then bugmes();quit;end
+if regexp('a' ,'/^(a)?(?(1)a|b)+$/' ) <> [] then bugmes();quit;end
+if regexp('x1' ,'/^(0+)?(?:x(1))?/' ) <> 1 then bugmes();quit;end
+if regexp('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/') <> 1 then bugmes();quit;end
+if regexp('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ) <> 1 then bugmes();quit;end
+if regexp('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ) <> 1 then bugmes();quit;end
+if regexp('a'+lf+'b'+lf ,'/b\s^/m' ) <> [] then bugmes();quit;end
+if regexp('a' ,'/\ba/' ) <> 1 then bugmes();quit;end
+if regexp('AbCd' ,'/ab(?i)cd/' ) <> [] then bugmes();quit;end
+if regexp('abCd' ,'/ab(?i)cd/' ) <> 1 then bugmes();quit;end
+if regexp('Oo' ,'/^(o)(?!.*\1)/i' ) <> [] then bugmes();quit;end
+if regexp('2' ,'/2(]*)?$\1/' ) <> 1 then bugmes();quit;end
+if regexp('......abef' ,'/.*a(?!(b|cd)*e).*f/' ) <> [] then bugmes();quit;end
+if regexp('fools' ,'/(foo|fool|x.|money|parted)$/' ) <> [] then bugmes();quit;end
+if regexp('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ) <> [] then bugmes();quit;end
+if regexp('fools' ,'/(foo|fool|money|parted)$/' ) <> [] then bugmes();quit;end
+//===================================================================
+if regexp('scilab-5.0' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then bugmes();quit;end
+if regexp('scilab-5.0.1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then bugmes();quit;end
+if regexp('scilab-5.0-alpha-1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then bugmes();quit;end
+if regexp('scilab-5.0-alpha1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then bugmes();quit;end
+if regexp('scilab-5.0-rc1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then bugmes();quit;end
+if regexp('scilab-5.0-rc-1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then bugmes();quit;end
+if regexp('scilab-SE-trunk-27490' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then bugmes();quit;end
+//===================================================================
+// Chinese
+str = '世界您好';
+[s,e,m] = regexp(str,'/您好$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^世界/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/世界$/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/您好$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^您好/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/界您/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/界_您/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+//===================================================================
+// Russian
+str = 'привет мир';
+[s,e,m] = regexp(str,'/^привет/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/привет$/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/мир$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^мир/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/вет\sм/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/вет_м/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+//===================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+[s,e,m] = regexp(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+//===================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+[s,e,m] = regexp(str,'/^丑丞串乃之乎也云亘亙些亦/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/丑丞串乃之乎也云亘亙些亦$/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/凰凱函刹劉劫勁勃$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^凰凱函刹劉劫勁勃/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/亨亮仔伊伎伍伽佃佑伶侃/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/亨亮仔伊_伎伍伽佃佑伶侃/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+//===================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[s,e,m] = regexp(str,'/^มกระดุกกร/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/มกระดุกกร$/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/กกระดิก$/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/^กกระดิก/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+[s,e,m] = regexp(str,'/ดุกก/');
+if part(str,s:e) <> m then bugmes();quit;end
+[s,e,m] = regexp(str,'/ดุก_ก/');
+if s <> [] then bugmes();quit;end
+if e <> [] then bugmes();quit;end
+if m <> '' then bugmes();quit;end
+//===================================================================
+// Subpatterns
+piString="3.14";
+[a,b,c,piStringSplit]=regexp(piString,"/(\d+)\.(\d+)/");
+assert_checkequal(piStringSplit(1),"3");
+assert_checkequal(piStringSplit(2),"14");
+[a,b,c,d]=regexp('xabyabbbz','/ab(.*)b(.*)/');
+assert_checkequal(size(d), [1, 2]);
+// get host name from URL
+myURL="http://www.scilab.org/download/";
+[a,b,c,d]=regexp(myURL,'@^(?:http://)?([^/]+)@i');
+assert_checkequal(d,"www.scilab.org");
+str='foobar: 2012';
+// Using named subpatterns
+[a,b,c,d]=regexp(str,'/(?P<name>\w+): (?P<digit>\d+)/');
+assert_checkequal(d(1),"foobar");
+assert_checkequal(d(2),"2012");
diff --git a/modules/string/tests/unit_tests/regexp.tst b/modules/string/tests/unit_tests/regexp.tst
new file mode 100755
index 000000000..d7c014b0f
--- /dev/null
+++ b/modules/string/tests/unit_tests/regexp.tst
@@ -0,0 +1,646 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===================================================================
+// unit tests regexp
+//===================================================================
+lf = ascii(10);
+if regexp('abc','/abc/','o') <> 1 then pause,end
+ierr = execstr("regexp(''abc'',''/abc/'',''r'');","errcatch");
+if ierr <> 999 then pause,end
+t = 'aaa aab aac aad aae';
+pattern = '/aa/';
+[start_pos, end_pos, match_str] = regexp(t,pattern,'o');
+if size(start_pos,'*') <> 1 then pause,end
+if size(end_pos,'*') <> 1 then pause,end
+if start_pos <> 1 then pause,end
+if end_pos <> 2 then pause,end
+//===================================================================
+if regexp('abc' ,'/abc/' ) <> 1 then pause,end
+if regexp('xbc' ,'/abc/' ) <> [] then pause,end
+if regexp('axc' ,'/abc/' ) <> [] then pause,end
+if regexp('abx' ,'/abc/' ) <> [] then pause,end
+if regexp('xabcy' ,'/abc/' ) <> 2 then pause,end
+if regexp('ababc' ,'/abc/' ) <> 3 then pause,end
+if regexp('abc' ,'/ab*c/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab*bc/' ) <> 1 then pause,end
+if regexp('abbc' ,'/ab*bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab*bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/.{1}/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/.{3,4}/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab{0,}bc/' ) <> 1 then pause,end
+if regexp('abbc' ,'/ab+bc/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab+bc/' ) <> [] then pause,end
+if regexp('abq' ,'/ab+bc/' ) <> [] then pause,end
+if regexp('abq' ,'/ab{1,}bc/' ) <> [] then pause,end
+if regexp('abbbbc' ,'/ab+bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab{1,}bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab{1,3}bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab{3,4}bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab{4,5}bc/' ) <> [] then pause,end
+if regexp('abbc' ,'/ab?bc/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab?bc/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab{0,1}bc/' ) <> 1 then pause,end
+if regexp('abbbbc' ,'/ab?bc/' ) <> [] then pause,end
+if regexp('abc' ,'/ab?c/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab{0,1}c/' ) <> 1 then pause,end
+if regexp('abc' ,'/^abc$/' ) <> 1 then pause,end
+if regexp('abcc' ,'/^abc$/' ) <> [] then pause,end
+if regexp('abcc' ,'/^abc/' ) <> 1 then pause,end
+if regexp('aabc' ,'/^abc$/' ) <> [] then pause,end
+if regexp('aabc' ,'/abc$/' ) <> 2 then pause,end
+if regexp('aabcd' ,'/abc$/' ) <> [] then pause,end
+if regexp('abc' ,'/a.c/' ) <> 1 then pause,end
+if regexp('axc' ,'/a.c/' ) <> 1 then pause,end
+if regexp('axyzc' ,'/a.*c/' ) <> 1 then pause,end
+if regexp('axyzd' ,'/a.*c/' ) <> [] then pause,end
+if regexp('abc' ,'/a[bc]d/' ) <> [] then pause,end
+if regexp('abd' ,'/a[bc]d/' ) <> 1 then pause,end
+if regexp('abd' ,'/a[b-d]e/' ) <> [] then pause,end
+if regexp('ace' ,'/a[b-d]e/' ) <> 1 then pause,end
+if regexp('aac' ,'/a[b-d]/' ) <> 2 then pause,end
+if regexp('a-' ,'/a[-b]/' ) <> 1 then pause,end
+if regexp('a-' ,'/a[b-]/' ) <> 1 then pause,end
+if regexp('a]' ,'/a]/' ) <> 1 then pause,end
+if regexp('a]b' ,'/a[]]b/' ) <> 1 then pause,end
+if regexp('aed' ,'/a[^bc]d/' ) <> 1 then pause,end
+if regexp('abd' ,'/a[^bc]d/' ) <> [] then pause,end
+if regexp('adc' ,'/a[^-b]c/' ) <> 1 then pause,end
+if regexp('a-c' ,'/a[^-b]c/' ) <> [] then pause,end
+if regexp('a]c' ,'/a[^]b]c/' ) <> [] then pause,end
+if regexp('adc' ,'/a[^]b]c/' ) <> 1 then pause,end
+if regexp('a-' ,'/\ba\b/' ) <> 1 then pause,end
+if regexp('-a' ,'/\ba\b/' ) <> 2 then pause,end
+if regexp('-a-' ,'/\ba\b/' ) <> 2 then pause,end
+if regexp('xy' ,'/\by\b/' ) <> [] then pause,end
+if regexp('yz' ,'/\by\b/' ) <> [] then pause,end
+if regexp('xyz' ,'/\by\b/' ) <> [] then pause,end
+if regexp('a-' ,'/\Ba\B/' ) <> [] then pause,end
+if regexp('-a' ,'/\Ba\B/' ) <> [] then pause,end
+if regexp('-a-' ,'/\Ba\B/' ) <> [] then pause,end
+if regexp('xy' ,'/\By\b/' ) <> 2 then pause,end
+if regexp('xy' ,'/\By\b/' ) <> 2 then pause,end
+if regexp('yz' ,'/\by\B/' ) <> 1 then pause,end
+if regexp('xyz' ,'/\By\B/' ) <> 2 then pause,end
+if regexp('a' ,'/\w/' ) <> 1 then pause,end
+if regexp('-' ,'/\w/' ) <> [] then pause,end
+if regexp('a' ,'/\W/' ) <> [] then pause,end
+if regexp('-' ,'/\W/' ) <> 1 then pause,end
+if regexp('a b' ,'/a\sb/' ) <> 1 then pause,end
+if regexp('a-b' ,'/a\sb/' ) <> [] then pause,end
+if regexp('a b' ,'/a\Sb/' ) <> [] then pause,end
+if regexp('a-b' ,'/a\Sb/' ) <> 1 then pause,end
+if regexp('1' ,'/\d/' ) <> 1 then pause,end
+if regexp('-' ,'/\d/' ) <> [] then pause,end
+if regexp('1' ,'/\D/' ) <> [] then pause,end
+if regexp('-' ,'/\D/' ) <> 1 then pause,end
+if regexp('a' ,'/[\w]/' ) <> 1 then pause,end
+if regexp('-' ,'/[\w]/' ) <> [] then pause,end
+if regexp('a' ,'/[\W]/' ) <> [] then pause,end
+if regexp('-' ,'/[\W]/' ) <> 1 then pause,end
+if regexp('a b' ,'/a[\s]b/' ) <> 1 then pause,end
+if regexp('a-b' ,'/a[\s]b/' ) <> [] then pause,end
+if regexp('a b' ,'/a[\S]b/' ) <> [] then pause,end
+if regexp('a-b' ,'/a[\S]b/' ) <> 1 then pause,end
+if regexp('1' ,'/[\d]/' ) <> 1 then pause,end
+if regexp('-' ,'/[\d]/' ) <> [] then pause,end
+if regexp('1' ,'/[\D]/' ) <> [] then pause,end
+if regexp('-' ,'/[\D]/' ) <> 1 then pause,end
+if regexp('abc' ,'/ab|cd/' ) <> 1 then pause,end
+if regexp('abcd' ,'/ab|cd/' ) <> 1 then pause,end
+if regexp('b' ,'/$b/' ) <> [] then pause,end
+if regexp('ab' ,'/a\(*b/' ) <> 1 then pause,end
+if regexp('a((b' ,'/a\(*b/' ) <> 1 then pause,end
+if regexp('aabbabc' ,'/a+b+c/' ) <> 5 then pause,end
+if regexp('aabbabc' ,'/a{1,}b{1,}c/' ) <> 5 then pause,end
+if regexp('abcabc' ,'/a.+?c/' ) <> 1 then pause,end
+if regexp('cde' ,'/[^ab]*/' ) <> 1 then pause,end
+if regexp('' ,'/abc/' ) <> [] then pause,end
+if regexp('' ,'/a*/' ) <> [] then pause,end
+if regexp('e' ,'/a|b|c|d|e/' ) <> 1 then pause,end
+if regexp('abcdefg' ,'/abcd*efg/' ) <> 1 then pause,end
+if regexp('xabyabbbz' ,'/ab*/' ) <> [2 5] then pause,end
+if regexp('xayabbbz' ,'/ab*/' ) <> [2 4] then pause,end
+if regexp('hij' ,'/[abhgefdc]ij/' ) <> 1 then pause,end
+if regexp('abcde' ,'/^(ab|cd)e/' ) <> [] then pause,end
+if regexp('adcdcde' ,'/a[bcd]*dcdcde/' ) <> 1 then pause,end
+if regexp('adcdcde' ,'/a[bcd]+dcdcde/' ) <> [] then pause,end
+if regexp('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ) <> 1 then pause,end
+if regexp('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ) <> [] then pause,end
+if regexp('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ) <> [] then pause,end
+if regexp('aa' ,'/((((((((((a))))))))))\10/' ) <> 1 then pause,end
+if regexp('aa' ,'/((((((((((a))))))))))\041/' ) <> [] then pause,end
+if regexp('a!' ,'/((((((((((a))))))))))\041/' ) <> 1 then pause,end
+if regexp('a' ,'/(((((((((a)))))))))/' ) <> 1 then pause,end
+if regexp('uh-uh' ,'/multiple words of text/' ) <> [] then pause,end
+if regexp('multiple words, yeah' ,'/multiple words/' ) <> 1 then pause,end
+if regexp('ab' ,'/[k]/' ) <> [] then pause,end
+if regexp('ac' ,'/a[-]?c/' ) <> 1 then pause,end
+if regexp('a' ,'/(a)|\1/' ) <> 1 then pause,end
+if regexp('x' ,'/(a)|\1/' ) <> [] then pause,end
+if regexp('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ) <> [] then pause,end
+if regexp('ABC' ,'/abc/i' ) <> 1 then pause,end
+if regexp('XBC' ,'/abc/i' ) <> [] then pause,end
+if regexp('AXC' ,'/abc/i' ) <> [] then pause,end
+if regexp('ABX' ,'/abc/i' ) <> [] then pause,end
+if regexp('XABCY' ,'/abc/i' ) <> 2 then pause,end
+if regexp('ABABC' ,'/abc/i' ) <> 3 then pause,end
+if regexp('ABC' ,'/ab*c/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab*bc/i' ) <> 1 then pause,end
+if regexp('ABBC' ,'/ab*bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab*?bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab{0,}?bc/i' ) <> 1 then pause,end
+if regexp('ABBC' ,'/ab+?bc/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab+bc/i' ) <> [] then pause,end
+if regexp('ABQ' ,'/ab+bc/i' ) <> [] then pause,end
+if regexp('ABQ' ,'/ab{1,}bc/i' ) <> [] then pause,end
+if regexp('ABBBBC' ,'/ab+bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab{1,}?bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab{1,3}?bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab{3,4}?bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab{4,5}?bc/i' ) <> [] then pause,end
+if regexp('ABBC' ,'/ab??bc/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab??bc/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab{0,1}?bc/i' ) <> 1 then pause,end
+if regexp('ABBBBC' ,'/ab??bc/i' ) <> [] then pause,end
+if regexp('ABC' ,'/ab??c/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab{0,1}?c/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/^abc$/i' ) <> 1 then pause,end
+if regexp('ABCC' ,'/^abc$/i' ) <> [] then pause,end
+if regexp('ABCC' ,'/^abc/i' ) <> 1 then pause,end
+if regexp('AABC' ,'/^abc$/i' ) <> [] then pause,end
+if regexp('AABC' ,'/abc$/i' ) <> 2 then pause,end
+if regexp('ABC' ,'/a.c/i' ) <> 1 then pause,end
+if regexp('AXC' ,'/a.c/i' ) <> 1 then pause,end
+if regexp('AXYZC' ,'/a.*?c/i' ) <> 1 then pause,end
+if regexp('AXYZD' ,'/a.*c/i' ) <> [] then pause,end
+if regexp('ABC' ,'/a[bc]d/i' ) <> [] then pause,end
+if regexp('ABD' ,'/a[bc]d/i' ) <> 1 then pause,end
+if regexp('ABD' ,'/a[b-d]e/i' ) <> [] then pause,end
+if regexp('ACE' ,'/a[b-d]e/i' ) <> 1 then pause,end
+if regexp('AAC' ,'/a[b-d]/i' ) <> 2 then pause,end
+if regexp('A-' ,'/a[-b]/i' ) <> 1 then pause,end
+if regexp('A-' ,'/a[b-]/i' ) <> 1 then pause,end
+if regexp('A]' ,'/a]/i' ) <> 1 then pause,end
+if regexp('A]B' ,'/a[]]b/i' ) <> 1 then pause,end
+if regexp('AED' ,'/a[^bc]d/i' ) <> 1 then pause,end
+if regexp('ABD' ,'/a[^bc]d/i' ) <> [] then pause,end
+if regexp('ADC' ,'/a[^-b]c/i' ) <> 1 then pause,end
+if regexp('A-C' ,'/a[^-b]c/i' ) <> [] then pause,end
+if regexp('A]C' ,'/a[^]b]c/i' ) <> [] then pause,end
+if regexp('ADC' ,'/a[^]b]c/i' ) <> 1 then pause,end
+if regexp('ABC' ,'/ab|cd/i' ) <> 1 then pause,end
+if regexp('ABCD' ,'/ab|cd/i' ) <> 1 then pause,end
+if regexp('B' ,'/$b/i' ) <> [] then pause,end
+if regexp('AB' ,'/a\(*b/i' ) <> 1 then pause,end
+if regexp('A((B' ,'/a\(*b/i' ) <> 1 then pause,end
+if regexp('AABBABC' ,'/a+b+c/i' ) <> 5 then pause,end
+if regexp('AABBABC' ,'/a{1,}b{1,}c/i' ) <> 5 then pause,end
+if regexp('ABCABC' ,'/a.+?c/i' ) <> [1 4] then pause,end
+if regexp('ABCABC' ,'/a.*?c/i' ) <> 1 then pause,end
+if regexp('ABCABC' ,'/a.{0,5}?c/i' ) <> 1 then pause,end
+if regexp('CDE' ,'/[^ab]*/i' ) <> 1 then pause,end
+if regexp('' ,'/abc/i' ) <> [] then pause,end
+if regexp('' ,'/a*/i' ) <> [] then pause,end
+if regexp('E' ,'/a|b|c|d|e/i' ) <> 1 then pause,end
+if regexp('ABCDEFG' ,'/abcd*efg/i' ) <> 1 then pause,end
+if regexp('XABYABBBZ' ,'/ab*/i' ) <> [2 5] then pause,end
+if regexp('XAYABBBZ' ,'/ab*/i' ) <> [2 4] then pause,end
+if regexp('HIJ' ,'/[abhgefdc]ij/i' ) <> 1 then pause,end
+if regexp('ABCDE' ,'/^(ab|cd)e/i' ) <> [] then pause,end
+if regexp('ADCDCDE' ,'/a[bcd]*dcdcde/i' ) <> 1 then pause,end
+if regexp('ADCDCDE' ,'/a[bcd]+dcdcde/i' ) <> [] then pause,end
+if regexp('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ) <> 1 then pause,end
+if regexp('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ) <> [] then pause,end
+if regexp('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ) <> [] then pause,end
+if regexp('AA' ,'/((((((((((a))))))))))\10/i' ) <> 1 then pause,end
+if regexp('AA' ,'/((((((((((a))))))))))\041/i' ) <> [] then pause,end
+if regexp('A!' ,'/((((((((((a))))))))))\041/i' ) <> 1 then pause,end
+if regexp('A' ,'/(((((((((a)))))))))/i' ) <> 1 then pause,end
+if regexp('UH-UH' ,'/multiple words of text/i' ) <> [] then pause,end
+if regexp('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ) <> 1 then pause,end
+if regexp('AB' ,'/[k]/i' ) <> [] then pause,end
+if regexp('AC' ,'/a[-]?c/i' ) <> 1 then pause,end
+if regexp('abad' ,'/a(?!b)./' ) <> 3 then pause,end
+if regexp('abad' ,'/a(?=d)./' ) <> 3 then pause,end
+if regexp('abad' ,'/a(?=c|d)./' ) <> 3 then pause,end
+if regexp('<&OUT' ,'/^[<>]&/' ) <> 1 then pause,end
+if regexp('aaaaaaaaa' ,'/^(a\1?){4}$/' ) <> [] then pause,end
+if regexp('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ) <> [] then pause,end
+if regexp('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ) <> [] then pause,end
+if regexp('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ) <> [] then pause,end
+if regexp('ab' ,'/(?<=a)b/' ) <> 2 then pause,end
+if regexp('cb' ,'/(?<=a)b/' ) <> [] then pause,end
+if regexp('b' ,'/(?<=a)b/' ) <> [] then pause,end
+if regexp('ab' ,'/(?<!c)b/' ) <> 2 then pause,end
+if regexp('cb' ,'/(?<!c)b/' ) <> [] then pause,end
+if regexp('b' ,'/(?<!c)b/' ) <> 1 then pause,end
+if regexp('b' ,'/(?<!c)b/' ) <> 1 then pause,end
+if regexp('aba' ,'/(?:..)*a/' ) <> 1 then pause,end
+if regexp('aba' ,'/(?:..)*?a/' ) <> 1 then pause,end
+if regexp('abc' ,'/^(?:b|a(?=(.)))*\1/' ) <> 1 then pause,end
+if regexp('ab' ,'/(?:(?i)a)b/' ) <> 1 then pause,end
+if regexp('Ab' ,'/(?:(?i)a)b/' ) <> 1 then pause,end
+if regexp('aB' ,'/(?:(?i)a)b/' ) <> [] then pause,end
+if regexp('aB' ,'/((?i)a)b/' ) <> [] then pause,end
+if regexp('ab' ,'/(?i:a)b/' ) <> 1 then pause,end
+if regexp('Ab' ,'/(?i:a)b/' ) <> 1 then pause,end
+if regexp('aB' ,'/(?i:a)b/' ) <> [] then pause,end
+if regexp('aB' ,'/((?i:a))b/' ) <> [] then pause,end
+if regexp('ab' ,'/(?:(?-i)a)b/i' ) <> 1 then pause,end
+if regexp('aB' ,'/(?:(?-i)a)b/i' ) <> 1 then pause,end
+if regexp('Ab' ,'/(?:(?-i)a)b/i' ) <> [] then pause,end
+if regexp('Ab' ,'/((?-i)a)b/i' ) <> [] then pause,end
+if regexp('aB' ,'/(?:(?-i)a)b/i' ) <> 1 then pause,end
+if regexp('AB' ,'/(?:(?-i)a)b/i' ) <> [] then pause,end
+if regexp('AB' ,'/((?-i)a)b/i' ) <> [] then pause,end
+if regexp('ab' ,'/(?-i:a)b/i' ) <> 1 then pause,end
+if regexp('aB' ,'/(?-i:a)b/i' ) <> 1 then pause,end
+if regexp('Ab' ,'/(?-i:a)b/i' ) <> [] then pause,end
+if regexp('Ab' ,'/((?-i:a))b/i' ) <> [] then pause,end
+if regexp('aB' ,'/(?-i:a)b/i' ) <> 1 then pause,end
+if regexp('AB' ,'/(?-i:a)b/i' ) <> [] then pause,end
+if regexp('AB' ,'/((?-i:a))b/i' ) <> [] then pause,end
+if regexp('a'+lf+'B' ,'/((?-i:a.))b/i' ) <> [] then pause,end
+if regexp('B'+lf+'B' ,'/((?s-i:a.))b/i' ) <> [] then pause,end
+if regexp('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/') <> 1 then pause,end
+if regexp('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/') <> 1 then pause,end
+if regexp('foobar1234baz' ,'/foo\w*\d{4}baz/' ) <> 1 then pause,end
+if regexp('x~~' ,'/x(~~)*(?:(?:F)?)?/' ) <> 1 then pause,end
+if regexp('aaac' ,'/^a(?#xxx){3}c/' ) <> 1 then pause,end
+if regexp('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ) <> 1 then pause,end
+if regexp('dbcb' ,'/(?<![cd])b/' ) <> [] then pause,end
+if regexp('dbaacb' ,'/(?<![cd])[ab]/' ) <> [3 4] then pause,end
+if regexp('dbcb' ,'/(?<!(c|d))b/' ) <> [] then pause,end
+if regexp('dbaacb' ,'/(?<!(c|d))[ab]/' ) <> [3 4] then pause,end
+if regexp('cdaccb' ,'/(?<!cd)[ab]/' ) <> 6 then pause,end
+if regexp('a--' ,'/^(?:a?b?)*$/' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf ,'/(?m)^b/' ) <> [3 4] then pause,end
+if regexp('a'+lf+'b'+lf+'c'+lf ,'/^b/' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ) <> [] then pause,end
+if regexp('a' ,'/(x)?(?(1)a|b)/' ) <> [] then pause,end
+if regexp('a' ,'/(x)?(?(1)b|a)/' ) <> 1 then pause,end
+if regexp('a' ,'/()?(?(1)b|a)/' ) <> 1 then pause,end
+if regexp('a' ,'/()(?(1)b|a)/' ) <> [] then pause,end
+if regexp('a' ,'/()?(?(1)a|b)/' ) <> 1 then pause,end
+if regexp('blah)' ,'/^(\()?blah(?(1)(\)))$/' ) <> [] then pause,end
+if regexp('(blah' ,'/^(\()?blah(?(1)(\)))$/' ) <> [] then pause,end
+if regexp('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ) <> [] then pause,end
+if regexp('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ) <> [] then pause,end
+if regexp('a' ,'/(?(?!a)a|b)/' ) <> [] then pause,end
+if regexp('a' ,'/(?(?!a)b|a)/' ) <> 1 then pause,end
+if regexp('a' ,'/(?(?=a)b|a)/' ) <> [] then pause,end
+if regexp('a' ,'/(?(?=a)a|b)/' ) <> 1 then pause,end
+if regexp('aaab' ,'/^(?=(a+?))\1ab/' ) <> [] then pause,end
+if regexp('aaab' ,'/^(?=(a+?))\1ab/' ) <> [] then pause,end
+if regexp('abcd:' ,'/([\w:]+::)?(\w+)$/' ) <> [] then pause,end
+if regexp('abcd:' ,'/([\w:]+::)?(\w+)$/' ) <> [] then pause,end
+if regexp('aaab' ,'/(>a+)ab/' ) <> [] then pause,end
+if regexp('aaab' ,'/(?>a+)b/' ) <> 1 then pause,end
+if regexp('abc' ,'/[a[:]b[:c]/' ) <> 1 then pause,end
+if regexp('abc' ,'/[a[:]b[:c]/' ) <> 1 then pause,end
+if regexp('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ) <> 3 then pause,end
+//===================================================================
+if regexp('a'+lf+'b'+lf ,'/a\Z/' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf ,'/a\z/' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf ,'/a$/' ) <> [] then pause,end
+if regexp('b'+lf+'a'+lf ,'/a\z/' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf ,'/a\Z/m' ) <> [] then pause,end
+if regexp('a'+lf+'b'+lf ,'/a\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'a'+lf ,'/a\z/m' ) <> [] then pause,end
+if regexp('aa'+lf+'b'+lf ,'/aa\Z/' ) <> [] then pause,end
+if regexp('aa'+lf+'b'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('aa'+lf+'b'+lf ,'/aa$/' ) <> [] then pause,end
+if regexp('b'+lf+'aa'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('aa'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('aa'+lf+'b'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'aa'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa\Z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa$/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/aa$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/aa$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/aa$/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa\Z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa$/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/aa$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/aa$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/aa$/m' ) <> [] then pause,end
+if regexp('ab'+lf+'b'+lf ,'/ab\Z/' ) <> [] then pause,end
+if regexp('ab'+lf+'b'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('ab'+lf+'b'+lf ,'/ab$/' ) <> [] then pause,end
+if regexp('b'+lf+'ab'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('ab'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('ab'+lf+'b'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ab'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab\Z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab$/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/ab$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/ab$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/ab$/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab\Z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab$/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/ab$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/ab$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/ab$/m' ) <> [] then pause,end
+if regexp('abb'+lf+'b'+lf ,'/abb\Z/' ) <> [] then pause,end
+if regexp('abb'+lf+'b'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('abb'+lf+'b'+lf ,'/abb$/' ) <> [] then pause,end
+if regexp('b'+lf+'abb'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('abb'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('abb'+lf+'b'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'abb'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb\Z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb$/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb$/' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('ac'+lf+'b'+lf ,'/abb$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac'+lf ,'/abb$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ac' ,'/abb$/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb\Z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb$/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb\Z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb\z/' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb$/' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('ca'+lf+'b'+lf ,'/abb$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca'+lf ,'/abb$/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb\Z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb\z/m' ) <> [] then pause,end
+if regexp('b'+lf+'ca' ,'/abb$/m' ) <> [] then pause,end
+if regexp('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/') <> [] then pause,end
+if regexp('foo.bart' ,'/foo.bart/' ) <> 1 then pause,end
+if regexp('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ) <> 6 then pause,end
+if regexp('xxxtt' ,'/tt+$/' ) <> 4 then pause,end
+if regexp('aaaXbX' ,'/\GX.*X/' ) <> [] then pause,end
+if regexp('Changes' ,'/\.c(pp|xx|c)?$/i' ) <> [] then pause,end
+if regexp('IO.c' ,'/\.c(pp|xx|c)?$/i' ) <> 3 then pause,end
+if regexp('C:/' ,'/^([a-z]:)/' ) <> [] then pause,end
+if regexp(lf+'x aa' ,'/^\S\s+aa$/m' ) <> 2 then pause,end
+[start_pos, end_pos, match_str] = regexp(lf+'x aa' ,'/^\S\s+aa$/m' );
+if (start_pos <> 2) then pause,end
+if (end_pos <> 5) then pause,end
+if (match_str <> 'x aa') then pause,end
+if regexp('ab' ,'/(^|a)b/' ) <> 1 then pause,end
+if regexp('abcab' ,'/(\w)?(abc)\1b/' ) <> [] then pause,end
+if regexp('a,b,c' ,'/^(?:.,){2}c/' ) <> 1 then pause,end
+if regexp('a,b,c' ,'/^(?:[^,]*,){2}c/' ) <> 1 then pause,end
+if regexp('' ,'/(?i)/' ) <> [] then pause,end
+if regexp('a'+lf+'xb'+lf ,'/(?!\A)x/m' ) <> 3 then pause,end
+if regexp('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ) <> 5 then pause,end
+if regexp('a' ,'/^(a)?(?(1)a|b)+$/' ) <> [] then pause,end
+if regexp('x1' ,'/^(0+)?(?:x(1))?/' ) <> 1 then pause,end
+if regexp('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/') <> 1 then pause,end
+if regexp('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ) <> 1 then pause,end
+if regexp('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ) <> 1 then pause,end
+if regexp('a'+lf+'b'+lf ,'/b\s^/m' ) <> [] then pause,end
+if regexp('a' ,'/\ba/' ) <> 1 then pause,end
+if regexp('AbCd' ,'/ab(?i)cd/' ) <> [] then pause,end
+if regexp('abCd' ,'/ab(?i)cd/' ) <> 1 then pause,end
+if regexp('Oo' ,'/^(o)(?!.*\1)/i' ) <> [] then pause,end
+if regexp('2' ,'/2(]*)?$\1/' ) <> 1 then pause,end
+if regexp('......abef' ,'/.*a(?!(b|cd)*e).*f/' ) <> [] then pause,end
+if regexp('fools' ,'/(foo|fool|x.|money|parted)$/' ) <> [] then pause,end
+if regexp('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ) <> [] then pause,end
+if regexp('fools' ,'/(foo|fool|money|parted)$/' ) <> [] then pause,end
+//===================================================================
+if regexp('scilab-5.0' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then pause,end
+if regexp('scilab-5.0.1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then pause,end
+if regexp('scilab-5.0-alpha-1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then pause,end
+if regexp('scilab-5.0-alpha1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then pause,end
+if regexp('scilab-5.0-rc1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> 1 then pause,end
+if regexp('scilab-5.0-rc-1' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then pause,end
+if regexp('scilab-SE-trunk-27490' ,'/^scilab-[5-9].[0-9](.[0-9])?(-(alpha-|beta-|rc)([0-9])?)?$/') <> [] then pause,end
+//===================================================================
+// Chinese
+str = '世界您好';
+[s,e,m] = regexp(str,'/您好$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^世界/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/世界$/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/您好$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^您好/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/界您/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/界_您/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+//===================================================================
+// Russian
+str = 'привет мир';
+[s,e,m] = regexp(str,'/^привет/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/привет$/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/мир$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^мир/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/вет\sм/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/вет_м/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+//===================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+
+[s,e,m] = regexp(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+//===================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+
+[s,e,m] = regexp(str,'/^丑丞串乃之乎也云亘亙些亦/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/丑丞串乃之乎也云亘亙些亦$/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/凰凱函刹劉劫勁勃$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^凰凱函刹劉劫勁勃/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/亨亮仔伊伎伍伽佃佑伶侃/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/亨亮仔伊_伎伍伽佃佑伶侃/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+//===================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[s,e,m] = regexp(str,'/^มกระดุกกร/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/มกระดุกกร$/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/กกระดิก$/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/^กกระดิก/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+
+[s,e,m] = regexp(str,'/ดุกก/');
+if part(str,s:e) <> m then pause,end
+
+[s,e,m] = regexp(str,'/ดุก_ก/');
+if s <> [] then pause,end
+if e <> [] then pause,end
+if m <> '' then pause,end
+//===================================================================
+
+// Subpatterns
+
+piString="3.14";
+[a,b,c,piStringSplit]=regexp(piString,"/(\d+)\.(\d+)/");
+assert_checkequal(piStringSplit(1),"3");
+assert_checkequal(piStringSplit(2),"14");
+
+[a,b,c,d]=regexp('xabyabbbz','/ab(.*)b(.*)/');
+assert_checkequal(size(d), [1, 2]);
+
+
+
+// get host name from URL
+myURL="http://www.scilab.org/download/";
+[a,b,c,d]=regexp(myURL,'@^(?:http://)?([^/]+)@i');
+assert_checkequal(d,"www.scilab.org");
+
+str='foobar: 2012';
+// Using named subpatterns
+[a,b,c,d]=regexp(str,'/(?P<name>\w+): (?P<digit>\d+)/');
+assert_checkequal(d(1),"foobar");
+assert_checkequal(d(2),"2012");
+
diff --git a/modules/string/tests/unit_tests/regexp_pcre76.dia.ref b/modules/string/tests/unit_tests/regexp_pcre76.dia.ref
new file mode 100755
index 000000000..1fb43c51b
--- /dev/null
+++ b/modules/string/tests/unit_tests/regexp_pcre76.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests regexp
+//===============================
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("regexp(''a'' ,''/(?(1)a|b)/'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("regexp(''a'',''/(?(?{0})a|b)/'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("regexp(''a'',''/(?(?{1})b|a)/'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("regexp(''a'',''/(?(1)b|a)/'')","errcatch") <> 999 then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/regexp_pcre76.tst b/modules/string/tests/unit_tests/regexp_pcre76.tst
new file mode 100755
index 000000000..2762bb2f8
--- /dev/null
+++ b/modules/string/tests/unit_tests/regexp_pcre76.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests regexp
+//===============================
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("regexp(''a'' ,''/(?(1)a|b)/'')","errcatch") <> 999 then pause,end
+if execstr("regexp(''a'',''/(?(?{0})a|b)/'')","errcatch") <> 999 then pause,end
+if execstr("regexp(''a'',''/(?(?{1})b|a)/'')","errcatch") <> 999 then pause,end
+if execstr("regexp(''a'',''/(?(1)b|a)/'')","errcatch") <> 999 then pause,end
diff --git a/modules/string/tests/unit_tests/str2code.dia.ref b/modules/string/tests/unit_tests/str2code.dia.ref
new file mode 100755
index 000000000..8aff4b280
--- /dev/null
+++ b/modules/string/tests/unit_tests/str2code.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests str2code
+//===============================
+if or(_str2code('abcdefghijklmnopqrstuvwxyz')<>(10:35)') then bugmes();quit;end
+if or(_str2code('ABCDEFGHIJKLMNOPQRSTUVWXYZ')<>-(10:35)') then bugmes();quit;end
+if or(_str2code('0123456789')<>(0:9)') then bugmes();quit;end
+if _str2code(emptystr())<>[] then bugmes();quit;end
+//===============================
+if _str2code('Scilab') <> [-28;12;18;21;10;11] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/str2code.tst b/modules/string/tests/unit_tests/str2code.tst
new file mode 100755
index 000000000..f4a95cc59
--- /dev/null
+++ b/modules/string/tests/unit_tests/str2code.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests str2code
+//===============================
+if or(_str2code('abcdefghijklmnopqrstuvwxyz')<>(10:35)') then pause,end
+if or(_str2code('ABCDEFGHIJKLMNOPQRSTUVWXYZ')<>-(10:35)') then pause,end
+if or(_str2code('0123456789')<>(0:9)') then pause,end
+if _str2code(emptystr())<>[] then pause,end
+//===============================
+if _str2code('Scilab') <> [-28;12;18;21;10;11] then pause,end
+//===============================
diff --git a/modules/string/tests/unit_tests/strcat.dia.ref b/modules/string/tests/unit_tests/strcat.dia.ref
new file mode 100755
index 000000000..7d758cdbf
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcat.dia.ref
@@ -0,0 +1,50 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strcat
+//===============================
+if strcat(['abc','abd','aa','bxe'])<>'abcabdaabxe' then bugmes();quit;end
+//===============================
+if strcat(['abc','abd';'aa','bxe'])<>'abcaaabdbxe' then bugmes();quit;end
+//===============================
+if strcat(['abc';'abd';'aa';'bxe'])<>'abcabdaabxe' then bugmes();quit;end
+//===============================
+if strcat(['abc','abd','aa','bxe'],',')<>'abc,abd,aa,bxe' then bugmes();quit;end
+//===============================
+if strcat('abc')<>'abc' then bugmes();quit;end
+//===============================
+if strcat('abc','sd')<>'abc' then bugmes();quit;end
+//===============================
+if strcat('') <> '' then bugmes();quit;end
+//===============================
+if strcat(['','']) <> '' then bugmes();quit;end
+//===============================
+if strcat('','')<>'' then bugmes();quit;end
+//===============================
+if strcat([])<>'' then bugmes();quit;end
+//===============================
+if strcat([],'')<>'' then bugmes();quit;end
+//===============================
+if execstr('strcat([],3)','errcatch') <> 246 then bugmes();quit;end
+//===============================
+if strcat([],'3') <> '' then bugmes();quit;end
+//===============================
+if strcat(['abc','abd','aa','bxe']) <> 'abc'+'abd'+'aa'+'bxe' then bugmes();quit;end
+//===============================
+if strcat(['abc','abd','aa','bxe'],'')<>'abcabdaabxe' then bugmes();quit;end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+NEW_TXT_A = strcat(txt);
+NEW_TXT = strcat(NEW_TXT_A,'END OF FILE');
+if ( length(NEW_TXT) <>length(NEW_TXT_A) ) then bugmes();quit;end
+//===============================
+if strcat(['abc','abd','aa','bxe'],'| , |')<>'abc| , |abd| , |aa| , |bxe' then bugmes();quit;end
+if length(strcat(['abc','abd','aa','bxe'],'| , |')) <> 26 then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strcat.tst b/modules/string/tests/unit_tests/strcat.tst
new file mode 100755
index 000000000..e331715ae
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcat.tst
@@ -0,0 +1,52 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strcat
+//===============================
+if strcat(['abc','abd','aa','bxe'])<>'abcabdaabxe' then pause,end
+//===============================
+if strcat(['abc','abd';'aa','bxe'])<>'abcaaabdbxe' then pause,end
+//===============================
+if strcat(['abc';'abd';'aa';'bxe'])<>'abcabdaabxe' then pause,end
+//===============================
+if strcat(['abc','abd','aa','bxe'],',')<>'abc,abd,aa,bxe' then pause,end
+//===============================
+if strcat('abc')<>'abc' then pause,end
+//===============================
+if strcat('abc','sd')<>'abc' then pause,end
+//===============================
+if strcat('') <> '' then pause,end
+//===============================
+if strcat(['','']) <> '' then pause,end
+//===============================
+if strcat('','')<>'' then pause,end
+//===============================
+if strcat([])<>'' then pause,end
+//===============================
+if strcat([],'')<>'' then pause,end
+//===============================
+if execstr('strcat([],3)','errcatch') <> 246 then pause,end
+//===============================
+if strcat([],'3') <> '' then pause,end
+//===============================
+if strcat(['abc','abd','aa','bxe']) <> 'abc'+'abd'+'aa'+'bxe' then pause,end
+//===============================
+if strcat(['abc','abd','aa','bxe'],'')<>'abcabdaabxe' then pause,end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+NEW_TXT_A = strcat(txt);
+NEW_TXT = strcat(NEW_TXT_A,'END OF FILE');
+if ( length(NEW_TXT) <>length(NEW_TXT_A) ) then pause,end
+//===============================
+if strcat(['abc','abd','aa','bxe'],'| , |')<>'abc| , |abd| , |aa| , |bxe' then pause,end
+if length(strcat(['abc','abd','aa','bxe'],'| , |')) <> 26 then pause,end
+//=============================== \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/strchr.dia.ref b/modules/string/tests/unit_tests/strchr.dia.ref
new file mode 100755
index 000000000..6e13cb83d
--- /dev/null
+++ b/modules/string/tests/unit_tests/strchr.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+if strchr('Scilab','l') <> 'lab' then bugmes();quit;end
+//===============================
+if strchr('Scilab',' ')<> '' then bugmes();quit;end
+//===============================
+STR = 'Scilab string module';
+STR_MAT = [STR,STR;STR,STR];
+if strchr(STR_MAT,'l') <> ['lab string module','lab string module';'lab string module','lab string module'] then bugmes();quit;end
+//===============================
+REF = ['le','string module';'ring module','ab string module'];
+if strchr(STR_MAT,['l','s';'r','a']) <> REF then bugmes();quit;end
+//===============================
+STR_MAT = ["STR1","STR2";"STR3","STR4"];
+if strchr(STR_MAT,["1","2";"3","4"]) <> ["1","2";"3","4"] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strchr.tst b/modules/string/tests/unit_tests/strchr.tst
new file mode 100755
index 000000000..2fe890271
--- /dev/null
+++ b/modules/string/tests/unit_tests/strchr.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+if strchr('Scilab','l') <> 'lab' then pause,end
+//===============================
+if strchr('Scilab',' ')<> '' then pause,end
+//===============================
+STR = 'Scilab string module';
+STR_MAT = [STR,STR;STR,STR];
+if strchr(STR_MAT,'l') <> ['lab string module','lab string module';'lab string module','lab string module'] then pause,end
+//===============================
+REF = ['le','string module';'ring module','ab string module'];
+if strchr(STR_MAT,['l','s';'r','a']) <> REF then pause,end
+//===============================
+STR_MAT = ["STR1","STR2";"STR3","STR4"];
+if strchr(STR_MAT,["1","2";"3","4"]) <> ["1","2";"3","4"] then pause,end
+//===============================
+
diff --git a/modules/string/tests/unit_tests/strcmp.dia.ref b/modules/string/tests/unit_tests/strcmp.dia.ref
new file mode 100755
index 000000000..eb3edf029
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcmp.dia.ref
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strcmp
+//===============================
+TXT1 = ['scilab','SciLab';'Strcmp','STRcmp'];
+TXT2 = ['ScIlAb','sciLab';'sTrCmP','StrCMP'];
+TXT = 'Scilab';
+//===============================
+if strcmp(TXT1,TXT2) <> [ 1 , -1 ; -1 , -1 ] then bugmes();quit;end
+//===============================
+if strcmp(TXT1,TXT2,'s') <> [ 1 , -1 ; -1 , -1 ] then bugmes();quit;end
+//===============================
+if strcmp(TXT1,TXT2,'i') <> [ 0 , 0 ; 0 , 0 ] then bugmes();quit;end
+//===============================
+ if strcmp(TXT1,TXT1,'i') <> [ 0 , 0 ; 0 , 0 ] then bugmes();quit;end
+ //===============================
+ if strcmp(TXT2,TXT2,'s') <> [ 0 , 0 ; 0 , 0 ] then bugmes();quit;end
+ //===============================
+ if strcmp(TXT1,TXT,'s') <> [ 1 , -1 ; 1 , -1 ] then bugmes();quit;end
+ //===============================
+ if strcmp(TXT1,TXT,'i') <> [ 0 , 0 ; 0 , 0 ] then bugmes();quit;end
+ //===============================
+ if strcmp('','','i') <> 0 then bugmes();quit;end
+ //===============================
+ if strcmp('','','s') <> 0 then bugmes();quit;end
+ //===============================
diff --git a/modules/string/tests/unit_tests/strcmp.tst b/modules/string/tests/unit_tests/strcmp.tst
new file mode 100755
index 000000000..986995e1d
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcmp.tst
@@ -0,0 +1,35 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strcmp
+//===============================
+TXT1 = ['scilab','SciLab';'Strcmp','STRcmp'];
+TXT2 = ['ScIlAb','sciLab';'sTrCmP','StrCMP'];
+TXT = 'Scilab';
+//===============================
+if strcmp(TXT1,TXT2) <> [ 1 , -1 ; -1 , -1 ] then pause,end
+//===============================
+if strcmp(TXT1,TXT2,'s') <> [ 1 , -1 ; -1 , -1 ] then pause,end
+//===============================
+if strcmp(TXT1,TXT2,'i') <> [ 0 , 0 ; 0 , 0 ] then pause,end
+//===============================
+ if strcmp(TXT1,TXT1,'i') <> [ 0 , 0 ; 0 , 0 ] then pause,end
+ //===============================
+ if strcmp(TXT2,TXT2,'s') <> [ 0 , 0 ; 0 , 0 ] then pause,end
+ //===============================
+ if strcmp(TXT1,TXT,'s') <> [ 1 , -1 ; 1 , -1 ] then pause,end
+ //===============================
+ if strcmp(TXT1,TXT,'i') <> [ 0 , 0 ; 0 , 0 ] then pause,end
+ //===============================
+ if strcmp('','','i') <> 0 then pause,end
+ //===============================
+ if strcmp('','','s') <> 0 then pause,end
+ //===============================
+ \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/strcmpi.dia.ref b/modules/string/tests/unit_tests/strcmpi.dia.ref
new file mode 100755
index 000000000..7cff51866
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcmpi.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strcmpi
+//===============================
+TXT1 = ['scilab','SciLab';'Strcmp','STRcmp'];
+TXT2 = ['ScIlAb','sciLab';'sTrCmP','StrCMP'];
+TXT = 'Scilab';
+//===============================
+if strcmpi(TXT1,TXT2) <> [ 0 , 0 ; 0 , 0 ] then bugmes();quit;end
+//===============================
+if strcmpi(TXT1,TXT) <> [ 0 , 0 ; 17 , 17 ] then bugmes();quit;end
+//===============================
+if strcmpi('','') <> 0 then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strcmpi.tst b/modules/string/tests/unit_tests/strcmpi.tst
new file mode 100755
index 000000000..a1d7d562a
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcmpi.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strcmpi
+//===============================
+TXT1 = ['scilab','SciLab';'Strcmp','STRcmp'];
+TXT2 = ['ScIlAb','sciLab';'sTrCmP','StrCMP'];
+TXT = 'Scilab';
+//===============================
+if strcmpi(TXT1,TXT2) <> [ 0 , 0 ; 0 , 0 ] then pause,end
+//===============================
+if strcmpi(TXT1,TXT) <> [ 0 , 0 ; 17 , 17 ] then pause,end
+//===============================
+if strcmpi('','') <> 0 then pause,end
+//===============================
+ \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/strcspn.dia.ref b/modules/string/tests/unit_tests/strcspn.dia.ref
new file mode 100755
index 000000000..2d483b30b
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcspn.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+if strcspn('fcba73','1234567890') <> 4 then bugmes();quit;end
+//===============================
+if strcspn('fcba73','a') <> 3 then bugmes();quit;end
+//===============================
+if strcspn('fcba73','') <> length('fcba73') then bugmes();quit;end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2;STR2,STR1];
+if strcspn(STR,'i') <> [ 2 , 9 ; 9 , 2 ] then bugmes();quit;end
+if strcspn(STR,'T') <> [ 6 , 0 ; 0 , 6 ] then bugmes();quit;end
+if strcspn(STR,['i','T';'u','a']) <> [ 2 , 0 ; 5 , 4 ] then bugmes();quit;end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2];
+if strcspn(STR,['i','T']) <> [ 2 , 0 ] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strcspn.tst b/modules/string/tests/unit_tests/strcspn.tst
new file mode 100755
index 000000000..e0b890fa1
--- /dev/null
+++ b/modules/string/tests/unit_tests/strcspn.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+if strcspn('fcba73','1234567890') <> 4 then pause,end
+//===============================
+if strcspn('fcba73','a') <> 3 then pause,end
+//===============================
+if strcspn('fcba73','') <> length('fcba73') then pause,end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2;STR2,STR1];
+if strcspn(STR,'i') <> [ 2 , 9 ; 9 , 2 ] then pause,end
+if strcspn(STR,'T') <> [ 6 , 0 ; 0 , 6 ] then pause,end
+if strcspn(STR,['i','T';'u','a']) <> [ 2 , 0 ; 5 , 4 ] then pause,end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2];
+if strcspn(STR,['i','T']) <> [ 2 , 0 ] then pause,end
+//===============================
diff --git a/modules/string/tests/unit_tests/strindex.dia.ref b/modules/string/tests/unit_tests/strindex.dia.ref
new file mode 100755
index 000000000..e29ded3ff
--- /dev/null
+++ b/modules/string/tests/unit_tests/strindex.dia.ref
@@ -0,0 +1,651 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strindex
+//===============================
+if or(strindex('abc,abd,aa,bxe',',')<>[4 8 11]) then bugmes();quit;end
+if or(strindex('abc',',')<>[]) then bugmes();quit;end
+if or(strindex('abc,abd,aa,bxe',',a')<>[4 8]) then bugmes();quit;end
+if or(strindex('abc,abd,aa,bxe','a')<>[1 5 9 10]) then bugmes();quit;end
+if strindex(emptystr(),'a')<>[] then bugmes();quit;end
+//===============================
+[pos,which]=strindex('abc,abd,aa,bxe',',');
+if or(pos<>[4 8 11])|or(which<>[1 1 1]) then bugmes();quit;end
+[pos,which]=strindex('abc',',');
+if or(pos<>[])|or(which<>[]) then bugmes();quit;end
+[pos,which]=strindex('abc,abd,aa,bxe',',a');
+if or(pos<>[4 8])|or(which<>[1 1]) then bugmes();quit;end
+[pos,which]=strindex('abc,abd,aa,bxe','a');
+if or(pos<>[1 5 9 10])|or(which<>[1 1 1 1]) then bugmes();quit;end
+[pos,which]=strindex('','a');
+if or(pos<>[])|or(which<>[]) then bugmes();quit;end
+//===============================
+[pos,which]=strindex('abc,cbd,aa,bxe',[',a',',b']);
+if or(pos<>[8 11])|or(which<>[1 2]) then bugmes();quit;end
+[pos,which]=strindex('abc,cbd,aa,bxe',[',a','bb']);
+if or(pos<>[8])|or(which<>[1]) then bugmes();quit;end
+//===============================
+rand('u');str=strcat(string(round(8*rand(1,5000))));s= string(0:9);
+[pos,which]=strindex(str,s);
+if part(str,pos)<>strcat(s(which)) then bugmes();quit;end
+//===============================
+ref = [4 10];
+k=strindex('SCI/demos/scicos','/');
+if (k <> ref ) then bugmes();quit;end
+//===============================
+ref = 1;
+k=strindex('SCI/demos/scicos','SCI/');
+if (k <> ref ) then bugmes();quit;end
+//===============================
+ref = [];
+k=strindex('SCI/demos/scicos','!');
+if (k <> ref ) then bugmes();quit;end
+//===============================
+ref = [1 2 3 4];
+k=strindex('aaaaa','aa');
+if (k <> ref ) then bugmes();quit;end
+//===============================
+ref = [1 11];
+k=strindex('SCI/demos/scicos',['SCI','sci']);
+if (k <> ref ) then bugmes();quit;end
+//===============================
+refk = [2 4 8];
+refw = [1 3 4];
+[k,w]=strindex('1+3*abc/2.33',['+','-','*','/']);
+if (k <> refk ) then bugmes();quit;end
+if (w <> refw ) then bugmes();quit;end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+//===============================
+if (strindex(txt(1),'scilab') <> []) then bugmes();quit;end
+if (strindex(txt(1),'Scilab') <> [1 216]) then bugmes();quit;end
+[ind1,ind2] = strindex(txt(1),'Scilab');
+//===============================
+if (ind1 <> [1 1]) then bugmes();quit;end
+if (ind2 <> [1 216]) then bugmes();quit;end
+//===============================
+if (strindex('',' ') <> []) then bugmes();quit;end
+//===============================
+if (strindex([],' ') <> []) then bugmes();quit;end
+//===============================
+a = 'd:\TRUNK\Dev-Tools\SE\Innosetup\script\Create_ISS.sce';
+[r1,r2] = strindex(a,['\',':']);
+ref2 = [2. 1. 1. 1. 1. 1. 1.];
+ref1 = [2. 3. 9. 19. 22. 32. 39];
+if (ref2 <> r2) then bugmes();quit;end;
+if (ref1 <> r1) then bugmes();quit;end;
+//===============================
+ierr = execstr("strindex(''2'' ,''/2(]*)?$\1/'' ,''dummy'');","errcatch");
+if ierr <> 999 then bugmes();quit;end
+//===============================
+lf = ascii(10);
+if strindex('abc','/abc/','r') <> 1 then bugmes();quit;end
+if strindex('xbc','/abc/','r') <> [] then bugmes();quit;end
+if strindex('axc','/abc/','r') <> [] then bugmes();quit;end
+if strindex('abx' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if strindex('xabcy' ,'/abc/' ,'r') <> 2 then bugmes();quit;end
+if strindex('ababc' ,'/abc/' ,'r') <> 3 then bugmes();quit;end
+if strindex('abc' ,'/ab*c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab*bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/.{1}/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/.{3,4}/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab{0,}bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbc' ,'/ab+bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab+bc/' ,'r') <> [] then bugmes();quit;end
+if strindex('abq' ,'/ab+bc/' ,'r') <> [] then bugmes();quit;end
+if strindex('abq' ,'/ab{1,}bc/' ,'r') <> [] then bugmes();quit;end
+if strindex('abbbbc' ,'/ab+bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab{1,}bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab{1,3}bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab{3,4}bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab{4,5}bc/' ,'r') <> [] then bugmes();quit;end
+if strindex('abbc' ,'/ab?bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab?bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab{0,1}bc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abbbbc' ,'/ab?bc/' ,'r') <> [] then bugmes();quit;end
+if strindex('abc' ,'/ab?c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab{0,1}c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/^abc$/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcc' ,'/^abc$/' ,'r') <> [] then bugmes();quit;end
+if strindex('abcc' ,'/^abc/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aabc' ,'/^abc$/' ,'r') <> [] then bugmes();quit;end
+if strindex('aabc' ,'/abc$/' ,'r') <> 2 then bugmes();quit;end
+if strindex('aabcd' ,'/abc$/' ,'r') <> [] then bugmes();quit;end
+if strindex('abc' ,'/a.c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('axc' ,'/a.c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('axyzc' ,'/a.*c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('axyzd' ,'/a.*c/' ,'r') <> [] then bugmes();quit;end
+if strindex('abc' ,'/a[bc]d/' ,'r') <> [] then bugmes();quit;end
+if strindex('abd' ,'/a[bc]d/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abd' ,'/a[b-d]e/' ,'r') <> [] then bugmes();quit;end
+if strindex('ace' ,'/a[b-d]e/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aac' ,'/a[b-d]/' ,'r') <> 2 then bugmes();quit;end
+if strindex('a-' ,'/a[-b]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a-' ,'/a[b-]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a]' ,'/a]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a]b' ,'/a[]]b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aed' ,'/a[^bc]d/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abd' ,'/a[^bc]d/' ,'r') <> [] then bugmes();quit;end
+if strindex('adc' ,'/a[^-b]c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a-c' ,'/a[^-b]c/' ,'r') <> [] then bugmes();quit;end
+if strindex('a]c' ,'/a[^]b]c/' ,'r') <> [] then bugmes();quit;end
+if strindex('adc' ,'/a[^]b]c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a-' ,'/\ba\b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('-a' ,'/\ba\b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('-a-' ,'/\ba\b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('xy' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if strindex('yz' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if strindex('xyz' ,'/\by\b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a-' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if strindex('-a' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if strindex('-a-' ,'/\Ba\B/' ,'r') <> [] then bugmes();quit;end
+if strindex('xy' ,'/\By\b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('xy' ,'/\By\b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('yz' ,'/\by\B/' ,'r') <> 1 then bugmes();quit;end
+if strindex('xyz' ,'/\By\B/' ,'r') <> 2 then bugmes();quit;end
+if strindex('a' ,'/\w/' ,'r') <> 1 then bugmes();quit;end
+if strindex('-' ,'/\w/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/\W/' ,'r') <> [] then bugmes();quit;end
+if strindex('-' ,'/\W/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a b' ,'/a\sb/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a-b' ,'/a\sb/' ,'r') <> [] then bugmes();quit;end
+if strindex('a b' ,'/a\Sb/' ,'r') <> [] then bugmes();quit;end
+if strindex('a-b' ,'/a\Sb/' ,'r') <> 1 then bugmes();quit;end
+if strindex('1' ,'/\d/' ,'r') <> 1 then bugmes();quit;end
+if strindex('-' ,'/\d/' ,'r') <> [] then bugmes();quit;end
+if strindex('1' ,'/\D/' ,'r') <> [] then bugmes();quit;end
+if strindex('-' ,'/\D/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/[\w]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('-' ,'/[\w]/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/[\W]/' ,'r') <> [] then bugmes();quit;end
+if strindex('-' ,'/[\W]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a b' ,'/a[\s]b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a-b' ,'/a[\s]b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a b' ,'/a[\S]b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a-b' ,'/a[\S]b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('1' ,'/[\d]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('-' ,'/[\d]/' ,'r') <> [] then bugmes();quit;end
+if strindex('1' ,'/[\D]/' ,'r') <> [] then bugmes();quit;end
+if strindex('-' ,'/[\D]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/ab|cd/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcd' ,'/ab|cd/' ,'r') <> 1 then bugmes();quit;end
+if strindex('b' ,'/$b/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/a\(*b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a((b' ,'/a\(*b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aabbabc' ,'/a+b+c/' ,'r') <> 5 then bugmes();quit;end
+if strindex('aabbabc' ,'/a{1,}b{1,}c/' ,'r') <> 5 then bugmes();quit;end
+if strindex('abcabc' ,'/a.+?c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('cde' ,'/[^ab]*/' ,'r') <> 1 then bugmes();quit;end
+if strindex('' ,'/abc/' ,'r') <> [] then bugmes();quit;end
+if strindex('' ,'/a*/' ,'r') <> [] then bugmes();quit;end
+if strindex('e' ,'/a|b|c|d|e/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcdefg' ,'/abcd*efg/' ,'r') <> 1 then bugmes();quit;end
+if strindex('xabyabbbz' ,'/ab*/' ,'r') <> 2 then bugmes();quit;end
+if strindex('xayabbbz' ,'/ab*/' ,'r') <> 2 then bugmes();quit;end
+if strindex('hij' ,'/[abhgefdc]ij/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcde' ,'/^(ab|cd)e/' ,'r') <> [] then bugmes();quit;end
+if strindex('adcdcde' ,'/a[bcd]*dcdcde/' ,'r') <> 1 then bugmes();quit;end
+if strindex('adcdcde' ,'/a[bcd]+dcdcde/' ,'r') <> [] then bugmes();quit;end
+if strindex('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ,'r') <> 1 then bugmes();quit;end
+if strindex('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then bugmes();quit;end
+if strindex('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then bugmes();quit;end
+if strindex('aa' ,'/((((((((((a))))))))))\10/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aa' ,'/((((((((((a))))))))))\041/' ,'r') <> [] then bugmes();quit;end
+if strindex('a!' ,'/((((((((((a))))))))))\041/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/(((((((((a)))))))))/' ,'r') <> 1 then bugmes();quit;end
+if strindex('uh-uh' ,'/multiple words of text/' ,'r') <> [] then bugmes();quit;end
+if strindex('multiple words, yeah' ,'/multiple words/' ,'r') <> 1 then bugmes();quit;end
+if strindex('ab' ,'/[k]/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac' ,'/a[-]?c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/(a)|\1/' ,'r') <> 1 then bugmes();quit;end
+if strindex('x' ,'/(a)|\1/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ,'r') <> [] then bugmes();quit;end
+if strindex('ABC' ,'/abc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('XBC' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AXC' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABX' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('XABCY' ,'/abc/i' ,'r') <> 2 then bugmes();quit;end
+if strindex('ABABC' ,'/abc/i' ,'r') <> 3 then bugmes();quit;end
+if strindex('ABC' ,'/ab*c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab*bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBC' ,'/ab*bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab*?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab{0,}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBC' ,'/ab+?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab+bc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABQ' ,'/ab+bc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABQ' ,'/ab{1,}bc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab+bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab{1,}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab{1,3}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab{3,4}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab{4,5}?bc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABBC' ,'/ab??bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab??bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab{0,1}?bc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABBBBC' ,'/ab??bc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABC' ,'/ab??c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab{0,1}?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/^abc$/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCC' ,'/^abc$/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABCC' ,'/^abc/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AABC' ,'/^abc$/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AABC' ,'/abc$/i' ,'r') <> 2 then bugmes();quit;end
+if strindex('ABC' ,'/a.c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AXC' ,'/a.c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AXYZC' ,'/a.*?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AXYZD' ,'/a.*c/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABC' ,'/a[bc]d/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ABD' ,'/a[bc]d/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABD' ,'/a[b-d]e/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ACE' ,'/a[b-d]e/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AAC' ,'/a[b-d]/i' ,'r') <> 2 then bugmes();quit;end
+if strindex('A-' ,'/a[-b]/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A-' ,'/a[b-]/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A]' ,'/a]/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A]B' ,'/a[]]b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AED' ,'/a[^bc]d/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABD' ,'/a[^bc]d/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ADC' ,'/a[^-b]c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A-C' ,'/a[^-b]c/i' ,'r') <> [] then bugmes();quit;end
+if strindex('A]C' ,'/a[^]b]c/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ADC' ,'/a[^]b]c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABC' ,'/ab|cd/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCD' ,'/ab|cd/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('B' ,'/$b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AB' ,'/a\(*b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A((B' ,'/a\(*b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AABBABC' ,'/a+b+c/i' ,'r') <> 5 then bugmes();quit;end
+if strindex('AABBABC' ,'/a{1,}b{1,}c/i' ,'r') <> 5 then bugmes();quit;end
+if strindex('ABCABC' ,'/a.+?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCABC' ,'/a.*?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCABC' ,'/a.{0,5}?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('CDE' ,'/[^ab]*/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('' ,'/abc/i' ,'r') <> [] then bugmes();quit;end
+if strindex('' ,'/a*/i' ,'r') <> [] then bugmes();quit;end
+if strindex('E' ,'/a|b|c|d|e/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCDEFG' ,'/abcd*efg/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('XABYABBBZ' ,'/ab*/i' ,'r') <> 2 then bugmes();quit;end
+if strindex('XAYABBBZ' ,'/ab*/i' ,'r') <> 2 then bugmes();quit;end
+if strindex('HIJ' ,'/[abhgefdc]ij/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ABCDE' ,'/^(ab|cd)e/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ADCDCDE' ,'/a[bcd]*dcdcde/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('ADCDCDE' ,'/a[bcd]+dcdcde/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then bugmes();quit;end
+if strindex('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AA' ,'/((((((((((a))))))))))\10/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AA' ,'/((((((((((a))))))))))\041/i' ,'r') <> [] then bugmes();quit;end
+if strindex('A!' ,'/((((((((((a))))))))))\041/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('A' ,'/(((((((((a)))))))))/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('UH-UH' ,'/multiple words of text/i' ,'r') <> [] then bugmes();quit;end
+if strindex('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AB' ,'/[k]/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AC' ,'/a[-]?c/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('abad' ,'/a(?!b)./' ,'r') <> 3 then bugmes();quit;end
+if strindex('abad' ,'/a(?=d)./' ,'r') <> 3 then bugmes();quit;end
+if strindex('abad' ,'/a(?=c|d)./' ,'r') <> 3 then bugmes();quit;end
+if strindex('<&OUT' ,'/^[<>]&/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/(?<=a)b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('cb' ,'/(?<=a)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('b' ,'/(?<=a)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/(?<!c)b/' ,'r') <> 2 then bugmes();quit;end
+if strindex('cb' ,'/(?<!c)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('b' ,'/(?<!c)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('b' ,'/(?<!c)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aba' ,'/(?:..)*a/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aba' ,'/(?:..)*?a/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/^(?:b|a(?=(.)))*\1/' ,'r') <> 1 then bugmes();quit;end
+if strindex('ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('Ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aB' ,'/(?:(?i)a)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('aB' ,'/((?i)a)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/(?i:a)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('Ab' ,'/(?i:a)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aB' ,'/(?i:a)b/' ,'r') <> [] then bugmes();quit;end
+if strindex('aB' ,'/((?i:a))b/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('Ab' ,'/(?:(?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('Ab' ,'/((?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AB' ,'/(?:(?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AB' ,'/((?-i)a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('ab' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('Ab' ,'/(?-i:a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('Ab' ,'/((?-i:a))b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then bugmes();quit;end
+if strindex('AB' ,'/(?-i:a)b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('AB' ,'/((?-i:a))b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'B' ,'/((?-i:a.))b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('B'+lf+'B' ,'/((?s-i:a.))b/i' ,'r') <> [] then bugmes();quit;end
+if strindex('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/','r') <> 1 then bugmes();quit;end
+if strindex('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/','r') <> 1 then bugmes();quit;end
+if strindex('foobar1234baz' ,'/foo\w*\d{4}baz/' ,'r') <> 1 then bugmes();quit;end
+if strindex('x~~' ,'/x(~~)*(?:(?:F)?)?/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aaac' ,'/^a(?#xxx){3}c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ,'r') <> 1 then bugmes();quit;end
+if strindex('dbcb' ,'/(?<![cd])b/' ,'r') <> [] then bugmes();quit;end
+if strindex('dbaacb' ,'/(?<![cd])[ab]/' ,'r') <> 3 then bugmes();quit;end
+if strindex('dbcb' ,'/(?<!(c|d))b/' ,'r') <> [] then bugmes();quit;end
+if strindex('dbaacb' ,'/(?<!(c|d))[ab]/' ,'r') <> 3 then bugmes();quit;end
+if strindex('cdaccb' ,'/(?<!cd)[ab]/' ,'r') <> 6 then bugmes();quit;end
+if strindex('a--' ,'/^(?:a?b?)*$/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/(?m)^b/' ,'r') <> 3 then bugmes();quit;end
+if strindex('a'+lf+'b'+lf+'c'+lf ,'/^b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/(x)?(?(1)a|b)/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/(x)?(?(1)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/()?(?(1)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/()(?(1)b|a)/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/()?(?(1)a|b)/' ,'r') <> 1 then bugmes();quit;end
+if strindex('blah)' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if strindex('(blah' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if strindex('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if strindex('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/(?(?!a)a|b)/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/(?(?!a)b|a)/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a' ,'/(?(?=a)b|a)/' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/(?(?=a)a|b)/' ,'r') <> 1 then bugmes();quit;end
+if strindex('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then bugmes();quit;end
+if strindex('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then bugmes();quit;end
+if strindex('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaab' ,'/(>a+)ab/' ,'r') <> [] then bugmes();quit;end
+if strindex('aaab' ,'/(?>a+)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then bugmes();quit;end
+if strindex('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ,'r') <> 3 then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/a\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/a\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/a$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'a'+lf ,'/a\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/a\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/a\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'a'+lf ,'/a\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('aa'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('aa'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('aa'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'aa'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('aa'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('aa'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'aa'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/aa$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ab'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ab'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ab'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ab'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ab'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/ab$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('abb'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('abb'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('abb'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'abb'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('abb'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('abb'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'abb'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ac'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ac' ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb\Z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb\z/' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb$/' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('ca'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca'+lf ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb\Z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb\z/m' ,'r') <> [] then bugmes();quit;end
+if strindex('b'+lf+'ca' ,'/abb$/m' ,'r') <> [] then bugmes();quit;end
+if strindex('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/','r') <> [] then bugmes();quit;end
+if strindex('foo.bart' ,'/foo.bart/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ,'r') <> 6 then bugmes();quit;end
+if strindex('xxxtt' ,'/tt+$/' ,'r') <> 4 then bugmes();quit;end
+if strindex('aaaXbX' ,'/\GX.*X/' ,'r') <> [] then bugmes();quit;end
+if strindex('Changes' ,'/\.c(pp|xx|c)?$/i' ,'r') <> [] then bugmes();quit;end
+if strindex('IO.c' ,'/\.c(pp|xx|c)?$/i' ,'r') <> 3 then bugmes();quit;end
+if strindex('C:/' ,'/^([a-z]:)/' ,'r') <> [] then bugmes();quit;end
+if strindex(lf+'x aa' ,'/^\S\s+aa$/m' ,'r') <> 2 then bugmes();quit;end
+[k,w] = strindex(lf+'x aa' ,'/^\S\s+aa$/m' ,'r');
+if k <> 2 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+if strindex('ab' ,'/(^|a)b/' ,'r') <> 1 then bugmes();quit;end
+if strindex('abcab' ,'/(\w)?(abc)\1b/' ,'r') <> [] then bugmes();quit;end
+if strindex('a,b,c' ,'/^(?:.,){2}c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a,b,c' ,'/^(?:[^,]*,){2}c/' ,'r') <> 1 then bugmes();quit;end
+if strindex('' ,'/(?i)/' ,'r') <> [] then bugmes();quit;end
+if strindex('a'+lf+'xb'+lf ,'/(?!\A)x/m' ,'r') <> 3 then bugmes();quit;end
+if strindex('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ,'r') <> 5 then bugmes();quit;end
+if strindex('a' ,'/^(a)?(?(1)a|b)+$/' ,'r') <> [] then bugmes();quit;end
+if strindex('x1' ,'/^(0+)?(?:x(1))?/' ,'r') <> 1 then bugmes();quit;end
+if strindex('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/','r') <> 1 then bugmes();quit;end
+if strindex('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then bugmes();quit;end
+if strindex('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then bugmes();quit;end
+if strindex('a'+lf+'b'+lf ,'/b\s^/m' ,'r') <> [] then bugmes();quit;end
+if strindex('a' ,'/\ba/' ,'r') <> 1 then bugmes();quit;end
+if strindex('AbCd' ,'/ab(?i)cd/' ,'r') <> [] then bugmes();quit;end
+if strindex('abCd' ,'/ab(?i)cd/' ,'r') <> 1 then bugmes();quit;end
+if strindex('Oo' ,'/^(o)(?!.*\1)/i' ,'r') <> [] then bugmes();quit;end
+if strindex('2' ,'/2(]*)?$\1/' ,'r') <> 1 then bugmes();quit;end
+if strindex('......abef' ,'/.*a(?!(b|cd)*e).*f/' ,'r') <> [] then bugmes();quit;end
+if strindex('fools' ,'/(foo|fool|x.|money|parted)$/' ,'r') <> [] then bugmes();quit;end
+if strindex('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ,'r') <> [] then bugmes();quit;end
+if strindex('fools' ,'/(foo|fool|money|parted)$/' ,'r') <> [] then bugmes();quit;end
+//========================================================================================
+// Chinese
+str = '世界您好';
+[r,w] = strindex(str,'/^世界/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/世界$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/您好$/','r');
+if r <> 3 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/^您好/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/界您/','r');
+if r <> 2 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'界您');
+if r <> 2 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/界_您/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Russian
+str = 'привет мир';
+[r,w] = strindex(str,'/^привет/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/привет$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/мир$/','r');
+if r <> 8 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/^мир/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/вет\sм/','r');
+if r <> 4 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/вет_м/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+[r,w] = strindex(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','r');
+if r <> 27 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','r');
+if r <> 10 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+[r,w] = strindex(str,'/^丑丞串乃之乎也云亘亙些亦/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/丑丞串乃之乎也云亘亙些亦$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/凰凱函刹劉劫勁勃$/','r');
+if r <> 53 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/^凰凱函刹劉劫勁勃/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/亨亮仔伊伎伍伽佃佑伶侃/','r');
+if r <> 14 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[r,w] = strindex(str,'/^มกระดุกกร/','r');
+if r <> 1 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/มกระดุกกร$/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/กกระดิก$/','r');
+if r <> 7 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/^กกระดิก/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+[r,w] = strindex(str,'/ดุกก/','r');
+if r <> 5 then bugmes();quit;end
+if w <> 1 then bugmes();quit;end
+[r,w] = strindex(str,'/ดุก_ก/','r');
+if r <> [] then bugmes();quit;end
+if w <> [] then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/strindex.tst b/modules/string/tests/unit_tests/strindex.tst
new file mode 100755
index 000000000..190a9018e
--- /dev/null
+++ b/modules/string/tests/unit_tests/strindex.tst
@@ -0,0 +1,682 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strindex
+//===============================
+if or(strindex('abc,abd,aa,bxe',',')<>[4 8 11]) then pause,end
+if or(strindex('abc',',')<>[]) then pause,end
+if or(strindex('abc,abd,aa,bxe',',a')<>[4 8]) then pause,end
+if or(strindex('abc,abd,aa,bxe','a')<>[1 5 9 10]) then pause,end
+if strindex(emptystr(),'a')<>[] then pause,end
+//===============================
+[pos,which]=strindex('abc,abd,aa,bxe',',');
+if or(pos<>[4 8 11])|or(which<>[1 1 1]) then pause,end
+[pos,which]=strindex('abc',',');
+if or(pos<>[])|or(which<>[]) then pause,end
+[pos,which]=strindex('abc,abd,aa,bxe',',a');
+if or(pos<>[4 8])|or(which<>[1 1]) then pause,end
+[pos,which]=strindex('abc,abd,aa,bxe','a');
+if or(pos<>[1 5 9 10])|or(which<>[1 1 1 1]) then pause,end
+[pos,which]=strindex('','a');
+if or(pos<>[])|or(which<>[]) then pause,end
+//===============================
+[pos,which]=strindex('abc,cbd,aa,bxe',[',a',',b']);
+if or(pos<>[8 11])|or(which<>[1 2]) then pause,end
+[pos,which]=strindex('abc,cbd,aa,bxe',[',a','bb']);
+if or(pos<>[8])|or(which<>[1]) then pause,end
+//===============================
+rand('u');str=strcat(string(round(8*rand(1,5000))));s= string(0:9);
+[pos,which]=strindex(str,s);
+if part(str,pos)<>strcat(s(which)) then pause,end
+//===============================
+ref = [4 10];
+k=strindex('SCI/demos/scicos','/');
+if (k <> ref ) then pause,end
+//===============================
+ref = 1;
+k=strindex('SCI/demos/scicos','SCI/');
+if (k <> ref ) then pause,end
+//===============================
+ref = [];
+k=strindex('SCI/demos/scicos','!');
+if (k <> ref ) then pause,end
+//===============================
+ref = [1 2 3 4];
+k=strindex('aaaaa','aa');
+if (k <> ref ) then pause,end
+//===============================
+ref = [1 11];
+k=strindex('SCI/demos/scicos',['SCI','sci']);
+if (k <> ref ) then pause,end
+//===============================
+refk = [2 4 8];
+refw = [1 3 4];
+[k,w]=strindex('1+3*abc/2.33',['+','-','*','/']);
+if (k <> refk ) then pause,end
+if (w <> refw ) then pause,end
+//===============================
+fd = mopen(SCI+'/modules/string/tests/unit_tests/text.txt','r');
+txt = mgetl( fd );
+mclose( fd );
+//===============================
+if (strindex(txt(1),'scilab') <> []) then pause,end
+if (strindex(txt(1),'Scilab') <> [1 216]) then pause,end
+[ind1,ind2] = strindex(txt(1),'Scilab');
+//===============================
+if (ind1 <> [1 1]) then pause,end
+if (ind2 <> [1 216]) then pause,end
+//===============================
+if (strindex('',' ') <> []) then pause,end
+//===============================
+if (strindex([],' ') <> []) then pause,end
+//===============================
+a = 'd:\TRUNK\Dev-Tools\SE\Innosetup\script\Create_ISS.sce';
+[r1,r2] = strindex(a,['\',':']);
+ref2 = [2. 1. 1. 1. 1. 1. 1.];
+ref1 = [2. 3. 9. 19. 22. 32. 39];
+if (ref2 <> r2) then pause,end;
+if (ref1 <> r1) then pause,end;
+//===============================
+ierr = execstr("strindex(''2'' ,''/2(]*)?$\1/'' ,''dummy'');","errcatch");
+if ierr <> 999 then pause,end
+//===============================
+lf = ascii(10);
+
+if strindex('abc','/abc/','r') <> 1 then pause,end
+if strindex('xbc','/abc/','r') <> [] then pause,end
+if strindex('axc','/abc/','r') <> [] then pause,end
+if strindex('abx' ,'/abc/' ,'r') <> [] then pause,end
+if strindex('xabcy' ,'/abc/' ,'r') <> 2 then pause,end
+if strindex('ababc' ,'/abc/' ,'r') <> 3 then pause,end
+if strindex('abc' ,'/ab*c/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if strindex('abbc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab*bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/.{1}/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/.{3,4}/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab{0,}bc/' ,'r') <> 1 then pause,end
+if strindex('abbc' ,'/ab+bc/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab+bc/' ,'r') <> [] then pause,end
+if strindex('abq' ,'/ab+bc/' ,'r') <> [] then pause,end
+if strindex('abq' ,'/ab{1,}bc/' ,'r') <> [] then pause,end
+if strindex('abbbbc' ,'/ab+bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab{1,}bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab{1,3}bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab{3,4}bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab{4,5}bc/' ,'r') <> [] then pause,end
+if strindex('abbc' ,'/ab?bc/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab?bc/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab{0,1}bc/' ,'r') <> 1 then pause,end
+if strindex('abbbbc' ,'/ab?bc/' ,'r') <> [] then pause,end
+if strindex('abc' ,'/ab?c/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab{0,1}c/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/^abc$/' ,'r') <> 1 then pause,end
+if strindex('abcc' ,'/^abc$/' ,'r') <> [] then pause,end
+if strindex('abcc' ,'/^abc/' ,'r') <> 1 then pause,end
+if strindex('aabc' ,'/^abc$/' ,'r') <> [] then pause,end
+if strindex('aabc' ,'/abc$/' ,'r') <> 2 then pause,end
+if strindex('aabcd' ,'/abc$/' ,'r') <> [] then pause,end
+if strindex('abc' ,'/a.c/' ,'r') <> 1 then pause,end
+if strindex('axc' ,'/a.c/' ,'r') <> 1 then pause,end
+if strindex('axyzc' ,'/a.*c/' ,'r') <> 1 then pause,end
+if strindex('axyzd' ,'/a.*c/' ,'r') <> [] then pause,end
+if strindex('abc' ,'/a[bc]d/' ,'r') <> [] then pause,end
+if strindex('abd' ,'/a[bc]d/' ,'r') <> 1 then pause,end
+if strindex('abd' ,'/a[b-d]e/' ,'r') <> [] then pause,end
+if strindex('ace' ,'/a[b-d]e/' ,'r') <> 1 then pause,end
+if strindex('aac' ,'/a[b-d]/' ,'r') <> 2 then pause,end
+if strindex('a-' ,'/a[-b]/' ,'r') <> 1 then pause,end
+if strindex('a-' ,'/a[b-]/' ,'r') <> 1 then pause,end
+if strindex('a]' ,'/a]/' ,'r') <> 1 then pause,end
+if strindex('a]b' ,'/a[]]b/' ,'r') <> 1 then pause,end
+if strindex('aed' ,'/a[^bc]d/' ,'r') <> 1 then pause,end
+if strindex('abd' ,'/a[^bc]d/' ,'r') <> [] then pause,end
+if strindex('adc' ,'/a[^-b]c/' ,'r') <> 1 then pause,end
+if strindex('a-c' ,'/a[^-b]c/' ,'r') <> [] then pause,end
+if strindex('a]c' ,'/a[^]b]c/' ,'r') <> [] then pause,end
+if strindex('adc' ,'/a[^]b]c/' ,'r') <> 1 then pause,end
+if strindex('a-' ,'/\ba\b/' ,'r') <> 1 then pause,end
+if strindex('-a' ,'/\ba\b/' ,'r') <> 2 then pause,end
+if strindex('-a-' ,'/\ba\b/' ,'r') <> 2 then pause,end
+if strindex('xy' ,'/\by\b/' ,'r') <> [] then pause,end
+if strindex('yz' ,'/\by\b/' ,'r') <> [] then pause,end
+if strindex('xyz' ,'/\by\b/' ,'r') <> [] then pause,end
+if strindex('a-' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if strindex('-a' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if strindex('-a-' ,'/\Ba\B/' ,'r') <> [] then pause,end
+if strindex('xy' ,'/\By\b/' ,'r') <> 2 then pause,end
+if strindex('xy' ,'/\By\b/' ,'r') <> 2 then pause,end
+if strindex('yz' ,'/\by\B/' ,'r') <> 1 then pause,end
+if strindex('xyz' ,'/\By\B/' ,'r') <> 2 then pause,end
+if strindex('a' ,'/\w/' ,'r') <> 1 then pause,end
+if strindex('-' ,'/\w/' ,'r') <> [] then pause,end
+if strindex('a' ,'/\W/' ,'r') <> [] then pause,end
+if strindex('-' ,'/\W/' ,'r') <> 1 then pause,end
+if strindex('a b' ,'/a\sb/' ,'r') <> 1 then pause,end
+if strindex('a-b' ,'/a\sb/' ,'r') <> [] then pause,end
+if strindex('a b' ,'/a\Sb/' ,'r') <> [] then pause,end
+if strindex('a-b' ,'/a\Sb/' ,'r') <> 1 then pause,end
+if strindex('1' ,'/\d/' ,'r') <> 1 then pause,end
+if strindex('-' ,'/\d/' ,'r') <> [] then pause,end
+if strindex('1' ,'/\D/' ,'r') <> [] then pause,end
+if strindex('-' ,'/\D/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/[\w]/' ,'r') <> 1 then pause,end
+if strindex('-' ,'/[\w]/' ,'r') <> [] then pause,end
+if strindex('a' ,'/[\W]/' ,'r') <> [] then pause,end
+if strindex('-' ,'/[\W]/' ,'r') <> 1 then pause,end
+if strindex('a b' ,'/a[\s]b/' ,'r') <> 1 then pause,end
+if strindex('a-b' ,'/a[\s]b/' ,'r') <> [] then pause,end
+if strindex('a b' ,'/a[\S]b/' ,'r') <> [] then pause,end
+if strindex('a-b' ,'/a[\S]b/' ,'r') <> 1 then pause,end
+if strindex('1' ,'/[\d]/' ,'r') <> 1 then pause,end
+if strindex('-' ,'/[\d]/' ,'r') <> [] then pause,end
+if strindex('1' ,'/[\D]/' ,'r') <> [] then pause,end
+if strindex('-' ,'/[\D]/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/ab|cd/' ,'r') <> 1 then pause,end
+if strindex('abcd' ,'/ab|cd/' ,'r') <> 1 then pause,end
+if strindex('b' ,'/$b/' ,'r') <> [] then pause,end
+if strindex('ab' ,'/a\(*b/' ,'r') <> 1 then pause,end
+if strindex('a((b' ,'/a\(*b/' ,'r') <> 1 then pause,end
+if strindex('aabbabc' ,'/a+b+c/' ,'r') <> 5 then pause,end
+if strindex('aabbabc' ,'/a{1,}b{1,}c/' ,'r') <> 5 then pause,end
+if strindex('abcabc' ,'/a.+?c/' ,'r') <> 1 then pause,end
+if strindex('cde' ,'/[^ab]*/' ,'r') <> 1 then pause,end
+if strindex('' ,'/abc/' ,'r') <> [] then pause,end
+if strindex('' ,'/a*/' ,'r') <> [] then pause,end
+if strindex('e' ,'/a|b|c|d|e/' ,'r') <> 1 then pause,end
+if strindex('abcdefg' ,'/abcd*efg/' ,'r') <> 1 then pause,end
+if strindex('xabyabbbz' ,'/ab*/' ,'r') <> 2 then pause,end
+if strindex('xayabbbz' ,'/ab*/' ,'r') <> 2 then pause,end
+if strindex('hij' ,'/[abhgefdc]ij/' ,'r') <> 1 then pause,end
+if strindex('abcde' ,'/^(ab|cd)e/' ,'r') <> [] then pause,end
+if strindex('adcdcde' ,'/a[bcd]*dcdcde/' ,'r') <> 1 then pause,end
+if strindex('adcdcde' ,'/a[bcd]+dcdcde/' ,'r') <> [] then pause,end
+if strindex('alpha' ,'/[a-zA-Z_][a-zA-Z0-9_]*/' ,'r') <> 1 then pause,end
+if strindex('effg' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then pause,end
+if strindex('bcdd' ,'/(bc+d$|ef*g.|h?i(j|k))/' ,'r') <> [] then pause,end
+if strindex('aa' ,'/((((((((((a))))))))))\10/' ,'r') <> 1 then pause,end
+if strindex('aa' ,'/((((((((((a))))))))))\041/' ,'r') <> [] then pause,end
+if strindex('a!' ,'/((((((((((a))))))))))\041/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/(((((((((a)))))))))/' ,'r') <> 1 then pause,end
+if strindex('uh-uh' ,'/multiple words of text/' ,'r') <> [] then pause,end
+if strindex('multiple words, yeah' ,'/multiple words/' ,'r') <> 1 then pause,end
+if strindex('ab' ,'/[k]/' ,'r') <> [] then pause,end
+if strindex('ac' ,'/a[-]?c/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/(a)|\1/' ,'r') <> 1 then pause,end
+if strindex('x' ,'/(a)|\1/' ,'r') <> [] then pause,end
+if strindex('aaxabxbaxbbx' ,'/((\3|b)\2(a)x)+/' ,'r') <> [] then pause,end
+if strindex('ABC' ,'/abc/i' ,'r') <> 1 then pause,end
+if strindex('XBC' ,'/abc/i' ,'r') <> [] then pause,end
+if strindex('AXC' ,'/abc/i' ,'r') <> [] then pause,end
+if strindex('ABX' ,'/abc/i' ,'r') <> [] then pause,end
+if strindex('XABCY' ,'/abc/i' ,'r') <> 2 then pause,end
+if strindex('ABABC' ,'/abc/i' ,'r') <> 3 then pause,end
+if strindex('ABC' ,'/ab*c/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab*bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBC' ,'/ab*bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab*?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab{0,}?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBC' ,'/ab+?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab+bc/i' ,'r') <> [] then pause,end
+if strindex('ABQ' ,'/ab+bc/i' ,'r') <> [] then pause,end
+if strindex('ABQ' ,'/ab{1,}bc/i' ,'r') <> [] then pause,end
+if strindex('ABBBBC' ,'/ab+bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab{1,}?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab{1,3}?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab{3,4}?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab{4,5}?bc/i' ,'r') <> [] then pause,end
+if strindex('ABBC' ,'/ab??bc/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab??bc/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab{0,1}?bc/i' ,'r') <> 1 then pause,end
+if strindex('ABBBBC' ,'/ab??bc/i' ,'r') <> [] then pause,end
+if strindex('ABC' ,'/ab??c/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab{0,1}?c/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/^abc$/i' ,'r') <> 1 then pause,end
+if strindex('ABCC' ,'/^abc$/i' ,'r') <> [] then pause,end
+if strindex('ABCC' ,'/^abc/i' ,'r') <> 1 then pause,end
+if strindex('AABC' ,'/^abc$/i' ,'r') <> [] then pause,end
+if strindex('AABC' ,'/abc$/i' ,'r') <> 2 then pause,end
+if strindex('ABC' ,'/a.c/i' ,'r') <> 1 then pause,end
+if strindex('AXC' ,'/a.c/i' ,'r') <> 1 then pause,end
+if strindex('AXYZC' ,'/a.*?c/i' ,'r') <> 1 then pause,end
+if strindex('AXYZD' ,'/a.*c/i' ,'r') <> [] then pause,end
+if strindex('ABC' ,'/a[bc]d/i' ,'r') <> [] then pause,end
+if strindex('ABD' ,'/a[bc]d/i' ,'r') <> 1 then pause,end
+if strindex('ABD' ,'/a[b-d]e/i' ,'r') <> [] then pause,end
+if strindex('ACE' ,'/a[b-d]e/i' ,'r') <> 1 then pause,end
+if strindex('AAC' ,'/a[b-d]/i' ,'r') <> 2 then pause,end
+if strindex('A-' ,'/a[-b]/i' ,'r') <> 1 then pause,end
+if strindex('A-' ,'/a[b-]/i' ,'r') <> 1 then pause,end
+if strindex('A]' ,'/a]/i' ,'r') <> 1 then pause,end
+if strindex('A]B' ,'/a[]]b/i' ,'r') <> 1 then pause,end
+if strindex('AED' ,'/a[^bc]d/i' ,'r') <> 1 then pause,end
+if strindex('ABD' ,'/a[^bc]d/i' ,'r') <> [] then pause,end
+if strindex('ADC' ,'/a[^-b]c/i' ,'r') <> 1 then pause,end
+if strindex('A-C' ,'/a[^-b]c/i' ,'r') <> [] then pause,end
+if strindex('A]C' ,'/a[^]b]c/i' ,'r') <> [] then pause,end
+if strindex('ADC' ,'/a[^]b]c/i' ,'r') <> 1 then pause,end
+if strindex('ABC' ,'/ab|cd/i' ,'r') <> 1 then pause,end
+if strindex('ABCD' ,'/ab|cd/i' ,'r') <> 1 then pause,end
+if strindex('B' ,'/$b/i' ,'r') <> [] then pause,end
+if strindex('AB' ,'/a\(*b/i' ,'r') <> 1 then pause,end
+if strindex('A((B' ,'/a\(*b/i' ,'r') <> 1 then pause,end
+if strindex('AABBABC' ,'/a+b+c/i' ,'r') <> 5 then pause,end
+if strindex('AABBABC' ,'/a{1,}b{1,}c/i' ,'r') <> 5 then pause,end
+if strindex('ABCABC' ,'/a.+?c/i' ,'r') <> 1 then pause,end
+if strindex('ABCABC' ,'/a.*?c/i' ,'r') <> 1 then pause,end
+if strindex('ABCABC' ,'/a.{0,5}?c/i' ,'r') <> 1 then pause,end
+if strindex('CDE' ,'/[^ab]*/i' ,'r') <> 1 then pause,end
+if strindex('' ,'/abc/i' ,'r') <> [] then pause,end
+if strindex('' ,'/a*/i' ,'r') <> [] then pause,end
+if strindex('E' ,'/a|b|c|d|e/i' ,'r') <> 1 then pause,end
+if strindex('ABCDEFG' ,'/abcd*efg/i' ,'r') <> 1 then pause,end
+if strindex('XABYABBBZ' ,'/ab*/i' ,'r') <> 2 then pause,end
+if strindex('XAYABBBZ' ,'/ab*/i' ,'r') <> 2 then pause,end
+if strindex('HIJ' ,'/[abhgefdc]ij/i' ,'r') <> 1 then pause,end
+if strindex('ABCDE' ,'/^(ab|cd)e/i' ,'r') <> [] then pause,end
+if strindex('ADCDCDE' ,'/a[bcd]*dcdcde/i' ,'r') <> 1 then pause,end
+if strindex('ADCDCDE' ,'/a[bcd]+dcdcde/i' ,'r') <> [] then pause,end
+if strindex('ALPHA' ,'/[a-zA-Z_][a-zA-Z0-9_]*/i' ,'r') <> 1 then pause,end
+if strindex('EFFG' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then pause,end
+if strindex('BCDD' ,'/(bc+d$|ef*g.|h?i(j|k))/i' ,'r') <> [] then pause,end
+if strindex('AA' ,'/((((((((((a))))))))))\10/i' ,'r') <> 1 then pause,end
+if strindex('AA' ,'/((((((((((a))))))))))\041/i' ,'r') <> [] then pause,end
+if strindex('A!' ,'/((((((((((a))))))))))\041/i' ,'r') <> 1 then pause,end
+if strindex('A' ,'/(((((((((a)))))))))/i' ,'r') <> 1 then pause,end
+if strindex('UH-UH' ,'/multiple words of text/i' ,'r') <> [] then pause,end
+if strindex('MULTIPLE WORDS, YEAH' ,'/multiple words/i' ,'r') <> 1 then pause,end
+if strindex('AB' ,'/[k]/i' ,'r') <> [] then pause,end
+if strindex('AC' ,'/a[-]?c/i' ,'r') <> 1 then pause,end
+if strindex('abad' ,'/a(?!b)./' ,'r') <> 3 then pause,end
+if strindex('abad' ,'/a(?=d)./' ,'r') <> 3 then pause,end
+if strindex('abad' ,'/a(?=c|d)./' ,'r') <> 3 then pause,end
+if strindex('<&OUT' ,'/^[<>]&/' ,'r') <> 1 then pause,end
+if strindex('aaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then pause,end
+if strindex('aaaaaaaaaaa' ,'/^(a\1?){4}$/' ,'r') <> [] then pause,end
+if strindex('aaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then pause,end
+if strindex('aaaaaaaaaaa' ,'/^(a(?(1)\1)){4}$/' ,'r') <> [] then pause,end
+if strindex('ab' ,'/(?<=a)b/' ,'r') <> 2 then pause,end
+if strindex('cb' ,'/(?<=a)b/' ,'r') <> [] then pause,end
+if strindex('b' ,'/(?<=a)b/' ,'r') <> [] then pause,end
+if strindex('ab' ,'/(?<!c)b/' ,'r') <> 2 then pause,end
+if strindex('cb' ,'/(?<!c)b/' ,'r') <> [] then pause,end
+if strindex('b' ,'/(?<!c)b/' ,'r') <> 1 then pause,end
+if strindex('b' ,'/(?<!c)b/' ,'r') <> 1 then pause,end
+if strindex('aba' ,'/(?:..)*a/' ,'r') <> 1 then pause,end
+if strindex('aba' ,'/(?:..)*?a/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/^(?:b|a(?=(.)))*\1/' ,'r') <> 1 then pause,end
+if strindex('ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then pause,end
+if strindex('Ab' ,'/(?:(?i)a)b/' ,'r') <> 1 then pause,end
+if strindex('aB' ,'/(?:(?i)a)b/' ,'r') <> [] then pause,end
+if strindex('aB' ,'/((?i)a)b/' ,'r') <> [] then pause,end
+if strindex('ab' ,'/(?i:a)b/' ,'r') <> 1 then pause,end
+if strindex('Ab' ,'/(?i:a)b/' ,'r') <> 1 then pause,end
+if strindex('aB' ,'/(?i:a)b/' ,'r') <> [] then pause,end
+if strindex('aB' ,'/((?i:a))b/' ,'r') <> [] then pause,end
+if strindex('ab' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if strindex('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if strindex('Ab' ,'/(?:(?-i)a)b/i' ,'r') <> [] then pause,end
+if strindex('Ab' ,'/((?-i)a)b/i' ,'r') <> [] then pause,end
+if strindex('aB' ,'/(?:(?-i)a)b/i' ,'r') <> 1 then pause,end
+if strindex('AB' ,'/(?:(?-i)a)b/i' ,'r') <> [] then pause,end
+if strindex('AB' ,'/((?-i)a)b/i' ,'r') <> [] then pause,end
+if strindex('ab' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if strindex('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if strindex('Ab' ,'/(?-i:a)b/i' ,'r') <> [] then pause,end
+if strindex('Ab' ,'/((?-i:a))b/i' ,'r') <> [] then pause,end
+if strindex('aB' ,'/(?-i:a)b/i' ,'r') <> 1 then pause,end
+if strindex('AB' ,'/(?-i:a)b/i' ,'r') <> [] then pause,end
+if strindex('AB' ,'/((?-i:a))b/i' ,'r') <> [] then pause,end
+if strindex('a'+lf+'B' ,'/((?-i:a.))b/i' ,'r') <> [] then pause,end
+if strindex('B'+lf+'B' ,'/((?s-i:a.))b/i' ,'r') <> [] then pause,end
+if strindex('cabbbb' ,'/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/','r') <> 1 then pause,end
+if strindex('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/','r') <> 1 then pause,end
+if strindex('foobar1234baz' ,'/foo\w*\d{4}baz/' ,'r') <> 1 then pause,end
+if strindex('x~~' ,'/x(~~)*(?:(?:F)?)?/' ,'r') <> 1 then pause,end
+if strindex('aaac' ,'/^a(?#xxx){3}c/' ,'r') <> 1 then pause,end
+if strindex('aaac' ,'/^a (?#xxx) (?#yyy) {3}c/x' ,'r') <> 1 then pause,end
+if strindex('dbcb' ,'/(?<![cd])b/' ,'r') <> [] then pause,end
+if strindex('dbaacb' ,'/(?<![cd])[ab]/' ,'r') <> 3 then pause,end
+if strindex('dbcb' ,'/(?<!(c|d))b/' ,'r') <> [] then pause,end
+if strindex('dbaacb' ,'/(?<!(c|d))[ab]/' ,'r') <> 3 then pause,end
+if strindex('cdaccb' ,'/(?<!cd)[ab]/' ,'r') <> 6 then pause,end
+if strindex('a--' ,'/^(?:a?b?)*$/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf ,'/(?m)^b/' ,'r') <> 3 then pause,end
+if strindex('a'+lf+'b'+lf+'c'+lf ,'/^b/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf+'c'+lf ,'/()^b/' ,'r') <> [] then pause,end
+if strindex('a' ,'/(x)?(?(1)a|b)/' ,'r') <> [] then pause,end
+if strindex('a' ,'/(x)?(?(1)b|a)/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/()?(?(1)b|a)/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/()(?(1)b|a)/' ,'r') <> [] then pause,end
+if strindex('a' ,'/()?(?(1)a|b)/' ,'r') <> 1 then pause,end
+if strindex('blah)' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if strindex('(blah' ,'/^(\()?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if strindex('blah)' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if strindex('(blah' ,'/^(\(+)?blah(?(1)(\)))$/' ,'r') <> [] then pause,end
+if strindex('a' ,'/(?(?!a)a|b)/' ,'r') <> [] then pause,end
+if strindex('a' ,'/(?(?!a)b|a)/' ,'r') <> 1 then pause,end
+if strindex('a' ,'/(?(?=a)b|a)/' ,'r') <> [] then pause,end
+if strindex('a' ,'/(?(?=a)a|b)/' ,'r') <> 1 then pause,end
+if strindex('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then pause,end
+if strindex('aaab' ,'/^(?=(a+?))\1ab/' ,'r') <> [] then pause,end
+if strindex('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then pause,end
+if strindex('abcd:' ,'/([\w:]+::)?(\w+)$/' ,'r') <> [] then pause,end
+if strindex('aaab' ,'/(>a+)ab/' ,'r') <> [] then pause,end
+if strindex('aaab' ,'/(?>a+)b/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then pause,end
+if strindex('abc' ,'/[a[:]b[:c]/' ,'r') <> 1 then pause,end
+if strindex('((abc(ade)ufh()()x' ,'/((?>[^()]+)|\([^()]*\))+/' ,'r') <> 3 then pause,end
+if strindex('a'+lf+'b'+lf ,'/a\Z/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf ,'/a\z/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf ,'/a$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'a'+lf ,'/a\z/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf ,'/a\Z/m' ,'r') <> [] then pause,end
+if strindex('a'+lf+'b'+lf ,'/a\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'a'+lf ,'/a\z/m' ,'r') <> [] then pause,end
+if strindex('aa'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('aa'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('aa'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'aa'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('aa'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('aa'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'aa'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa$/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/aa$/m' ,'r') <> [] then pause,end
+if strindex('ab'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('ab'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('ab'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ab'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('ab'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('ab'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ab'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab$/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/ab$/m' ,'r') <> [] then pause,end
+if strindex('abb'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('abb'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('abb'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'abb'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('abb'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('abb'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'abb'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('ac'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ac' ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb\Z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb\z/' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb$/' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('ca'+lf+'b'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca'+lf ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb\Z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb\z/m' ,'r') <> [] then pause,end
+if strindex('b'+lf+'ca' ,'/abb$/m' ,'r') <> [] then pause,end
+if strindex('x' ,'/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/','r') <> [] then pause,end
+if strindex('foo.bart' ,'/foo.bart/' ,'r') <> 1 then pause,end
+if strindex('abcd'+lf+'dxxx' ,'/^d[x][x][x]/m' ,'r') <> 6 then pause,end
+if strindex('xxxtt' ,'/tt+$/' ,'r') <> 4 then pause,end
+if strindex('aaaXbX' ,'/\GX.*X/' ,'r') <> [] then pause,end
+if strindex('Changes' ,'/\.c(pp|xx|c)?$/i' ,'r') <> [] then pause,end
+if strindex('IO.c' ,'/\.c(pp|xx|c)?$/i' ,'r') <> 3 then pause,end
+if strindex('C:/' ,'/^([a-z]:)/' ,'r') <> [] then pause,end
+if strindex(lf+'x aa' ,'/^\S\s+aa$/m' ,'r') <> 2 then pause,end
+[k,w] = strindex(lf+'x aa' ,'/^\S\s+aa$/m' ,'r');
+if k <> 2 then pause,end
+if w <> 1 then pause,end
+if strindex('ab' ,'/(^|a)b/' ,'r') <> 1 then pause,end
+if strindex('abcab' ,'/(\w)?(abc)\1b/' ,'r') <> [] then pause,end
+if strindex('a,b,c' ,'/^(?:.,){2}c/' ,'r') <> 1 then pause,end
+if strindex('a,b,c' ,'/^(?:[^,]*,){2}c/' ,'r') <> 1 then pause,end
+if strindex('' ,'/(?i)/' ,'r') <> [] then pause,end
+if strindex('a'+lf+'xb'+lf ,'/(?!\A)x/m' ,'r') <> 3 then pause,end
+if strindex('123'+lf+'abcabcabcabc'+lf ,'/^.{9}abc.*\n/m' ,'r') <> 5 then pause,end
+if strindex('a' ,'/^(a)?(?(1)a|b)+$/' ,'r') <> [] then pause,end
+if strindex('x1' ,'/^(0+)?(?:x(1))?/' ,'r') <> 1 then pause,end
+if strindex('012cxx0190' ,'/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/','r') <> 1 then pause,end
+if strindex('aaaacccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then pause,end
+if strindex('bbbbcccc' ,'/((?:aaaa|bbbb)cccc)?/' ,'r') <> 1 then pause,end
+if strindex('a'+lf+'b'+lf ,'/b\s^/m' ,'r') <> [] then pause,end
+if strindex('a' ,'/\ba/' ,'r') <> 1 then pause,end
+if strindex('AbCd' ,'/ab(?i)cd/' ,'r') <> [] then pause,end
+if strindex('abCd' ,'/ab(?i)cd/' ,'r') <> 1 then pause,end
+if strindex('Oo' ,'/^(o)(?!.*\1)/i' ,'r') <> [] then pause,end
+if strindex('2' ,'/2(]*)?$\1/' ,'r') <> 1 then pause,end
+if strindex('......abef' ,'/.*a(?!(b|cd)*e).*f/' ,'r') <> [] then pause,end
+if strindex('fools' ,'/(foo|fool|x.|money|parted)$/' ,'r') <> [] then pause,end
+if strindex('fools' ,'/(x.|foo|fool|x.|money|parted|y.)$/' ,'r') <> [] then pause,end
+if strindex('fools' ,'/(foo|fool|money|parted)$/' ,'r') <> [] then pause,end
+//========================================================================================
+// Chinese
+str = '世界您好';
+[r,w] = strindex(str,'/^世界/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/世界$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/您好$/','r');
+if r <> 3 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/^您好/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/界您/','r');
+if r <> 2 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'界您');
+if r <> 2 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/界_您/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Russian
+str = 'привет мир';
+[r,w] = strindex(str,'/^привет/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/привет$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/мир$/','r');
+if r <> 8 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/^мир/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/вет\sм/','r');
+if r <> 4 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/вет_м/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+
+[r,w] = strindex(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','r');
+if r <> 27 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','r');
+if r <> 10 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+
+[r,w] = strindex(str,'/^丑丞串乃之乎也云亘亙些亦/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/丑丞串乃之乎也云亘亙些亦$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/凰凱函刹劉劫勁勃$/','r');
+if r <> 53 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/^凰凱函刹劉劫勁勃/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/亨亮仔伊伎伍伽佃佑伶侃/','r');
+if r <> 14 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+[r,w] = strindex(str,'/^มกระดุกกร/','r');
+if r <> 1 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/มกระดุกกร$/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/กกระดิก$/','r');
+if r <> 7 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/^กกระดิก/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+
+[r,w] = strindex(str,'/ดุกก/','r');
+if r <> 5 then pause,end
+if w <> 1 then pause,end
+
+[r,w] = strindex(str,'/ดุก_ก/','r');
+if r <> [] then pause,end
+if w <> [] then pause,end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/strindex_pcre76.dia.ref b/modules/string/tests/unit_tests/strindex_pcre76.dia.ref
new file mode 100755
index 000000000..8e45a31d6
--- /dev/null
+++ b/modules/string/tests/unit_tests/strindex_pcre76.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strindex
+//===============================
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("strindex(''a'' ,''/(?(1)a|b)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("strindex(''a'',''/(?(?{0})a|b)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("strindex(''a'',''/(?(?{1})b|a)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+if execstr("strindex(''a'',''/(?(1)b|a)/'',''r'')","errcatch") <> 999 then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/strindex_pcre76.tst b/modules/string/tests/unit_tests/strindex_pcre76.tst
new file mode 100755
index 000000000..22180cd90
--- /dev/null
+++ b/modules/string/tests/unit_tests/strindex_pcre76.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strindex
+//===============================
+// Comments about PCRE 7.6 see changelog PCRE
+//7. Patterns such as (?(1)a|b) (a pattern that contains fewer subpatterns
+// than the number used in the conditional) now cause a compile-time error.
+// This is actually not compatible with Perl, which accepts such patterns, but
+// treats the conditional as always being FALSE (as PCRE used to), but it
+// seems to me that giving a diagnostic is better.
+if execstr("strindex(''a'' ,''/(?(1)a|b)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("strindex(''a'',''/(?(?{0})a|b)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("strindex(''a'',''/(?(?{1})b|a)/'',''r'')","errcatch") <> 999 then pause,end
+if execstr("strindex(''a'',''/(?(1)b|a)/'',''r'')","errcatch") <> 999 then pause,end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/string.dia.ref b/modules/string/tests/unit_tests/string.dia.ref
new file mode 100755
index 000000000..89f222f28
--- /dev/null
+++ b/modules/string/tests/unit_tests/string.dia.ref
@@ -0,0 +1,68 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests string
+//===============================
+assert_checkequal(string(1), '1');
+//===============================
+assert_checkequal(string(1.5), '1.5');
+//===============================
+// Special display cases :
+assert_checkequal(string(0+%i), "%i");
+assert_checkequal(string(0-%i), "-%i");
+assert_checkequal(string(0+0*%i), "0");
+assert_checkequal(string(-1+%i), "-1+%i");
+assert_checkequal(string(-1-%i), "-1-%i");
+assert_checkequal(string(0+2*%i), "%i*2");
+assert_checkequal(string(0-2*%i), "-%i*2");
+assert_checkequal(string(-2+2*%i), "-2+%i*2");
+assert_checkequal(string(-2-2*%i), "-2-%i*2");
+// BUG #10082
+//assert_checkequal(string(1+%i), "1+%i");
+//assert_checkequal(string(1-%i), "1-%i");
+//assert_checkequal(string(2+2*%i), "2+%i*2");
+//assert_checkequal(string(2-2*%i), "2-%i*2");
+//===============================
+assert_checkequal(string([]), []);
+//===============================
+assert_checkequal(string(''), '');
+//===============================
+assert_checkequal(string(1:3), ['1','2','3']);
+//===============================
+assert_checkequal(string([1;2;3]), ['1';'2';'3']);
+//===============================
+assert_checkequal(string('foo'), 'foo');
+//===============================
+deff('y = mymacro(x)', 'y = x + 1');
+[out, in, text] = string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+//===============================
+mymacro = null();
+deff('y = mymacro(x)', 'y = x + 1', 'n');
+[out, in, text]=string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+//===============================
+R = string(corelib);
+assert_checkequal(strsubst(R(1),'\','/'), 'SCI/modules/core/macros/');
+//===============================
+A = floor(abs(2^8 * rand(10,10)));
+B = floor(abs(2^16 * rand(10,10)));
+C = floor(abs(2^32 * rand(10,10)));
+D = floor(abs(2^7 * rand(10,10)));
+E = floor(abs(2^15 * rand(10,10)));
+F = floor(abs(2^31 * rand(10,10)));
+assert_checkequal(string(A), string(uint8(A)));
+assert_checkequal(string(B), string(uint16(B)));
+assert_checkequal(string(C), string(uint32(C)));
+assert_checkequal(string(D), string(int8(D)));
+assert_checkequal(string(E), string(int16(E)));
+assert_checkequal(string(F), string(int32(F)));
diff --git a/modules/string/tests/unit_tests/string.tst b/modules/string/tests/unit_tests/string.tst
new file mode 100755
index 000000000..971453f7f
--- /dev/null
+++ b/modules/string/tests/unit_tests/string.tst
@@ -0,0 +1,74 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests string
+//===============================
+assert_checkequal(string(1), '1');
+//===============================
+assert_checkequal(string(1.5), '1.5');
+//===============================
+// Special display cases :
+assert_checkequal(string(0+%i), "%i");
+assert_checkequal(string(0-%i), "-%i");
+assert_checkequal(string(0+0*%i), "0");
+assert_checkequal(string(-1+%i), "-1+%i");
+assert_checkequal(string(-1-%i), "-1-%i");
+assert_checkequal(string(0+2*%i), "%i*2");
+assert_checkequal(string(0-2*%i), "-%i*2");
+assert_checkequal(string(-2+2*%i), "-2+%i*2");
+assert_checkequal(string(-2-2*%i), "-2-%i*2");
+// BUG #10082
+//assert_checkequal(string(1+%i), "1+%i");
+//assert_checkequal(string(1-%i), "1-%i");
+//assert_checkequal(string(2+2*%i), "2+%i*2");
+//assert_checkequal(string(2-2*%i), "2-%i*2");
+//===============================
+assert_checkequal(string([]), []);
+//===============================
+assert_checkequal(string(''), '');
+//===============================
+assert_checkequal(string(1:3), ['1','2','3']);
+//===============================
+assert_checkequal(string([1;2;3]), ['1';'2';'3']);
+//===============================
+assert_checkequal(string('foo'), 'foo');
+//===============================
+deff('y = mymacro(x)', 'y = x + 1');
+[out, in, text] = string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+//===============================
+mymacro = null();
+deff('y = mymacro(x)', 'y = x + 1', 'n');
+[out, in, text]=string(mymacro);
+assert_checkequal(out, 'y');
+assert_checkequal(in, 'x');
+assert_checkequal(text, [' '; 'y = x + 1'; ' ']);
+//===============================
+R = string(corelib);
+assert_checkequal(strsubst(R(1),'\','/'), 'SCI/modules/core/macros/');
+//===============================
+A = floor(abs(2^8 * rand(10,10)));
+B = floor(abs(2^16 * rand(10,10)));
+C = floor(abs(2^32 * rand(10,10)));
+
+D = floor(abs(2^7 * rand(10,10)));
+E = floor(abs(2^15 * rand(10,10)));
+F = floor(abs(2^31 * rand(10,10)));
+
+assert_checkequal(string(A), string(uint8(A)));
+assert_checkequal(string(B), string(uint16(B)));
+assert_checkequal(string(C), string(uint32(C)));
+
+assert_checkequal(string(D), string(int8(D)));
+assert_checkequal(string(E), string(int16(E)));
+assert_checkequal(string(F), string(int32(F)));
+
diff --git a/modules/string/tests/unit_tests/stripblanks.dia.ref b/modules/string/tests/unit_tests/stripblanks.dia.ref
new file mode 100755
index 000000000..d7ac261e0
--- /dev/null
+++ b/modules/string/tests/unit_tests/stripblanks.dia.ref
@@ -0,0 +1,74 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+ierr = execstr('r = stripblanks(1);','errcatch');
+if ierr <> 999 then bugmes();quit;end
+//===============================
+a = ' 123 ';
+r = stripblanks(a);
+if ( r <> '123' ) then bugmes();quit;end
+//===============================
+b = '!'+ a +'!';
+r = stripblanks(b);
+if ( r <> b ) then bugmes();quit;end
+//===============================
+b = [];
+r = stripblanks(b);
+if ( r <> b ) then bugmes();quit;end
+//===============================
+a=[' 123 ',' xyz'];
+r = stripblanks(a);
+if ( r <> ['123','xyz'] ) then bugmes();quit;end
+//===============================
+a=['',''];
+r = stripblanks(a);
+if ( r <> ['',''] ) then bugmes();quit;end
+//===============================
+a=' S C I L A B ';
+r = stripblanks(a);
+if ( r <> 'S C I L A B' ) then bugmes();quit;end
+//===============================
+TAB_CHAR = ascii(9);
+//===============================
+a = TAB_CHAR + ' 123 ' + TAB_CHAR;
+r = stripblanks(a,%T);
+if ( r <> '123' ) then bugmes();quit;end
+//===============================
+r = stripblanks(a,%F);
+if ( r <> a ) then bugmes();quit;end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then bugmes();quit;end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a,%F);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then bugmes();quit;end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a,%T);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then bugmes();quit;end
+//===============================
+STRING = ' '+ascii(9)+' '+'S'+' '+ascii(9)+'C'+' '+ascii(9)+'I'+' '+ascii(9)+'L'+' '+ascii(9)+'A'+' '+ascii(9)+'B'+' '+ascii(9)+' ';
+//===============================
+R1 = ascii('!'+stripblanks(STRING,%T)+'!');
+W1 = [33. 83. 32. 9. 67. 32. 9. 73. 32. 9. 76. 32. 9. 65. 32. 9. 66. 33.];
+if (R1 <> W1) then bugmes();quit;end
+//===============================
+R2 = ascii('!'+stripblanks(STRING,%F)+'!');
+W2 = [33. 9. 32. 83. 32. 9. 67. 32. 9. 73. 32. 9. 76. 32. 9. 65. 32. 9. 66. 32. 9. 33. ];
+if (R2 <> W2) then bugmes();quit;end
+// = strings with only blank character =========================================
+if(stripblanks("")<>"") then bugmes();quit;end
+if(stripblanks(" ")<>"") then bugmes();quit;end
+if(stripblanks(" ")<>"") then bugmes();quit;end
+if(stripblanks("",%T)<>"") then bugmes();quit;end
+if(stripblanks(" ",%T)<>"") then bugmes();quit;end
+if(stripblanks(" ",%T)<>"") then bugmes();quit;end
+if(stripblanks(ascii(9))<>ascii(9)) then bugmes();quit;end
+if(stripblanks(ascii(9),%T)<>"") then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/stripblanks.tst b/modules/string/tests/unit_tests/stripblanks.tst
new file mode 100755
index 000000000..47a2a8b61
--- /dev/null
+++ b/modules/string/tests/unit_tests/stripblanks.tst
@@ -0,0 +1,80 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+ierr = execstr('r = stripblanks(1);','errcatch');
+if ierr <> 999 then pause,end
+//===============================
+a = ' 123 ';
+r = stripblanks(a);
+if ( r <> '123' ) then pause,end
+//===============================
+b = '!'+ a +'!';
+r = stripblanks(b);
+if ( r <> b ) then pause,end
+//===============================
+b = [];
+r = stripblanks(b);
+if ( r <> b ) then pause,end
+//===============================
+a=[' 123 ',' xyz'];
+r = stripblanks(a);
+if ( r <> ['123','xyz'] ) then pause,end
+//===============================
+a=['',''];
+r = stripblanks(a);
+if ( r <> ['',''] ) then pause,end
+//===============================
+a=' S C I L A B ';
+r = stripblanks(a);
+if ( r <> 'S C I L A B' ) then pause,end
+//===============================
+TAB_CHAR = ascii(9);
+//===============================
+a = TAB_CHAR + ' 123 ' + TAB_CHAR;
+r = stripblanks(a,%T);
+if ( r <> '123' ) then pause,end
+//===============================
+r = stripblanks(a,%F);
+if ( r <> a ) then pause,end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then pause,end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a,%F);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then pause,end
+//===============================
+a=[TAB_CHAR + ' 123 '+TAB_CHAR,' xyz'];
+r = stripblanks(a,%T);
+if ( r <> [TAB_CHAR + ' 123 '+TAB_CHAR,'xyz'] ) then pause,end
+//===============================
+STRING = ' '+ascii(9)+' '+'S'+' '+ascii(9)+'C'+' '+ascii(9)+'I'+' '+ascii(9)+'L'+' '+ascii(9)+'A'+' '+ascii(9)+'B'+' '+ascii(9)+' ';
+//===============================
+R1 = ascii('!'+stripblanks(STRING,%T)+'!');
+W1 = [33. 83. 32. 9. 67. 32. 9. 73. 32. 9. 76. 32. 9. 65. 32. 9. 66. 33.];
+if (R1 <> W1) then pause,end
+//===============================
+R2 = ascii('!'+stripblanks(STRING,%F)+'!');
+W2 = [33. 9. 32. 83. 32. 9. 67. 32. 9. 73. 32. 9. 76. 32. 9. 65. 32. 9. 66. 32. 9. 33. ];
+if (R2 <> W2) then pause,end
+
+// = strings with only blank character =========================================
+
+if(stripblanks("")<>"") then pause,end
+if(stripblanks(" ")<>"") then pause,end
+if(stripblanks(" ")<>"") then pause,end
+
+if(stripblanks("",%T)<>"") then pause,end
+if(stripblanks(" ",%T)<>"") then pause,end
+if(stripblanks(" ",%T)<>"") then pause,end
+
+if(stripblanks(ascii(9))<>ascii(9)) then pause,end
+if(stripblanks(ascii(9),%T)<>"") then pause,end
diff --git a/modules/string/tests/unit_tests/strncpy.dia.ref b/modules/string/tests/unit_tests/strncpy.dia.ref
new file mode 100755
index 000000000..aa8c23719
--- /dev/null
+++ b/modules/string/tests/unit_tests/strncpy.dia.ref
@@ -0,0 +1,61 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+str1 = "Scilab string 1";
+str2 = "Scilab string 2";
+if strncpy(str1,0) <> strncpy(str2,0) then bugmes();quit;end
+//===============================
+if (strncpy(str1,0) <> '') then bugmes();quit;end
+//===============================
+if (strncpy(str1,length(str1)) <> str1) then bugmes();quit;end
+//===============================
+STR = [str1,str2;str2,str1];
+if strncpy(STR,length(STR)) <> STR then bugmes();quit;end
+//===============================
+REF = ['Sc','Sc';'Sc','Sc'];
+if strncpy(STR,2) <> REF then bugmes();quit;end
+//===============================
+if strncpy('I try to crash scilab',-1) <> '' then bugmes();quit;end
+//===============================
+REF = ['S','Sc';'Sci','Scil'];
+if strncpy(STR,[1,2;3,4]) <> REF then bugmes();quit;end
+//===============================
+STR = 'scilab is The open source platform for numerical computation.';
+if strncpy(STR,6)<> 'scilab' then bugmes();quit;end;
+//===============================
+STR1 = strncpy(STR,6);
+STR2 = strncpy(STR,8);
+STR3 = strncpy(STR,10);
+STR4 = strncpy(STR,12);
+STR5 = strncpy(STR,14);
+STR6 = strncpy(STR,16);
+STRS = [STR1,STR2,STR3;STR4,STR5,STR6];
+REF = [STR1,STR1,STR1;STR1,STR1,STR1];
+if strncpy(STRS,6) <> REF then bugmes();quit;end
+//===============================
+STRS = [STR,STR,STR;STR,STR,STR];
+STR1 = strncpy(STR,1);
+STR2 = strncpy(STR,2);
+STR3 = strncpy(STR,3);
+STR4 = strncpy(STR,4);
+STR5 = strncpy(STR,5);
+STR6 = strncpy(STR,6);
+REF = [STR1,STR2,STR3;STR4,STR5,STR6];
+if strncpy(STRS,[1,2,3;4,5,6])<> REF then bugmes();quit;end
+//===============================
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+for i=1:size(tab_ref,'*')
+ r = strncpy(tab_ref(i),i);
+ if r <> part(tab_ref(i),1:i) then bugmes();quit;end
+end
diff --git a/modules/string/tests/unit_tests/strncpy.tst b/modules/string/tests/unit_tests/strncpy.tst
new file mode 100755
index 000000000..f944d571c
--- /dev/null
+++ b/modules/string/tests/unit_tests/strncpy.tst
@@ -0,0 +1,64 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+str1 = "Scilab string 1";
+str2 = "Scilab string 2";
+if strncpy(str1,0) <> strncpy(str2,0) then pause,end
+//===============================
+if (strncpy(str1,0) <> '') then pause,end
+//===============================
+if (strncpy(str1,length(str1)) <> str1) then pause,end
+//===============================
+STR = [str1,str2;str2,str1];
+if strncpy(STR,length(STR)) <> STR then pause,end
+//===============================
+REF = ['Sc','Sc';'Sc','Sc'];
+if strncpy(STR,2) <> REF then pause,end
+//===============================
+if strncpy('I try to crash scilab',-1) <> '' then pause,end
+//===============================
+REF = ['S','Sc';'Sci','Scil'];
+if strncpy(STR,[1,2;3,4]) <> REF then pause,end
+//===============================
+STR = 'scilab is The open source platform for numerical computation.';
+if strncpy(STR,6)<> 'scilab' then pause,end;
+//===============================
+STR1 = strncpy(STR,6);
+STR2 = strncpy(STR,8);
+STR3 = strncpy(STR,10);
+STR4 = strncpy(STR,12);
+STR5 = strncpy(STR,14);
+STR6 = strncpy(STR,16);
+STRS = [STR1,STR2,STR3;STR4,STR5,STR6];
+REF = [STR1,STR1,STR1;STR1,STR1,STR1];
+if strncpy(STRS,6) <> REF then pause,end
+//===============================
+STRS = [STR,STR,STR;STR,STR,STR];
+STR1 = strncpy(STR,1);
+STR2 = strncpy(STR,2);
+STR3 = strncpy(STR,3);
+STR4 = strncpy(STR,4);
+STR5 = strncpy(STR,5);
+STR6 = strncpy(STR,6);
+REF = [STR1,STR2,STR3;STR4,STR5,STR6];
+if strncpy(STRS,[1,2,3;4,5,6])<> REF then pause,end
+//===============================
+tab_ref = [
+"世界您好",
+"азеазея",
+"ハロー・ワールド",
+"เฮลโลเวิลด์",
+"حريات وحقوق",
+"תוכנית"];
+
+for i=1:size(tab_ref,'*')
+ r = strncpy(tab_ref(i),i);
+ if r <> part(tab_ref(i),1:i) then pause,end
+end
diff --git a/modules/string/tests/unit_tests/strrchr.dia.ref b/modules/string/tests/unit_tests/strrchr.dia.ref
new file mode 100755
index 000000000..d5425f32b
--- /dev/null
+++ b/modules/string/tests/unit_tests/strrchr.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+if strrchr('Scilab','l') <> 'lab' then bugmes();quit;end
+//===============================
+if strrchr('Scilab',' ')<> '' then bugmes();quit;end
+//===============================
+STR = 'Scilab string module';
+STR_MAT = [STR,STR;STR,STR];
+if strrchr(STR_MAT,'l') <> ['le','le';'le','le'] then bugmes();quit;end
+//===============================
+REF = ['le','string module';'ring module','ab string module'];
+if strrchr(STR_MAT,['l','s';'r','a']) <> REF then bugmes();quit;end
+//===============================
+STR_MAT = ["STR1","STR2";"STR3","STR4"];
+if strrchr(STR_MAT,["1","2";"3","4"]) <> ["1","2";"3","4"] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strrchr.tst b/modules/string/tests/unit_tests/strrchr.tst
new file mode 100755
index 000000000..b96b5387c
--- /dev/null
+++ b/modules/string/tests/unit_tests/strrchr.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+if strrchr('Scilab','l') <> 'lab' then pause,end
+//===============================
+if strrchr('Scilab',' ')<> '' then pause,end
+//===============================
+STR = 'Scilab string module';
+STR_MAT = [STR,STR;STR,STR];
+if strrchr(STR_MAT,'l') <> ['le','le';'le','le'] then pause,end
+//===============================
+REF = ['le','string module';'ring module','ab string module'];
+if strrchr(STR_MAT,['l','s';'r','a']) <> REF then pause,end
+//===============================
+STR_MAT = ["STR1","STR2";"STR3","STR4"];
+if strrchr(STR_MAT,["1","2";"3","4"]) <> ["1","2";"3","4"] then pause,end
+//===============================
+
diff --git a/modules/string/tests/unit_tests/strrev.dia.ref b/modules/string/tests/unit_tests/strrev.dia.ref
new file mode 100755
index 000000000..2c9fb6b9b
--- /dev/null
+++ b/modules/string/tests/unit_tests/strrev.dia.ref
@@ -0,0 +1,61 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//==============================================================================
+str = "Madam,in Eden I''m Adam ";
+str_clean = strsubst(str,' ','');
+str_clean = strsubst(str_clean,',','');
+str_clean = strsubst(str_clean,'''','');
+str_clean = convstr(str_clean,'l');
+r = strrev(str_clean);
+if r<>str_clean then bugmes();quit;end
+//==============================================================================
+str = "la mere gide digere mal";
+str_without_blanks = strsubst(str,' ','');
+r = strrev(str_without_blanks);
+if r<>str_without_blanks then bugmes();quit;end
+//==============================================================================
+str = "a man, a plan, a canal : panama";
+str_clean = strsubst(str,' ','');
+str_clean = strsubst(str_clean,',','');
+str_clean = strsubst(str_clean,':','');
+r = strrev(str_clean);
+if r<>str_clean then bugmes();quit;end
+//==============================================================================
+s = strrev('');
+if s <> '' then bugmes();quit;end
+//==============================================================================
+str1 = "Madam,in Eden I''m Adam";
+str2 = "la mere gide digere mal";
+str3 = "a man, a plan, a canal : panama";
+str1_rev = "madA m''I nedE ni,madaM";
+str2_rev = "lam eregid edig erem al";
+str3_rev = "amanap : lanac a ,nalp a ,nam a";
+if strrev(str1) <> str1_rev then bugmes();quit;end
+if strrev(str2) <> str2_rev then bugmes();quit;end
+if strrev(str3) <> str3_rev then bugmes();quit;end
+if strrev(str1_rev) <> str1 then bugmes();quit;end
+if strrev(str2_rev) <> str2 then bugmes();quit;end
+if strrev(str3_rev) <> str3 then bugmes();quit;end
+//=================
+str_test = [ str1 str2 str3 ];
+str_test_rev = [ str1_rev str2_rev str3_rev ];
+if strrev(str_test) <> str_test_rev then bugmes();quit;end
+if strrev(str_test) <> [ str1_rev str2_rev str3_rev ] then bugmes();quit;end
+if strrev(str_test) <> [ strrev(str1) strrev(str2) strrev(str3) ] then bugmes();quit;end
+//=================
+str_test = [ str1 ; str2 ; str3 ];
+str_test_rev = [ str1_rev ; str2_rev ; str3_rev ];
+if strrev(str_test) <> str_test_rev then bugmes();quit;end
+if strrev(str_test) <> [ str1_rev ; str2_rev ; str3_rev ] then bugmes();quit;end
+if strrev(str_test) <> [ strrev(str1) ; strrev(str2) ; strrev(str3) ] then bugmes();quit;end
+//=================
+str_test = [ str1 str2 ; str3 str1 ];
+str_test_rev = [ str1_rev str2_rev ; str3_rev str1_rev ];
+if strrev(str_test) <> str_test_rev then bugmes();quit;end
+if strrev(str_test) <> [ str1_rev str2_rev ; str3_rev str1_rev ] then bugmes();quit;end
+if strrev(str_test) <> [ strrev(str1) strrev(str2) ; strrev(str3) strrev(str1) ] then bugmes();quit;end
diff --git a/modules/string/tests/unit_tests/strrev.tst b/modules/string/tests/unit_tests/strrev.tst
new file mode 100755
index 000000000..50b373c83
--- /dev/null
+++ b/modules/string/tests/unit_tests/strrev.tst
@@ -0,0 +1,85 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//==============================================================================
+
+str = "Madam,in Eden I''m Adam ";
+str_clean = strsubst(str,' ','');
+str_clean = strsubst(str_clean,',','');
+str_clean = strsubst(str_clean,'''','');
+str_clean = convstr(str_clean,'l');
+r = strrev(str_clean);
+if r<>str_clean then pause,end
+
+//==============================================================================
+
+str = "la mere gide digere mal";
+str_without_blanks = strsubst(str,' ','');
+r = strrev(str_without_blanks);
+if r<>str_without_blanks then pause,end
+
+//==============================================================================
+
+str = "a man, a plan, a canal : panama";
+str_clean = strsubst(str,' ','');
+str_clean = strsubst(str_clean,',','');
+str_clean = strsubst(str_clean,':','');
+r = strrev(str_clean);
+if r<>str_clean then pause,end
+
+//==============================================================================
+
+s = strrev('');
+if s <> '' then pause,end
+
+//==============================================================================
+
+str1 = "Madam,in Eden I''m Adam";
+str2 = "la mere gide digere mal";
+str3 = "a man, a plan, a canal : panama";
+
+str1_rev = "madA m''I nedE ni,madaM";
+str2_rev = "lam eregid edig erem al";
+str3_rev = "amanap : lanac a ,nalp a ,nam a";
+
+
+if strrev(str1) <> str1_rev then pause,end
+if strrev(str2) <> str2_rev then pause,end
+if strrev(str3) <> str3_rev then pause,end
+
+if strrev(str1_rev) <> str1 then pause,end
+if strrev(str2_rev) <> str2 then pause,end
+if strrev(str3_rev) <> str3 then pause,end
+
+//=================
+
+str_test = [ str1 str2 str3 ];
+str_test_rev = [ str1_rev str2_rev str3_rev ];
+
+if strrev(str_test) <> str_test_rev then pause,end
+if strrev(str_test) <> [ str1_rev str2_rev str3_rev ] then pause,end
+if strrev(str_test) <> [ strrev(str1) strrev(str2) strrev(str3) ] then pause,end
+
+//=================
+
+str_test = [ str1 ; str2 ; str3 ];
+str_test_rev = [ str1_rev ; str2_rev ; str3_rev ];
+
+if strrev(str_test) <> str_test_rev then pause,end
+if strrev(str_test) <> [ str1_rev ; str2_rev ; str3_rev ] then pause,end
+if strrev(str_test) <> [ strrev(str1) ; strrev(str2) ; strrev(str3) ] then pause,end
+
+//=================
+
+str_test = [ str1 str2 ; str3 str1 ];
+str_test_rev = [ str1_rev str2_rev ; str3_rev str1_rev ];
+
+if strrev(str_test) <> str_test_rev then pause,end
+if strrev(str_test) <> [ str1_rev str2_rev ; str3_rev str1_rev ] then pause,end
+if strrev(str_test) <> [ strrev(str1) strrev(str2) ; strrev(str3) strrev(str1) ] then pause,end
diff --git a/modules/string/tests/unit_tests/strsplit.dia.ref b/modules/string/tests/unit_tests/strsplit.dia.ref
new file mode 100755
index 000000000..070c64c03
--- /dev/null
+++ b/modules/string/tests/unit_tests/strsplit.dia.ref
@@ -0,0 +1,186 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests strsplit
+//===============================
+STR_SPLITED = ['strsplit splits';'a string';'into';'a vector of strings'];
+STR = 'strsplit splits a string into a vector of strings';
+INDICES = [15 25 30];
+R = stripblanks(strsplit(STR,INDICES));
+assert_checkequal(R, STR_SPLITED);
+//===============================
+assert_checkequal(strsplit([],[1 1 1]), []);
+//===============================
+// Scilab 4.x
+//if execstr('strsplit([],[3 2 1])','errcatch') <> 99 then bugmes();quit;end
+// Scilab 5.x
+assert_checkequal(strsplit([],[3 2 1]), []);
+//===============================
+assert_checkequal(execstr('strsplit('',[0 1])','errcatch'), 31);
+// Scilab 4.x
+//if execstr('strsplit([])','errcatch') <> 39 then bugmes();quit;end
+// Scilab 5.1
+//if execstr('strsplit([])','errcatch') <> 77 then bugmes();quit;end
+// Scilab 5.2
+assert_checkequal(execstr('strsplit([])','errcatch'), 0);
+assert_checkequal(strsplit([]), []);
+//===============================
+ref_1 = ["toto"];
+ref_2 = [];
+[r_1, r_2] = strsplit("toto","a");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+// request 663
+ref_1 = ["a";"b";"c";"d";"e";"f"];
+ref_2 = ["";"";"";"";"";""];
+[r_1, r_2] = strsplit("abcdef");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1, ""), "abcdef");
+//===============================
+[r_1, r_2] = strsplit("abcdef","");
+[r_3, r_4] = strsplit("abcdef");
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["a";"bcdef"];
+ref_2 = [""];
+[r_1, r_2] = strsplit("abcdef","",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,""), "abcdef");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = [",";",";",";","];
+[r_1, r_2] = strsplit("abcdef,ghijkl,mnopqr,stuvw,xyz",",");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,","), "abcdef,ghijkl,mnopqr,stuvw,xyz");
+//===============================
+ref_1 = ["abc";"";"";"def";"";"ghijkl";"";"mno"];
+ref_2 = [":";":";":";":";":";":";":"];
+[r_1, r_2] = strsplit("abc:::def::ghijkl::mno",":");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,":"), "abc:::def::ghijkl::mno");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = ["~~~";"~~~";"~~~";"~~~"] ;
+[r_1, r_2] = strsplit("abcdef~~~ghijkl~~~mnopqr~~~stuvw~~~xyz","~~~");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,"~~~"), "abcdef~~~ghijkl~~~mnopqr~~~stuvw~~~xyz");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = ["2";"3";"6";"7"];
+[r_1, r_2] = strsplit("abcdef2ghijkl3mnopqr6stuvw7xyz","/\d+/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_2 = ["scilab";"scilab"];
+ref_1 = ["";" a numerical tools ";"oraty"];
+[r_1, r_2] = strsplit("scilab a numerical tools scilaboraty","/scilab/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = [ascii(9);ascii(9);ascii(9);ascii(9)];
+[r_1, r_2] = strsplit("abcdef"+ascii(9)+"ghijkl" + ascii(9)+"mnopqr"+ascii(9)+"stuvw" + ascii(9)+"xyz","/\t/") ;
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,ascii(9)), "abcdef" + ascii(9) + "ghijkl" + ascii(9) + "mnopqr" + ascii(9) + "stuvw" + ascii(9) + "xyz");
+//===============================
+ref_1 = ["server.name";"scilab.org"];
+ref_2 = " = ";
+linestr = "server.name = scilab.org";
+[r_1, r_2] = strsplit(linestr, "/\s*=\s*/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,r_2), "server.name = scilab.org");
+//===============================
+ierr = execstr("strsplit(''root:x:0:0:root:/root:/bin/bash'','':'',0)","errcatch");
+assert_checkequal(ierr, 999);
+//===============================
+ref_1 = ["root";"x:0:0:root:/root:/bin/bash"];
+ref_2 = ":";
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["root";"x";"0";"0";"root";"/root:/bin/bash"];
+ref_2 = [":";":";":";":";":"];
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",5);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",7);
+[r_3, r_4] = strsplit("root:x:0:0:root:/root:/bin/bash",":",50);
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["abc";""];
+ref_2 = ',';
+[r_1, r_2] = strsplit("abc,",",");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";""];
+ref_2 = ',';
+[r_1, r_2] = strsplit("abc,",",",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+[r_1, r_2] = strsplit("abc,",",",1);
+[r_3, r_4] = strsplit("abc,",",",10);
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["abc";"def";"ijk";"";"lmo"];
+ref_2 = [",";":";",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo","/:|,/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";"def";"ijk";"";"lmo"];
+ref_2 = [",";":";",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo",[":";","]);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";"def";"ijk,:lmo"];
+ref_2 = [",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo",[":";","],2);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+v = "世界您好";
+c = "您";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "азеаея";
+c = "з";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "ድቅስድስግ";
+c = "ቅ";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "ハロー・ワールド";
+c = "ド";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "תוכנית";
+c = "י";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
diff --git a/modules/string/tests/unit_tests/strsplit.tst b/modules/string/tests/unit_tests/strsplit.tst
new file mode 100755
index 000000000..6dfbcbcf8
--- /dev/null
+++ b/modules/string/tests/unit_tests/strsplit.tst
@@ -0,0 +1,188 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests strsplit
+//===============================
+STR_SPLITED = ['strsplit splits';'a string';'into';'a vector of strings'];
+STR = 'strsplit splits a string into a vector of strings';
+INDICES = [15 25 30];
+R = stripblanks(strsplit(STR,INDICES));
+assert_checkequal(R, STR_SPLITED);
+//===============================
+assert_checkequal(strsplit([],[1 1 1]), []);
+//===============================
+// Scilab 4.x
+//if execstr('strsplit([],[3 2 1])','errcatch') <> 99 then pause,end
+// Scilab 5.x
+assert_checkequal(strsplit([],[3 2 1]), []);
+//===============================
+assert_checkequal(execstr('strsplit('',[0 1])','errcatch'), 31);
+// Scilab 4.x
+//if execstr('strsplit([])','errcatch') <> 39 then pause,end
+// Scilab 5.1
+//if execstr('strsplit([])','errcatch') <> 77 then pause,end
+// Scilab 5.2
+assert_checkequal(execstr('strsplit([])','errcatch'), 0);
+assert_checkequal(strsplit([]), []);
+//===============================
+ref_1 = ["toto"];
+ref_2 = [];
+[r_1, r_2] = strsplit("toto","a");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+// request 663
+ref_1 = ["a";"b";"c";"d";"e";"f"];
+ref_2 = ["";"";"";"";"";""];
+[r_1, r_2] = strsplit("abcdef");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1, ""), "abcdef");
+//===============================
+[r_1, r_2] = strsplit("abcdef","");
+[r_3, r_4] = strsplit("abcdef");
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["a";"bcdef"];
+ref_2 = [""];
+[r_1, r_2] = strsplit("abcdef","",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,""), "abcdef");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = [",";",";",";","];
+[r_1, r_2] = strsplit("abcdef,ghijkl,mnopqr,stuvw,xyz",",");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,","), "abcdef,ghijkl,mnopqr,stuvw,xyz");
+//===============================
+ref_1 = ["abc";"";"";"def";"";"ghijkl";"";"mno"];
+ref_2 = [":";":";":";":";":";":";":"];
+[r_1, r_2] = strsplit("abc:::def::ghijkl::mno",":");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,":"), "abc:::def::ghijkl::mno");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = ["~~~";"~~~";"~~~";"~~~"] ;
+[r_1, r_2] = strsplit("abcdef~~~ghijkl~~~mnopqr~~~stuvw~~~xyz","~~~");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,"~~~"), "abcdef~~~ghijkl~~~mnopqr~~~stuvw~~~xyz");
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = ["2";"3";"6";"7"];
+[r_1, r_2] = strsplit("abcdef2ghijkl3mnopqr6stuvw7xyz","/\d+/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_2 = ["scilab";"scilab"];
+ref_1 = ["";" a numerical tools ";"oraty"];
+[r_1, r_2] = strsplit("scilab a numerical tools scilaboraty","/scilab/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abcdef";"ghijkl";"mnopqr";"stuvw";"xyz"];
+ref_2 = [ascii(9);ascii(9);ascii(9);ascii(9)];
+[r_1, r_2] = strsplit("abcdef"+ascii(9)+"ghijkl" + ascii(9)+"mnopqr"+ascii(9)+"stuvw" + ascii(9)+"xyz","/\t/") ;
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,ascii(9)), "abcdef" + ascii(9) + "ghijkl" + ascii(9) + "mnopqr" + ascii(9) + "stuvw" + ascii(9) + "xyz");
+//===============================
+ref_1 = ["server.name";"scilab.org"];
+ref_2 = " = ";
+linestr = "server.name = scilab.org";
+[r_1, r_2] = strsplit(linestr, "/\s*=\s*/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+assert_checkequal(strcat(r_1,r_2), "server.name = scilab.org");
+//===============================
+ierr = execstr("strsplit(''root:x:0:0:root:/root:/bin/bash'','':'',0)","errcatch");
+assert_checkequal(ierr, 999);
+//===============================
+ref_1 = ["root";"x:0:0:root:/root:/bin/bash"];
+ref_2 = ":";
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["root";"x";"0";"0";"root";"/root:/bin/bash"];
+ref_2 = [":";":";":";":";":"];
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",5);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+[r_1, r_2] = strsplit("root:x:0:0:root:/root:/bin/bash",":",7);
+[r_3, r_4] = strsplit("root:x:0:0:root:/root:/bin/bash",":",50);
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["abc";""];
+ref_2 = ',';
+[r_1, r_2] = strsplit("abc,",",");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";""];
+ref_2 = ',';
+[r_1, r_2] = strsplit("abc,",",",1);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+[r_1, r_2] = strsplit("abc,",",",1);
+[r_3, r_4] = strsplit("abc,",",",10);
+assert_checkequal(r_1, r_3);
+assert_checkequal(r_2, r_4);
+//===============================
+ref_1 = ["abc";"def";"ijk";"";"lmo"];
+ref_2 = [",";":";",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo","/:|,/");
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";"def";"ijk";"";"lmo"];
+ref_2 = [",";":";",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo",[":";","]);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+ref_1 = ["abc";"def";"ijk,:lmo"];
+ref_2 = [",";":"];
+[r_1, r_2] = strsplit("abc,def:ijk,:lmo",[":";","],2);
+assert_checkequal(ref_1, r_1);
+assert_checkequal(ref_2, r_2);
+//===============================
+v = "世界您好";
+c = "您";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "азеаея";
+c = "з";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "ድቅስድስግ";
+c = "ቅ";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "ハロー・ワールド";
+c = "ド";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
+v = "תוכנית";
+c = "י";
+[r_1,r_2] = strsplit(v,c);
+assert_checkequal(strcat(r_1,r_2), v);
+//===============================
diff --git a/modules/string/tests/unit_tests/strspn.dia.ref b/modules/string/tests/unit_tests/strspn.dia.ref
new file mode 100755
index 000000000..d5645a422
--- /dev/null
+++ b/modules/string/tests/unit_tests/strspn.dia.ref
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+if strspn('fcba73','fcb') <> 3 then bugmes();quit;end
+//===============================
+if strspn('fcba73','f') <> 1 then bugmes();quit;end
+//===============================
+if strspn('fcba73','') <> 0 then bugmes();quit;end
+//===============================
+if strspn('129th','1234567890') <> 3 then bugmes();quit;end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2;STR2,STR1];
+if strspn(STR,'i') <> [ 0 , 0 ; 0 , 0] then bugmes();quit;end
+if strspn(STR,'The') <> [ 0 , 3 ; 3 , 0 ] then bugmes();quit;end
+if strspn(STR,['Sci','The';'u','a']) <> [ 3 , 3 ; 0 , 0 ] then bugmes();quit;end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2];
+if strspn(STR,['Scilab','Tool']) <> [ 6 , 1 ] then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/strspn.tst b/modules/string/tests/unit_tests/strspn.tst
new file mode 100755
index 000000000..90812b3e3
--- /dev/null
+++ b/modules/string/tests/unit_tests/strspn.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+if strspn('fcba73','fcb') <> 3 then pause,end
+//===============================
+if strspn('fcba73','f') <> 1 then pause,end
+//===============================
+if strspn('fcba73','') <> 0 then pause,end
+//===============================
+if strspn('129th','1234567890') <> 3 then pause,end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2;STR2,STR1];
+if strspn(STR,'i') <> [ 0 , 0 ; 0 , 0] then pause,end
+if strspn(STR,'The') <> [ 0 , 3 ; 3 , 0 ] then pause,end
+if strspn(STR,['Sci','The';'u','a']) <> [ 3 , 3 ; 0 , 0 ] then pause,end
+//===============================
+STR1 = 'Scilab';
+STR2 = 'The Numerical Tool for Engineers';
+STR = [STR1,STR2];
+if strspn(STR,['Scilab','Tool']) <> [ 6 , 1 ] then pause,end
+//===============================
diff --git a/modules/string/tests/unit_tests/strstr.dia.ref b/modules/string/tests/unit_tests/strstr.dia.ref
new file mode 100755
index 000000000..8119b0393
--- /dev/null
+++ b/modules/string/tests/unit_tests/strstr.dia.ref
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+str = "This is a simple string";
+r = strstr (str,"simple");
+if r <> 'simple string' then bugmes();quit;end;
+//===============================
+r = strstr (str,"sample");
+if r <> '' then bugmes();quit;end;
+//===============================
+if strstr('','')<>'' then bugmes();quit;end;
+//===============================
+str1 ='1A2s 2';
+str2 ='1B3sc2';
+str3 ='1C4sci2';
+STR = [str1;str2;str3];
+r = strstr (STR,"s");
+if r <> ['s 2';'sc2';'sci2'] then bugmes();quit;end;
+//===============================
+r = strstr (STR,'');
+if r <> STR then bugmes();quit;end;
+//===============================
+r = strstr (STR,['A';'3';'i']);
+if r <> ['A2s 2';'3sc2';'sci2'] then bugmes();quit;end;
+//===============================
+r = strstr (STR,['';'';'']);
+if r <> STR then bugmes();quit;end;
+//===============================
diff --git a/modules/string/tests/unit_tests/strstr.tst b/modules/string/tests/unit_tests/strstr.tst
new file mode 100755
index 000000000..c6d85bf72
--- /dev/null
+++ b/modules/string/tests/unit_tests/strstr.tst
@@ -0,0 +1,35 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+str = "This is a simple string";
+r = strstr (str,"simple");
+if r <> 'simple string' then pause,end;
+//===============================
+r = strstr (str,"sample");
+if r <> '' then pause,end;
+//===============================
+if strstr('','')<>'' then pause,end;
+//===============================
+str1 ='1A2s 2';
+str2 ='1B3sc2';
+str3 ='1C4sci2';
+STR = [str1;str2;str3];
+r = strstr (STR,"s");
+if r <> ['s 2';'sc2';'sci2'] then pause,end;
+//===============================
+r = strstr (STR,'');
+if r <> STR then pause,end;
+//===============================
+r = strstr (STR,['A';'3';'i']);
+if r <> ['A2s 2';'3sc2';'sci2'] then pause,end;
+//===============================
+r = strstr (STR,['';'';'']);
+if r <> STR then pause,end;
+//=============================== \ No newline at end of file
diff --git a/modules/string/tests/unit_tests/strsubst.dia.ref b/modules/string/tests/unit_tests/strsubst.dia.ref
new file mode 100755
index 000000000..66c435c16
--- /dev/null
+++ b/modules/string/tests/unit_tests/strsubst.dia.ref
@@ -0,0 +1,392 @@
+//========================================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+//========================================================================================
+// <-- CLI SHELL MODE -->
+//========================================================================================
+// unit tests strsubst
+//========================================================================================
+if strsubst('abc,abd,aa,bxe',',',';')<>'abc;abd;aa;bxe' then bugmes();quit;end
+//========================================================================================
+if strsubst('abc,abd,aa,bxe',',',emptystr())<>'abcabdaabxe' then bugmes();quit;end
+//========================================================================================
+if strsubst(',abc,abd,aa,bxe',',',emptystr())<>'abcabdaabxe' then bugmes();quit;end
+//========================================================================================
+if strsubst('abc',',',';')<>'abc' then bugmes();quit;end
+//========================================================================================
+if strsubst('SCI/demos/scicos','SCI','.') <> './demos/scicos' then bugmes();quit;end
+//========================================================================================
+if strsubst('SCI/demos/scicos','/',' ') <> 'SCI demos scicos' then bugmes();quit;end
+//========================================================================================
+if strsubst([],'/',' ') <> [] then bugmes();quit;end
+//========================================================================================
+if strsubst([],' ','') <> [] then bugmes();quit;end
+//========================================================================================
+if strsubst('',' ','') <> '' then bugmes();quit;end
+//========================================================================================
+if strsubst("2","3","1") <> "2" then bugmes();quit;end
+//========================================================================================
+if strsubst(["2","3"],"3","1") <> ['2' '1'] then bugmes();quit;end
+//========================================================================================
+r = strsubst(['Scilab','Mathlab';'Octlab','Rlab'],'lab','');
+ref = ['Sci','Math';'Oct','R'];
+if (r <> ref) then bugmes();quit;end
+//========================================================================================
+if strsubst('xbc','/abc/',' ','r') <> 'xbc' then bugmes();quit;end
+if strsubst('axc','/abc/',' ','r') <> 'axc' then bugmes();quit;end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('abc','/ab*c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then bugmes();quit;end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then bugmes();quit;end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbc','/ab+bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then bugmes();quit;end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then bugmes();quit;end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbc','/ab{1,3}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{3,4}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{4,5}bc/','^','r') <> 'abbbbc' then bugmes();quit;end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then bugmes();quit;end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then bugmes();quit;end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then bugmes();quit;end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then bugmes();quit;end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then bugmes();quit;end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then bugmes();quit;end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then bugmes();quit;end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then bugmes();quit;end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then bugmes();quit;end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then bugmes();quit;end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then bugmes();quit;end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then bugmes();quit;end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then bugmes();quit;end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A]','/a]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then bugmes();quit;end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then bugmes();quit;end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then bugmes();quit;end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then bugmes();quit;end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then bugmes();quit;end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then bugmes();quit;end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then bugmes();quit;end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then bugmes();quit;end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then bugmes();quit;end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then bugmes();quit;end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then bugmes();quit;end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then bugmes();quit;end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then bugmes();quit;end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A]','/a]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then bugmes();quit;end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then bugmes();quit;end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then bugmes();quit;end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then bugmes();quit;end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then bugmes();quit;end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then bugmes();quit;end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then bugmes();quit;end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then bugmes();quit;end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then bugmes();quit;end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then bugmes();quit;end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then bugmes();quit;end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then bugmes();quit;end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then bugmes();quit;end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then bugmes();quit;end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then bugmes();quit;end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then bugmes();quit;end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then bugmes();quit;end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('A]','/a]/i','^','r') <> '^' then bugmes();quit;end
+if strsubst('abc','/abc/',' ','r') <> ' ' then bugmes();quit;end
+//========================================================================================
+if strsubst('......abef','/.*a(?!(b|cd)*e).*f/' ,' ' ,'r') <> '......abef' then bugmes();quit;end
+if strsubst('fools','/(foo|fool|x.|money|parted)$/' ,' ' ,'r') <> 'fools' then bugmes();quit;end
+if strsubst('fools','/(x.|foo|fool|x.|money|parted|y.)$/' ,' ' ,'r') <> 'fools' then bugmes();quit;end
+if strsubst('fools','/(foo|fool|money|parted)$/' ,' ' ,'r') <> 'fools' then bugmes();quit;end
+if strsubst('Oo','/^(o)(?!.*\1)/i' ,' ' ,'r') <> 'Oo' then bugmes();quit;end
+if strsubst('AbCd','/ab(?i)cd/' ,' ' ,'r') <> 'AbCd' then bugmes();quit;end
+if strsubst('a\nb\n','/a\Z/' ,' ' ,'r') <> 'a\nb\n' then bugmes();quit;end
+if strsubst('a\nb\n','/a\z/' ,' ' ,'r') <> 'a\nb\n' then bugmes();quit;end
+if strsubst('a\nb\n','/a$/' ,' ' ,'r') <> 'a\nb\n' then bugmes();quit;end
+if strsubst('b\na\n','/a\z/' ,' ' ,'r') <> 'b\na\n' then bugmes();quit;end
+if strsubst('a\nb\n','/a\Z/m' ,' ' ,'r') <> 'a\nb\n' then bugmes();quit;end
+if strsubst('a\nb\n','/a\z/m' ,' ' ,'r') <> 'a\nb\n' then bugmes();quit;end
+if strsubst('b\na\n','/a\z/m' ,' ' ,'r') <> 'b\na\n' then bugmes();quit;end
+if strsubst('aa\nb\n','/aa\Z/' ,' ' ,'r') <> 'aa\nb\n' then bugmes();quit;end
+if strsubst('aa\nb\n','/aa\z/' ,' ' ,'r') <> 'aa\nb\n' then bugmes();quit;end
+if strsubst('aa\nb\n','/aa$/' ,' ' ,'r') <> 'aa\nb\n' then bugmes();quit;end
+if strsubst('b\naa\n','/aa\z/' ,' ' ,'r') <> 'b\naa\n' then bugmes();quit;end
+if strsubst('aa\nb\n','/aa\Z/m' ,' ' ,'r') <> 'aa\nb\n' then bugmes();quit;end
+if strsubst('aa\nb\n','/aa\z/m' ,' ' ,'r') <> 'aa\nb\n' then bugmes();quit;end
+if strsubst('b\naa\n','/aa\z/m' ,' ' ,'r') <> 'b\naa\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa\Z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa\z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa$/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa\Z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa\z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa$/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa\Z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa\z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa$/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa\Z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa\z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/aa$/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa\Z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa\z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/aa$/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa\Z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa\z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/aa$/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa\Z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa\z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa$/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa\Z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa\z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa$/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa\Z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa\z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa$/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa\Z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa\z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/aa$/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa\Z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa\z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/aa$/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa\Z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa\z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/aa$/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('ab\nb\n','/ab\Z/' ,' ' ,'r') <> 'ab\nb\n' then bugmes();quit;end
+if strsubst('ab\nb\n','/ab\z/' ,' ' ,'r') <> 'ab\nb\n' then bugmes();quit;end
+if strsubst('ab\nb\n','/ab$/' ,' ' ,'r') <> 'ab\nb\n' then bugmes();quit;end
+if strsubst('b\nab\n','/ab\z/' ,' ' ,'r') <> 'b\nab\n' then bugmes();quit;end
+if strsubst('ab\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ab\nb\n' then bugmes();quit;end
+if strsubst('ab\nb\n','/ab\z/m' ,' ' ,'r') <> 'ab\nb\n' then bugmes();quit;end
+if strsubst('b\nab\n','/ab\z/m' ,' ' ,'r') <> 'b\nab\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab\Z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab\z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab$/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab\Z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab\z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab$/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab\Z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab\z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab$/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab\z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n','/ab$/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab\Z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab\z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n','/ab$/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab\Z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab\z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/ab$/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab\Z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab\z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab$/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n','/ab\Z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/ab\z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/ab$/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab\Z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab\z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab$/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab\z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n','/ab$/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n','/ab\Z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/ab\z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n','/ab$/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab\Z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab\z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/ab$/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('abb\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'abb\nb\n' then bugmes();quit;end
+if strsubst('abb\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'abb\nb\n' then bugmes();quit;end
+if strsubst('abb\nb\n' ,'/abb$/' ,' ' ,'r') <> 'abb\nb\n' then bugmes();quit;end
+if strsubst('b\nabb\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nabb\n' then bugmes();quit;end
+if strsubst('abb\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'abb\nb\n' then bugmes();quit;end
+if strsubst('abb\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'abb\nb\n' then bugmes();quit;end
+if strsubst('b\nabb\n','/abb\z/m' ,' ' ,'r') <> 'b\nabb\n' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb$/' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb\Z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb$/' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb\Z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb\z/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb$/' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('ac\nb\n' ,'/abb$/m' ,' ' ,'r') <> 'ac\nb\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb\z/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac\n' ,'/abb$/m' ,' ' ,'r') <> 'b\nac\n' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb\z/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('b\nac' ,'/abb$/m' ,' ' ,'r') <> 'b\nac' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb$/' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb\Z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb$/' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb\Z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb\z/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb$/' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('ca\nb\n' ,'/abb$/m' ,' ' ,'r') <> 'ca\nb\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb\z/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca\n' ,'/abb$/m' ,' ' ,'r') <> 'b\nca\n' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb\z/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('b\nca' ,'/abb$/m' ,' ' ,'r') <> 'b\nca' then bugmes();quit;end
+if strsubst('aaab' ,'/^(?=(a+?))\1ab/' ,' ' ,'r') <> 'aaab' then bugmes();quit;end
+if strsubst('aaab' ,'/^(?=(a+?))\1ab/' ,' ' ,'r') <> 'aaab' then bugmes();quit;end
+if strsubst('abcd:' ,'/([\w:]+::)?(\w+)$/' ,' ' ,'r') <> 'abcd:' then bugmes();quit;end
+if strsubst('abcd:' ,'/([\w:]+::)?(\w+)$/' ,' ' ,'r') <> 'abcd:' then bugmes();quit;end
+if strsubst('aaab' ,'/(>a+)ab/' ,' ' ,'r') <> 'aaab' then bugmes();quit;end
+//========================================================================================
+v = "世界您好";
+c = "您";
+if strsubst(v,c,'ç')<>'世界ç好' then bugmes();quit;end
+v = "азеазея";
+c = "з";
+if strsubst(v,c,'ç')<>'аçеаçея' then bugmes();quit;end
+v = "ድቅስድቅስግ";
+c = "ቅ";
+if strsubst(v,c,'ç')<> 'ድçስድçስግ' then bugmes();quit;end
+v = "ハロー・ワールド";
+c = "ド";
+if strsubst(v,c,'ç')<> 'ハロー・ワールç' then bugmes();quit;end
+v = "เฮลโลเวิลด์";
+c = "เ";
+if strsubst(v,c,'ç')<> 'çฮลโลçวิลด์' then bugmes();quit;end
+v = "حريات وحقوق";
+c = "قوق";
+if strsubst(v,c,'ç')<> 'حريات وحç' then bugmes();quit;end
+v = "ഹലോ വേള്‍ഡ";
+c = "‍ഡ";
+if strsubst(v,c,'ç')<>'ഹലോ വേള്ç' then bugmes();quit;end
+v = "תוכנית";
+c = "י";
+if strsubst(v,c,'ç')<>'תוכנçת' then bugmes();quit;end
+//===============================
+// Chinese
+str = '世界您好';
+if strsubst(str,'/^世界/','ç','r') <> 'ç您好' then bugmes();quit;end
+if strsubst(str,'/世界$/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/您好$/','ç','r') <> '世界ç' then bugmes();quit;end
+if strsubst(str,'/^您好/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/界您/','ç','r') <> '世ç好' then bugmes();quit;end
+if strsubst(str,'/界_您/','ç','r') <> str then bugmes();quit;end
+//========================================================================================
+// Russian
+str = 'привет мир';
+if strsubst(str,'/^привет/','ç','r') <> 'ç мир' then bugmes();quit;end
+if strsubst(str,'/привет$/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/мир$/','ç','r') <> 'привет ç' then bugmes();quit;end
+if strsubst(str,'/^мир/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/вет\sм/','ç','r') <> 'приçир' then bugmes();quit;end
+if strsubst(str,'/вет_м/','ç','r') <> 'привет мир' then bugmes();quit;end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+if strsubst(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','ç','r') <> 'çСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ' then bugmes();quit;end
+if strsubst(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','ç','r') <> 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦç' then bugmes();quit;end
+if strsubst(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','ç','r') <> 'АБВГДЄЖЅЗçЪІЬѢЮѦѨѪѬѮѰѲѴѤ' then bugmes();quit;end
+if strsubst(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','ç','r') <> str then bugmes();quit;end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+if strsubst(str,'/^丑丞串乃之乎也云亘亙些亦/','ç','r') <> 'ç亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃' then bugmes();quit;end
+if strsubst(str,'/丑丞串乃之乎也云亘亙些亦$/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/凰凱函刹劉劫勁勃$/','ç','r') <> '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪ç' then bugmes();quit;end
+if strsubst(str,'/^凰凱函刹劉劫勁勃/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/亨亮仔伊伎伍伽佃佑伶侃/','ç','r') <> '丑丞串乃之乎也云亘亙些亦亥ç侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃' then bugmes();quit;end
+if strsubst(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','ç','r') <> str then bugmes();quit;end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+if strsubst(str,'/^มกระดุกกร/','ç','r')<>'çะดิก' then bugmes();quit;end
+if strsubst(str,'/มกระดุกกร$/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/กกระดิก$/','ç','r')<>'มกระดุç' then bugmes();quit;end
+if strsubst(str,'/^กกระดิก/','ç','r') <> str then bugmes();quit;end
+if strsubst(str,'/ดุกก/','ç','r')<>'มกระçระดิก' then bugmes();quit;end
+if strsubst(str,'/ดุก_ก/','ç','r') <> str then bugmes();quit;end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/strsubst.tst b/modules/string/tests/unit_tests/strsubst.tst
new file mode 100755
index 000000000..e964cc29e
--- /dev/null
+++ b/modules/string/tests/unit_tests/strsubst.tst
@@ -0,0 +1,428 @@
+//========================================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+//========================================================================================
+
+// <-- CLI SHELL MODE -->
+
+//========================================================================================
+// unit tests strsubst
+//========================================================================================
+if strsubst('abc,abd,aa,bxe',',',';')<>'abc;abd;aa;bxe' then pause,end
+//========================================================================================
+if strsubst('abc,abd,aa,bxe',',',emptystr())<>'abcabdaabxe' then pause,end
+//========================================================================================
+if strsubst(',abc,abd,aa,bxe',',',emptystr())<>'abcabdaabxe' then pause,end
+//========================================================================================
+if strsubst('abc',',',';')<>'abc' then pause,end
+//========================================================================================
+if strsubst('SCI/demos/scicos','SCI','.') <> './demos/scicos' then pause,end
+//========================================================================================
+if strsubst('SCI/demos/scicos','/',' ') <> 'SCI demos scicos' then pause,end
+//========================================================================================
+if strsubst([],'/',' ') <> [] then pause,end
+//========================================================================================
+if strsubst([],' ','') <> [] then pause,end
+//========================================================================================
+if strsubst('',' ','') <> '' then pause,end
+//========================================================================================
+if strsubst("2","3","1") <> "2" then pause,end
+//========================================================================================
+if strsubst(["2","3"],"3","1") <> ['2' '1'] then pause,end
+//========================================================================================
+r = strsubst(['Scilab','Mathlab';'Octlab','Rlab'],'lab','');
+ref = ['Sci','Math';'Oct','R'];
+if (r <> ref) then pause,end
+//========================================================================================
+if strsubst('xbc','/abc/',' ','r') <> 'xbc' then pause,end
+if strsubst('axc','/abc/',' ','r') <> 'axc' then pause,end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('abc','/ab*c/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then pause,end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then pause,end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbc','/ab+bc/','^','r') <> '^' then pause,end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then pause,end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then pause,end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbc','/ab{1,3}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{3,4}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{4,5}bc/','^','r') <> 'abbbbc' then pause,end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then pause,end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then pause,end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then pause,end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then pause,end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then pause,end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then pause,end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then pause,end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then pause,end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then pause,end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then pause,end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then pause,end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then pause,end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then pause,end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then pause,end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then pause,end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then pause,end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then pause,end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then pause,end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then pause,end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then pause,end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then pause,end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then pause,end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then pause,end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then pause,end
+if strsubst('A]','/a]/i','^','r') <> '^' then pause,end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then pause,end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then pause,end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then pause,end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then pause,end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then pause,end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then pause,end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then pause,end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then pause,end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then pause,end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then pause,end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then pause,end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then pause,end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then pause,end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then pause,end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then pause,end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then pause,end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then pause,end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then pause,end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then pause,end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then pause,end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then pause,end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then pause,end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then pause,end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then pause,end
+if strsubst('A]','/a]/i','^','r') <> '^' then pause,end
+if strsubst('abbc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab?bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}bc/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/ab?bc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('abc','/ab?c/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/ab{0,1}c/',' ','r') <> ' ' then pause,end
+if strsubst('abbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abc','/^abc$/',' ','r') <> ' ' then pause,end
+if strsubst('abcc','/^abc$/',' ','r') <> 'abcc' then pause,end
+if strsubst('aabc','/^abc&/',' ','r') <> 'aabc' then pause,end
+if strsubst('abbbbc','/ab{0,}bc/','^','r') <> '^' then pause,end
+if strsubst('aabc','/abc$/','^','r') <> 'a^' then pause,end
+if strsubst('abc','/ab+bc/','^','r') <> 'abc' then pause,end
+if strsubst('abq','/ab+bc/','^','r') <> 'abq' then pause,end
+if strsubst('abbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab+bc/','^','r') <> '^' then pause,end
+if strsubst('abbbbc','/ab{1,}bc/','^','r') <> '^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('xy','/\By\b/','^','r') <> 'x^' then pause,end
+if strsubst('yz','/\by\B/','^','r') <> '^z' then pause,end
+if strsubst('e','/a|b|c|d|e/',' ','r') <> ' ' then pause,end
+if strsubst('abcdefg','/abcd*efg/',' ','r') <> ' ' then pause,end
+if strsubst('xaccy','/abc/',' ','r') <> 'xaccy' then pause,end
+if strsubst('xabyabbbz','/ab*/',' ','r') <> 'x yabbbz' then pause,end
+if strsubst('hij','/[abhgefdc]ij/',' ','r') <> ' ' then pause,end
+if strsubst('abcde','/^(ab|cd)e/',' ','r') <> 'abcde' then pause,end
+if strsubst('abbbbc','/ab*bc/',' ','r') <> ' ' then pause,end
+if strsubst('abbbbc','/.{1}/',' ','r') <> ' bbbbc' then pause,end
+if strsubst('abbbbc','/.{3,4}/',' ','r') <> ' bc' then pause,end
+if strsubst('effg','/(bc+d$|ef*g.|h?i(j|k))/','^','r') <> 'effg' then pause,end
+if strsubst('aa','/((((((((((a))))))))))\10/','^','r') <> '^' then pause,end
+if strsubst('a!','/((((((((((a))))))))))\041/','^','r') <> '^' then pause,end
+if strsubst('a','/(((((((((a)))))))))/','^','r') <> '^' then pause,end
+if strsubst('multiple words, yeah','/multiple words/','^','r') <> '^, yeah' then pause,end
+if strsubst('ac','/a[-]?c/','^','r') <> '^' then pause,end
+if strsubst('a','/(a)|\1/','^','r') <> '^' then pause,end
+if strsubst('A-','/a[-b]/i','^','r') <> '^' then pause,end
+if strsubst('A-','/a[b-]/i','^','r') <> '^' then pause,end
+if strsubst('A]','/a]/i','^','r') <> '^' then pause,end
+if strsubst('abc','/abc/',' ','r') <> ' ' then pause,end
+//========================================================================================
+if strsubst('......abef','/.*a(?!(b|cd)*e).*f/' ,' ' ,'r') <> '......abef' then pause,end
+if strsubst('fools','/(foo|fool|x.|money|parted)$/' ,' ' ,'r') <> 'fools' then pause,end
+if strsubst('fools','/(x.|foo|fool|x.|money|parted|y.)$/' ,' ' ,'r') <> 'fools' then pause,end
+if strsubst('fools','/(foo|fool|money|parted)$/' ,' ' ,'r') <> 'fools' then pause,end
+if strsubst('Oo','/^(o)(?!.*\1)/i' ,' ' ,'r') <> 'Oo' then pause,end
+if strsubst('AbCd','/ab(?i)cd/' ,' ' ,'r') <> 'AbCd' then pause,end
+if strsubst('a\nb\n','/a\Z/' ,' ' ,'r') <> 'a\nb\n' then pause,end
+if strsubst('a\nb\n','/a\z/' ,' ' ,'r') <> 'a\nb\n' then pause,end
+if strsubst('a\nb\n','/a$/' ,' ' ,'r') <> 'a\nb\n' then pause,end
+if strsubst('b\na\n','/a\z/' ,' ' ,'r') <> 'b\na\n' then pause,end
+if strsubst('a\nb\n','/a\Z/m' ,' ' ,'r') <> 'a\nb\n' then pause,end
+if strsubst('a\nb\n','/a\z/m' ,' ' ,'r') <> 'a\nb\n' then pause,end
+if strsubst('b\na\n','/a\z/m' ,' ' ,'r') <> 'b\na\n' then pause,end
+if strsubst('aa\nb\n','/aa\Z/' ,' ' ,'r') <> 'aa\nb\n' then pause,end
+if strsubst('aa\nb\n','/aa\z/' ,' ' ,'r') <> 'aa\nb\n' then pause,end
+if strsubst('aa\nb\n','/aa$/' ,' ' ,'r') <> 'aa\nb\n' then pause,end
+if strsubst('b\naa\n','/aa\z/' ,' ' ,'r') <> 'b\naa\n' then pause,end
+if strsubst('aa\nb\n','/aa\Z/m' ,' ' ,'r') <> 'aa\nb\n' then pause,end
+if strsubst('aa\nb\n','/aa\z/m' ,' ' ,'r') <> 'aa\nb\n' then pause,end
+if strsubst('b\naa\n','/aa\z/m' ,' ' ,'r') <> 'b\naa\n' then pause,end
+if strsubst('ac\nb\n','/aa\Z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/aa\z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/aa$/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n','/aa\Z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/aa\z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/aa$/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/aa\Z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/aa\z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/aa$/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ac\nb\n','/aa\Z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/aa\z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/aa$/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n','/aa\Z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/aa\z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/aa$/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/aa\Z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/aa\z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/aa$/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ca\nb\n','/aa\Z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/aa\z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/aa$/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n','/aa\Z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/aa\z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/aa$/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/aa\Z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/aa\z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/aa$/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('ca\nb\n','/aa\Z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/aa\z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/aa$/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n','/aa\Z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/aa\z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/aa$/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/aa\Z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/aa\z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/aa$/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('ab\nb\n','/ab\Z/' ,' ' ,'r') <> 'ab\nb\n' then pause,end
+if strsubst('ab\nb\n','/ab\z/' ,' ' ,'r') <> 'ab\nb\n' then pause,end
+if strsubst('ab\nb\n','/ab$/' ,' ' ,'r') <> 'ab\nb\n' then pause,end
+if strsubst('b\nab\n','/ab\z/' ,' ' ,'r') <> 'b\nab\n' then pause,end
+if strsubst('ab\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ab\nb\n' then pause,end
+if strsubst('ab\nb\n','/ab\z/m' ,' ' ,'r') <> 'ab\nb\n' then pause,end
+if strsubst('b\nab\n','/ab\z/m' ,' ' ,'r') <> 'b\nab\n' then pause,end
+if strsubst('ac\nb\n','/ab\Z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/ab\z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/ab$/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n','/ab\Z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/ab\z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/ab$/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/ab\Z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/ab\z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/ab$/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ac\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/ab\z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n','/ab$/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n','/ab\Z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/ab\z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n','/ab$/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/ab\Z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/ab\z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/ab$/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ca\nb\n','/ab\Z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/ab\z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/ab$/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n','/ab\Z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/ab\z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/ab$/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/ab\Z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/ab\z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/ab$/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('ca\nb\n','/ab\Z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/ab\z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n','/ab$/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n','/ab\Z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n' ,'/ab\z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n','/ab$/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/ab\Z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/ab\z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/ab$/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('abb\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'abb\nb\n' then pause,end
+if strsubst('abb\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'abb\nb\n' then pause,end
+if strsubst('abb\nb\n' ,'/abb$/' ,' ' ,'r') <> 'abb\nb\n' then pause,end
+if strsubst('b\nabb\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nabb\n' then pause,end
+if strsubst('abb\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'abb\nb\n' then pause,end
+if strsubst('abb\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'abb\nb\n' then pause,end
+if strsubst('b\nabb\n','/abb\z/m' ,' ' ,'r') <> 'b\nabb\n' then pause,end
+if strsubst('ac\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n' ,'/abb$/' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n' ,'/abb\Z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n' ,'/abb$/' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/abb\Z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/abb\z/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/abb$/' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ac\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('ac\nb\n' ,'/abb$/m' ,' ' ,'r') <> 'ac\nb\n' then pause,end
+if strsubst('b\nac\n' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n' ,'/abb\z/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac\n' ,'/abb$/m' ,' ' ,'r') <> 'b\nac\n' then pause,end
+if strsubst('b\nac' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/abb\z/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('b\nac' ,'/abb$/m' ,' ' ,'r') <> 'b\nac' then pause,end
+if strsubst('ca\nb\n' ,'/abb\Z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n' ,'/abb\z/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n' ,'/abb$/' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n' ,'/abb\Z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n' ,'/abb\z/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n' ,'/abb$/' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/abb\Z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/abb\z/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/abb$/' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('ca\nb\n' ,'/abb\Z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n' ,'/abb\z/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('ca\nb\n' ,'/abb$/m' ,' ' ,'r') <> 'ca\nb\n' then pause,end
+if strsubst('b\nca\n' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n' ,'/abb\z/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca\n' ,'/abb$/m' ,' ' ,'r') <> 'b\nca\n' then pause,end
+if strsubst('b\nca' ,'/abb\Z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/abb\z/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('b\nca' ,'/abb$/m' ,' ' ,'r') <> 'b\nca' then pause,end
+if strsubst('aaab' ,'/^(?=(a+?))\1ab/' ,' ' ,'r') <> 'aaab' then pause,end
+if strsubst('aaab' ,'/^(?=(a+?))\1ab/' ,' ' ,'r') <> 'aaab' then pause,end
+if strsubst('abcd:' ,'/([\w:]+::)?(\w+)$/' ,' ' ,'r') <> 'abcd:' then pause,end
+if strsubst('abcd:' ,'/([\w:]+::)?(\w+)$/' ,' ' ,'r') <> 'abcd:' then pause,end
+if strsubst('aaab' ,'/(>a+)ab/' ,' ' ,'r') <> 'aaab' then pause,end
+//========================================================================================
+v = "世界您好";
+c = "您";
+if strsubst(v,c,'ç')<>'世界ç好' then pause,end
+
+v = "азеазея";
+c = "з";
+if strsubst(v,c,'ç')<>'аçеаçея' then pause,end
+
+v = "ድቅስድቅስግ";
+c = "ቅ";
+if strsubst(v,c,'ç')<> 'ድçስድçስግ' then pause,end
+
+v = "ハロー・ワールド";
+c = "ド";
+if strsubst(v,c,'ç')<> 'ハロー・ワールç' then pause,end
+
+v = "เฮลโลเวิลด์";
+c = "เ";
+if strsubst(v,c,'ç')<> 'çฮลโลçวิลด์' then pause,end
+
+v = "حريات وحقوق";
+c = "قوق";
+if strsubst(v,c,'ç')<> 'حريات وحç' then pause,end
+
+v = "ഹലോ വേള്‍ഡ";
+c = "‍ഡ";
+if strsubst(v,c,'ç')<>'ഹലോ വേള്ç' then pause,end
+
+v = "תוכנית";
+c = "י";
+if strsubst(v,c,'ç')<>'תוכנçת' then pause,end
+//===============================
+// Chinese
+str = '世界您好';
+if strsubst(str,'/^世界/','ç','r') <> 'ç您好' then pause,end
+
+if strsubst(str,'/世界$/','ç','r') <> str then pause,end
+
+if strsubst(str,'/您好$/','ç','r') <> '世界ç' then pause,end
+
+if strsubst(str,'/^您好/','ç','r') <> str then pause,end
+
+if strsubst(str,'/界您/','ç','r') <> '世ç好' then pause,end
+
+if strsubst(str,'/界_您/','ç','r') <> str then pause,end
+//========================================================================================
+// Russian
+str = 'привет мир';
+if strsubst(str,'/^привет/','ç','r') <> 'ç мир' then pause,end
+
+if strsubst(str,'/привет$/','ç','r') <> str then pause,end
+
+if strsubst(str,'/мир$/','ç','r') <> 'привет ç' then pause,end
+
+if strsubst(str,'/^мир/','ç','r') <> str then pause,end
+
+if strsubst(str,'/вет\sм/','ç','r') <> 'приçир' then pause,end
+
+if strsubst(str,'/вет_м/','ç','r') <> 'привет мир' then pause,end
+//========================================================================================
+// Cyrilic
+str = 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ';
+
+if strsubst(str,'/^АБВГДЄЖЅЗИІКЛМНОПҀР/','ç','r') <> 'çСТѸФХѠЦЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ' then pause,end
+
+if strsubst(str,'/АБВГДЄЖЅЗИІКЛМНОПҀР$/','ç','r') <> str then pause,end
+
+if strsubst(str,'/ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ$/','ç','r') <> 'АБВГДЄЖЅЗИІКЛМНОПҀРСТѸФХѠЦç' then pause,end
+
+if strsubst(str,'/^ЧШЩЪЪІЬѢЮѦѨѪѬѮѰѲѴѤ/','ç','r') <> str then pause,end
+
+if strsubst(str,'/ИІКЛМНОПҀРСТѸФХѠЦЧШЩЪ/','ç','r') <> 'АБВГДЄЖЅЗçЪІЬѢЮѦѨѪѬѮѰѲѴѤ' then pause,end
+
+if strsubst(str,'/ИІКЛМНОПҀ_РСТѸФХѠЦЧШЩЪ/','ç','r') <> str then pause,end
+//========================================================================================
+// Japanese
+str = '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃';
+
+if strsubst(str,'/^丑丞串乃之乎也云亘亙些亦/','ç','r') <> 'ç亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃' then pause,end
+
+if strsubst(str,'/丑丞串乃之乎也云亘亙些亦$/','ç','r') <> str then pause,end
+
+if strsubst(str,'/凰凱函刹劉劫勁勃$/','ç','r') <> '丑丞串乃之乎也云亘亙些亦亥亨亮仔伊伎伍伽佃佑伶侃侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪ç' then pause,end
+
+if strsubst(str,'/^凰凱函刹劉劫勁勃/','ç','r') <> str then pause,end
+
+if strsubst(str,'/亨亮仔伊伎伍伽佃佑伶侃/','ç','r') <> '丑丞串乃之乎也云亘亙些亦亥ç侑俄侠俣俐侶倭俺倶倦倖偲僅傭儲允兎兜其冥冴冶凄凌凜凛凧凪凰凱函刹劉劫勁勃' then pause,end
+
+if strsubst(str,'/亨亮仔伊_伎伍伽佃佑伶侃/','ç','r') <> str then pause,end
+//========================================================================================
+// Thaï
+str = 'มกระดุกกระดิก';
+if strsubst(str,'/^มกระดุกกร/','ç','r')<>'çะดิก' then pause,end
+
+if strsubst(str,'/มกระดุกกร$/','ç','r') <> str then pause,end
+
+if strsubst(str,'/กกระดิก$/','ç','r')<>'มกระดุç' then pause,end
+
+if strsubst(str,'/^กกระดิก/','ç','r') <> str then pause,end
+
+if strsubst(str,'/ดุกก/','ç','r')<>'มกระçระดิก' then pause,end
+
+if strsubst(str,'/ดุก_ก/','ç','r') <> str then pause,end
+//========================================================================================
diff --git a/modules/string/tests/unit_tests/strtod.dia.ref b/modules/string/tests/unit_tests/strtod.dia.ref
new file mode 100755
index 000000000..aa482afbe
--- /dev/null
+++ b/modules/string/tests/unit_tests/strtod.dia.ref
@@ -0,0 +1,252 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// strtod
+//===============================
+// Without optional argument
+N = 666.666;
+STREND = " is a double";
+STR = string(N)+STREND;
+d = strtod(STR);
+assert_checkequal(d, N);
+[d,s] = strtod(STR);
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR);
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR);
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR);
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([]);
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -.3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs .01sdf");
+assert_checkequal(s, "abs .01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-.4e-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"]);
+assert_checkequal(s, [",1" ""]);
+assert_checkequal(d, [2 2.1]);
+//===============================
+// With point as optional argument
+N = 666.666;
+STREND = " is a double";
+STR = string(N)+STREND;
+d = strtod(STR,".");
+assert_checkequal(d, N);
+[d,s] = strtod(STR,".");
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR,".");
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR,".");
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR,".");
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("",".");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ",".");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123",".");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ",".");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ",".");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([],".");
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf",".");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf",".");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -.3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs .01sdf",".");
+assert_checkequal(s, "abs .01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-.4e-3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"],".");
+assert_checkequal(s, [",1" ""]);
+assert_checkequal(d, [2 2.1]);
+//===============================
+// With comma as optional argument
+STREND = " is a double";
+STR = "666,666"+STREND;
+d = strtod(STR,",");
+assert_checkequal(d, N);
+[d,s] = strtod(STR,",");
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR,",");
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR,",");
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR,",");
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("",",");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ",",");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123",",");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ",",");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ",",");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([],",");
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf",",");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf",",");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -,3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs ,01sdf",",");
+assert_checkequal(s, "abs ,01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-,4e-3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"],",");
+assert_checkequal(s, ["" ".1"]);
+assert_checkequal(d, [2.1 2]);
+//===============================
diff --git a/modules/string/tests/unit_tests/strtod.tst b/modules/string/tests/unit_tests/strtod.tst
new file mode 100755
index 000000000..7d0d82b1e
--- /dev/null
+++ b/modules/string/tests/unit_tests/strtod.tst
@@ -0,0 +1,258 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// strtod
+//===============================
+// Without optional argument
+N = 666.666;
+STREND = " is a double";
+STR = string(N)+STREND;
+d = strtod(STR);
+assert_checkequal(d, N);
+[d,s] = strtod(STR);
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR);
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR);
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR);
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([]);
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -.3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs .01sdf");
+assert_checkequal(s, "abs .01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-.4e-3 sdf");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"]);
+assert_checkequal(s, [",1" ""]);
+assert_checkequal(d, [2 2.1]);
+//===============================
+
+
+// With point as optional argument
+N = 666.666;
+STREND = " is a double";
+STR = string(N)+STREND;
+d = strtod(STR,".");
+assert_checkequal(d, N);
+[d,s] = strtod(STR,".");
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR,".");
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR,".");
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR,".");
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("",".");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ",".");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123",".");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ",".");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ",".");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([],".");
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf",".");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf",".");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -.3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs .01sdf",".");
+assert_checkequal(s, "abs .01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-.4e-3 sdf",".");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"],".");
+assert_checkequal(s, [",1" ""]);
+assert_checkequal(d, [2 2.1]);
+//===============================
+
+
+// With comma as optional argument
+STREND = " is a double";
+STR = "666,666"+STREND;
+d = strtod(STR,",");
+assert_checkequal(d, N);
+[d,s] = strtod(STR,",");
+assert_checkequal(d, N);
+assert_checkequal(s, STREND);
+//===============================
+STR = "1";
+[d,s] = strtod(STR,",");
+assert_checkequal(s, "");
+assert_checkequal(d, 1);
+//===============================
+STR = "string";
+[d,s] = strtod(STR,",");
+assert_checkequal(s, STR);
+assert_checkequal(d, %nan);
+//===============================
+STR1 = "1A";
+STR2 = "2B";
+STR3 = "3C";
+STR4 = "4d";
+STR = [STR1,STR2;STR3,STR4];
+[d,s] = strtod(STR,",");
+assert_checkequal(s, ["A","B";"C","d"]);
+assert_checkequal(d, [1,2;3,4]);
+//===============================
+[d,s] = strtod("",",");
+assert_checkequal(s, "");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" ",",");
+assert_checkequal(s, " ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" 123",",");
+assert_checkequal(s, "");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" 123 ",",");
+assert_checkequal(s, " ");
+assert_checkequal(d, 123);
+//===============================
+[d,s] = strtod(" sdf ",",");
+assert_checkequal(s, " sdf ");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod([],",");
+assert_checkequal(s, "");
+assert_checkequal(d, []);
+//===============================
+[d,s] = strtod("-3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -3);
+//===============================
+[d,s] = strtod("abc -3 sdf",",");
+assert_checkequal(s, "abc -3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("- 3 sdf",",");
+assert_checkequal(s, "- 3 sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod(" -,3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -0.3);
+//===============================
+[d,s] = strtod("abs ,01sdf",",");
+assert_checkequal(s, "abs ,01sdf");
+assert_checkequal(d, %nan);
+//===============================
+[d,s] = strtod("-,4e-3 sdf",",");
+assert_checkequal(s, " sdf");
+assert_checkequal(d, -.4e-3);
+//===============================
+[d,s] = strtod(["2,1","2.1"],",");
+assert_checkequal(s, ["" ".1"]);
+assert_checkequal(d, [2.1 2]);
+//===============================
diff --git a/modules/string/tests/unit_tests/strtok.dia.ref b/modules/string/tests/unit_tests/strtok.dia.ref
new file mode 100755
index 000000000..7d37437fa
--- /dev/null
+++ b/modules/string/tests/unit_tests/strtok.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//=================================================
+if strtok('') <> '' then bugmes();quit;end
+//=================================================
+if strtok('','') <> '' then bugmes();quit;end
+//=================================================
+if strtok('','a') <> '' then bugmes();quit;end
+if strtok('a') <> '' then bugmes();quit;end
+//=================================================
+TOKENS = [];
+token = strtok("A string of ,,tokens and some more tokens"," ,");
+TOKENS = [TOKENS,token];
+while( token <> '' )
+ token = strtok(" ,");
+ TOKENS = [TOKENS,token];
+end
+REF = 'A string of tokens and some more tokens ';
+if strcat(TOKENS,' ')<> REF then bugmes();quit;end
+//=================================================
diff --git a/modules/string/tests/unit_tests/strtok.tst b/modules/string/tests/unit_tests/strtok.tst
new file mode 100755
index 000000000..922540622
--- /dev/null
+++ b/modules/string/tests/unit_tests/strtok.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//=================================================
+if strtok('') <> '' then pause,end
+//=================================================
+if strtok('','') <> '' then pause,end
+//=================================================
+if strtok('','a') <> '' then pause,end
+if strtok('a') <> '' then pause,end
+//=================================================
+TOKENS = [];
+token = strtok("A string of ,,tokens and some more tokens"," ,");
+TOKENS = [TOKENS,token];
+while( token <> '' )
+ token = strtok(" ,");
+ TOKENS = [TOKENS,token];
+end
+REF = 'A string of tokens and some more tokens ';
+if strcat(TOKENS,' ')<> REF then pause,end
+//=================================================
diff --git a/modules/string/tests/unit_tests/text.txt b/modules/string/tests/unit_tests/text.txt
new file mode 100755
index 000000000..12cfca57e
--- /dev/null
+++ b/modules/string/tests/unit_tests/text.txt
@@ -0,0 +1,417 @@
+Scilab est un logiciel de calcul numérique fournissant un environnement de calcul pour des applications scientifiques. Développé depuis 1990 par des chercheurs de l’INRIA et de l’ENPC, il est, depuis la création du Scilab Consortium en mai 2003, développé et maintenu par l'INRIA.
+
+La syntaxe et les possibilités offertes par Scilab sont similaires à celles de Matlab, mais les deux logiciels ne sont pas compatibles même si un traducteur Matlab vers Scilab existe.
+
+Distribué gratuitement et avec son code source via l’Internet depuis 1994, il est disponible précompilé pour un grand nombre d’architectures. Néanmoins (contrairement à ce qui est prétendu sur son site) il ne s’agit ni d’un logiciel Open source selon l'Open Source Initiative ni d’un Logiciel libre. En effet, la licence de Scilab n’autorise pas la distribution commerciale d’une version modifiée. Selon la classification de la FSF, il s'agirait donc plutôt d'un logiciel semi-libre [1].
+
+Sommaire [masquer]
+1 Présentation succincte de l’utilisation
+1.1 Syntaxe élémentaire en ligne de commande
+1.1.1 Booléens
+1.1.2 Polynômes et fractions rationnelles
+1.1.3 Caractère
+1.1.4 Matrices
+1.2 Calcul numérique
+1.3 Tracé de fonction
+1.3.1 Tracé 2D
+1.3.2 Carte d’un champ
+1.3.3 Tracé 3D
+1.3.4 Représentation de données statistiques
+1.3.5 Dessin
+1.3.6 Mise en forme, axes et fenêtrage
+1.3.7 Exemple
+1.4 Programmation
+1.5 Environnement
+2 Voir aussi
+2.1 Logiciels similaires
+2.2 Liens externes
+
+
+
+ Présentation succincte de l’utilisation [modifier]
+Scilab peut exécuter des instructions en ligne de commande, ainsi que des fichiers de commande (scripts) contenant des instructions (format texte). On peut également exécuter des programmes Fortran ou C à partir de Scilab. Scilab est complétée par un environnement graphique Scicos comparable à l'environnement graphique Simulink fourni avec Matlab.
+
+
+ Syntaxe élémentaire en ligne de commande [modifier]
+L’invite de la ligne de commande (prompt) est constituée d’une « flèche » : deux tirets et un signe supérieur -->. L’instruction est tapée puis validée avec la touche de retour chariot (Enter, Return). Le résultat est affiché à la suite, sauf si la ligne se termine par un point-virgule auquel cas le résultat est caché. Par exemple :
+
+-->a = 1;
+-->A = 2;
+-->a + A
+ans =
+
+3.
+La première commande associe la valeur « 1 » à la variable « a » (résultat caché), la seconde commande associe la valeur « 2 » à la variable « A » (la syntaxe est sensible à la casse), la troisième commande calcule la somme des deux (ans est l’abréviation de answer qui signifie « réponse » en anglais).
+
+On peut écrire plusieurs instructions sur la même ligne en les séparant d’une virgule, ou d’un point-virgule si l’on ne veut pas en afficher le résultat. On peut aussi mettre une instruction sur plusieurs lignes (par exemple pour des raisons de présentation) en mettant trois points « ... » avant de presser la touche de retour chariot.
+
+Scilab utilise les fonctions et opérateurs classiques (+, -, *, /, ^ ou **, sqrt() pour la racine carrée, cos() pour le cosinus, int() pour la partie entière, round() pour l’arrondi au plus proche, abs() pour la valeur absolue…) et quelques autres (par exemple rand pour avoir un nombre aléatoire entre 0 et 1). La fonction who affiche les variables déclarées. La variable ans contient le dernier résultat.
+
+Le séparateur décimal est le point. Pour entrer l’imaginaire i, il faut utiliser %i ; il figure simplement sous la forme « i » dans les résultats. Pour entrer l’infini 8, il faut utiliser %inf ; il figure simplement sous la forme « inf » dans les résultats. La valeur de p s’obtient par %pi, et la constante de Neper e par %e.
+
+
+ Booléens [modifier]
+Lorsque l’on assigne une valeur booléenne, on utilise %t pour « vrai » (true) et %f pour « faux » (false). Le résultat de l’opération affiché est respectivement T ou F.
+
+L’opérateur Ou est noté « | » (tube), Et est noté « & » (esperluette), Non est noté « ~ » (tilde). Exemple
+
+-->(%t & %f) | %f
+ans =
+
+F.
+Un booléen peut également s’obtenir en comparant deux valeurs, avec les relations d’égalité == et de différence <> ou ~=, et les relations d'ordre <, <=, > et >=.
+
+
+ Polynômes et fractions rationnelles [modifier]
+Il s’agit ici non pas de fonctions polynômes qui ne permettraient que leur évaluation numérique, mais de polynômes formels.
+
+La déclaration d’un polynôme se fait avec deux fonctions. La première fonction, x = poly(0, 'x') qui définit « x » comme l’indéterminée d’un polynôme, puis l’énoncé du polynôme utilisant cette indéterminée. Exemple
+
+-->x = poly(0, 'x'); p = x ^ 2 + 2 * x + 1
+p =
+
+ 2
+1 + 2x + x
+La fonction roots(p) donne les racines du polynôme p, la fonction coeff(p) donne une matrice dont les coefficients sont les coefficients du polynôme p. La fonction varn(p) renvoie le nom de l’indéterminée de p (ici, x).
+
+En fait, la commande x = poly(0, 'x') définit que x est le polynôme le plus simple dont l’indéterminée est le caractère « x » et dont la racine est 0, c’est-à-dire le monôme x. La commande x = poly(2, 'x') définit de même le polynôme le plus simple ayant pour racine 2, c’est-à-dire x - 2.
+
+Cette fonction permet de définir un polynôme ayant plusieurs racines, en utilisant une matrice ligne au lieu d’un simple nombre. Par exemple, x=poly([1 2],'x') définit le polynôme le plus simple ayant pour racines 1 et 2, soit le polynôme x2 - 3x + 2.
+
+On peut aussi utiliser cette fonction pour générer un polynôme dont les coefficients sont contenus dans une matrice ligne, en ajoutant le caractère 'c' à la fin des arguments. Par exemple, x = poly([a0, a1, …, an], 'x', 'c') définit le polynôme a0 + a1·x + … + an·xn.
+
+Scilab gère de la même manière les fractions rationnelles. Il suffit de déclarer un monôme avec poly() et définir ensuite la fraction rationnelle. Exemple
+
+-->x = poly(0, 'x'); f = (1 + x) / (1 - x)
+f =
+
+1 + x
+-----
+1 - x
+
+-->1/f
+ans =
+
+1 - x
+-----
+1 + x
+Pour avoir le numérateur de f, il suffit de taper f.num ; le dénominateur de f s’obtient avec f.den.
+
+La fonction derivat(p) donne la dérivation formelle du polynôme ou d’une fraction rationnelle p. La fonction simp(q) fait la simplification de la fraction rationnelle q.
+
+L’utilisation du polynôme ou d’une fraction rationnelle en tant que fonction se fait par la fonction horner : horner(p,2) calcule p(2).
+
+
+ Caractère [modifier]
+Les caractères isolés ou les chaînes de caractères sont notés entre apostrophes simples, ou bien entre guillemets : 'abc' ou "abc".
+
+L'apostrophe indique la fin d'une chaîne ; pour mettre une apostrophe dans une chaîne, il faut en écrire deux accolées ''.
+
+L’addition + sur des chaînes de caractères produit la concaténation. Une chaîne de caractère peut être évaluée, c’est-à-dire transformée en commande Scilab, par la fonction evstr().
+
+
+ Matrices [modifier]
+Scilab a été conçu pour le calcul matriciel. Toutes les fonctions s’appliquent à des matrices ; par exemple si M est une matrice, alors log(M) sera la matrice dont les coefficients sont les logarithmes des coefficients de M. Les éléments des matrices peuvent être de tout type (nombre réel, nombre complexe, booléen, polynôme, fraction rationnelle, chaîne de caractères…).
+
+Pour définir une matrice à partir de ses coefficients, on les place entre deux crochets […]. Les éléments d’une ligne sont séparés d’un espace ou d’une virgule, les lignes sont séparées d’un point-virgule. À l’affichage, la matrice est représentée comme un tableau encadré par des points d’exclamation. Par exemple :
+
+-->[1,0,0;0,1,0;0,0,1]
+ans =
+
+! 1. 0. 0. !
+! 0. 1. 0. !
+! 0. 0. 1. !
+La matrice vide est notée par []. L’expression M(i,j) désigne l’élément (i, j) de la matrice M. Le caractère : (deux-points) signifie « tous les indices », par exemple M(1, :) est la première ligne de la matrice (c’est un vecteur ligne). Le caractère $ (dollar) désigne le dernier indice (ligne ou colonne) d’une matrice.
+
+L’expression N1:N2 permet de générer une matrice-ligne dont le premier coefficient est N1, le dernier est inférieur ou égal à N2, et le pas entre les coefficients est 1. L’expression N1:pas:N2 permet de générer une matrice-ligne en choisissant le pas. Par exemple
+
+-->1.1:5.2
+ans =
+
+! 1.1 2.1 3.1 4.1 5.1 !
+
+--> 1:2:5
+ans =
+
+! 1 3 5 !
+
+-->'a' :'d'
+ans =
+
+abcd
+La fonction zeros(m,n) crée une matrice m×n remplie de 0 ; la fonction ones(m,n) crée une matrice m×n remplie de 1. La fonction eye(n,n) crée une matrice unité n×n. On peut aussi passer une matrice M en paramètre de ces fonctions ; elles créent alors une matrice de même dimension que la matrice M. Par exemple, M=zeros(M) met tous les coefficients de M à zéro.
+
+Si f est une fonction extérieure (c’est-à-dire par définie par deff ou par function, voir ci-après), et que x et y sont des vecteurs, alors la fonction feval permet de bâtir une matrice z = f(x, y)
+
+z = feval(x, y, f) : on a z(i, j) = f(x(i), y(j))
+La fonction size(M) renvoie la taille de la matrice sous la forme d’une matrice 2×1 contenant le nombre de lignes puis le nombre de colonnes.
+
+Les opérations spécifiques aux matrices classiques sont :
+
+la transposition : il suffit de mettre une apostrophe ’ après la matrice ;
+le produit de matrices : * ;
+produit et rapport élément par élément : .* et ./ ;
+le produit tensoriel .*. ;
+le déterminant d’une matrice carrée M : det(M) (determ() pour une matrice de polynômes et detr() pour une matrice de fraction rationnelle) ;
+la trace d’une matrice carrée M : trace(M) ;
+l’inverse d’une matrice inversible M : inv(M).
+Un vecteur est une matrice ligne ou colonne (matrice 1 × n ou n × 1) ; l’expression V(i) désigne la composante i du vecteur V. Si V1 et V2 sont des vecteurs colonnes, alors le produit scalaire est V1' * V2 ; si ce sont des vecteurs lignes, le produit scalaire est V1 * V2'.
+
+
+ Calcul numérique [modifier]
+Scilab peut effectuer des calculs numériques.
+
+On peut en faire une utilisation triviale comme calculatrice, en entrant simplement les opérations à effectuer.
+
+La fonction deff permet de définir de nouvelles fonctions (appelées « fonctions externes ») pouvant s’exprimer avec les opérateurs déjà prédéfinis (les « fonctions primitives »). On passe deux chaînes de caractères comme paramètre ; la première indique le nom de la fonction et les variables utilisées en entrée et en sortie, et la deuxième indique la formule. Par exemple, la fonction
+
+f(x) = 2 · x
+peut se définir par
+
+deff('[y] = f(x)', 'y = 2 * x')
+(voir aussi la section Programmation).
+
+Intégration
+integrate('expression', 'x', x0, x1) calcule l’intégrale de la fonction décrite par expression (c’est une chaîne de caractères interprétable par Scilab, comme par exemple 'sin(x)'), x étant la variable d’intégration, entre les valeurs x0 et x1.
+Résolution d'équations
+Scilab dispose de plusieurs primitives permettant la résolution d'équations (voir Solveur d'équations), entres autres :
+linsolve : résolution d'un système d'équations linéaires,
+syntaxe : [x0,kerA]=linsolve(A,b)
+où A est la matrice réelle des coefficients du système d'équations, et b un vecteur de constantes ; les solutions de A×x + b = 0 sont de la forme x0 + w×kerA, w étant un réel arbitraire ;
+solve : résolution symbolique d'un système linéaire,
+syntaxe : w = solve(A,b)
+où A est une matrice triangulaire supérieure de caractères (les coefficients du système d'équation), b est un vecteur de caractères (la partie à droite des signes égal), et w est la matrice résultat de A×w = b ;
+ode : résolution d'une d'équation différentielle ordinaire (ordinary differential equation) ; si l'équation différentielle est dy/dt = ƒ(t), alors ƒ ayant été définie (fonction externe), la syntaxe pour déterminer y(t) est
+y = ode(y0,t0,t,f)
+oùy0 et t0 sont les valeurs initiales du système, t est un vecteur de valeurs pour lesquelles on calcule les solutions, et y est le vecteur de solutions (plot(t,y) permet de tracer le graphique des solutions) ;
+la primitive ode admet des arguments permettant de résoudre des situations spécifiques : 'roots' pour rajouter une équation g(t,y) = 0, 'discrete' pour calculer de manière récursive y(k+1)=ƒ(k,y(k)) à partir d'un état initial y(k0).
+Il existe d'autres primitives pour des systèmes spécifiques.
+
+ Tracé de fonction [modifier]
+
+ Tracé 2D [modifier]
+Le tracé d’une fonction se fait en deux étapes
+
+définir l’étendue de la variable abscisse et le pas, sous la forme d’un vecteur colonne, par exemple x = [début:pas:fin]' ;
+tracer la fonction avec la commande plot(x, f(x)) si ƒ est la fonction.
+On peut tracer simultanément plusieurs fonctions en les mettant dans une matrice, par exemple plot(x, [f1(x) f2(x) f3(x)]).
+
+On note en fait que ƒ(x) est elle-même un vecteur. On peut de manière générale définir un vecteur des valeurs de x et un vecteur des valeurs de y, et la fonction plot(x, y) tracera le nuage de points.
+
+Si ƒ est une fonction externe (par exemple définie avec deff, voir ci-dessus, ou function, voir ci-après), alors on peut tracer directement la fonction avec fplot2d(x, f). On peut aussi définir y par y = feval(x, f), puis tracer avec plot(x,y).
+
+La fonction xgrid permet d’afficher une grille correspondant aux graduations.
+
+Les fonctions plot2di, utilisées à la place de plot, permettent de faire varier l’apparence générale du tracé :
+
+plot2d : trait « normal » ; identique à plot, mais permet l’utilisation de marqueurs ;
+plot2d2 : trait en escalier ;
+plot2d3 : tracé en barres ;
+plot2d4 : tracé en « flèches » (pour un champ de vecteurs) ;
+Ces fonctions plot2di acceptent des arguments modifiant le tracé, sous la forme plot2di(x, y, arguments). Les arguments sont de la forme mot-clef = valeur, et sont séparés par des virgules.
+
+Pour placer des marqueurs, on utilise l’argument style = n ou n est un entier positif ou négatif (par exemple plot2d(x, y, style = 1)) ; un nombre négatif remplace les points par des marqueurs (une étoile pour -10, des ronds pour -9, …, des petits points pour 0, la liste s'obtient en tapant la commande getsymbol) et un nombre positif indique un trait plein mais de couleur déterminée (selon la carte de couleur définie, voir ci-après).
+
+Si le tracé comporte plusieurs courbes (donc mis dans une matrice ligne Y), l’argument style est une matrice, la valeur de chaque élément indiquant le style de chaque courbe, par exemple
+
+Y = [cos(x), sin(x)]; plot2d(x, Y, style = [-2, -1])
+Dans ce cas-là, on peut inscrire une légende sous le graphique pour chaque symbole, avec l’argument leg = ('texte1@texte2'), l’arobase servant à séparer les légendes, par exemple
+
+plot2d(x, Y, style = [-2, -1], leg = 'cosinus@sinus')
+Pour une échelle logarithmique, on utilise l’argument logflag = type où type est une chaîne de deux caractères, « n » (pour normal) ou « l » (pour logarithmique), le premier caractère correspondant à l’axe des x et le second à l’axe des y. Par exemple
+
+plot2d(x, y, logflag = 'nl') pour un axe des x linéaire et un axe des y logarithmique ;
+plot2d(x, y, logflag = 'll') pour avoir deux échelles logarithmiques.
+On peut choisir le type d’axe avec l’argument axesflag=n où n est un entier positif : 0 pour ne pas avoir d’axe, 1 pour des axes « classiques » se recoupant en bas à droite, 4 pour des axes « classiques » se coupant au centre, 5 pour des axes se coupant en (0, 0)…
+
+On peut définir le nombre de graduations et de sous-graduations des axes avec l’argument nax = [nx, Nx, ny, Ny] où Nx est le nombre de graduations de l’axe x, nx le nombre de sous-graduations…
+
+L’argument rect = [xmin, ymin, xmax, ymax] permet de limiter le tracé à la zone comprise dans le rectangle défini par les valeurs dans la matrice.
+
+La fonction polarplot réalise un tracé en coordonnées polaires. La fonction r(theta) se trace par la commande :
+
+polarplot(r,theta)
+où r et theta sont deux matrices de même dimension.
+
+
+ Carte d’un champ [modifier]
+Si x est un vecteur colonne de m éléments, y un vecteur colonne de n éléments et z une matrice m×n, alors la fonction
+
+grayplot(x, y, z)
+va associer une couleur à chaque valeur de z et tracer une carte de couleurs, chaque point (x(i), y(j)) ayant la couleur associée au coefficient z(i, j).
+
+Les niveaux de couleur sont indiqués par la fonction
+
+xset('colormap', cmap)
+où cmap est une matrice de trois colonnes dont chaque ligne contient la couleur associée à un niveau, sous la forme RVB (les éléments de la matrice allant de 0 à 1). La première ligne de la matrice correspond au plus bas niveau, la dernière ligne au plus haut. Cette matrice peut être générée de manière automatique par les fonctions colormap :
+
+graycolormap(n), où n est un entier, génère n niveaux de gris entre le noir et le blanc ;
+jetcolormap(n), où n est un entier, génère n niveaux de couleur entre le bleu et le rouge ;
+hotcolormap(n), où n est un entier, génère n niveaux de couleur entre le rouge et le jaune.
+On peut par exemple utiliser xset('colormap',graycolormap(32)) pour avoir 32 niveaux de gris. On peut réaliser un dégradé du noir vers le rouge avec
+
+cmap = graycolormap(32); cmap(:, 2:3) = 0 ou avec r = [0:32 / 31:32]' / 32; cmap = [r zeros(32, 2)]
+et un dégradé du bleu vers le blanc avec
+
+cmap = graycolormap(32); cmap(:, 2:3) = 1 ou avec r = [0:32 / 31:32]' / 32; cmap = [r ones(32, 2)]
+Les niveaux de couleur sont également utilisés lorsque l’on trace plusieurs courbes sur le même graphique. Dans ce cas-là, des dégradés ne fournissent pas un contraste permettant de distinguer facilement des courbes voisines ; on peut obtenir les niveaux de couleur par défaut avec get(sdf(), 'color_map').
+
+On peut tracer une courbe de niveaux avec la fonction
+
+contour2d(x, y, z, n)
+où n est le nombre de niveaux que l’on veut voir figurer ; on peut aussi donner les valeurs des niveaux z1, z2, …, zn par un vecteur
+
+contour2d(x, y, z, [z1,z2,...,zn])
+On peut également tracer un champ de vecteurs. Pour cela, il faut une matrice vx ayant les composantes selon x du champ de vecteur, une matrice vy ayant les composantes selon y de ce champ, et utiliser la fonction
+
+champ(x, y, vx, vy)
+Avec la fonction champ1, les vecteurs tracés ont tous la même longueur, la norme du champ est indiquée par la couleur du vecteur, suivant le principe exposé pour grayplot.
+
+
+ Tracé 3D [modifier]
+Scilab permet également le tracé de surfaces à trois dimensions (x, y, z). Si x est une matrice colonne de m éléments, y une matrice colonne de n éléments, et z une matrice m×n, alors la fonction
+
+plot3d(x, y, z)
+va tracer la surface des points (x(i), y(j), z(i, j)). S’il s’agit d’une surface représentative d’une fonction ƒ, on a
+
+z(i, j) = f(x(i), y(j)).
+Si ƒ est une fonction « externe » (par exemple définie par deff ou function), on peut définir z avec la fonction feval (voir plus haut), ou bien utiliser fplot3d(x, y, f).
+
+La fonction param3d(fx(t), fy(t), fz(t)) trace la courbe paramétrique ; t est un vecteur contenant les valeurs successives du paramètre.
+
+Les fonctions plot3d1, fplot3d1 et param3d1 permettent d’utiliser des niveaux de couleurs pour indiquer la valeur de z. L’utilisation est identique à celle de plot3d, mais les niveaux de couleur sont indiqués par la fonction
+
+xset('colormap', cmap)
+(voir ci-dessus).
+
+Le point de vue de la surface 3D est défini par deux angles en degrés, ?, rotation autour de l’axe des Z, et a, rotation autour de l’axe des Y (voir aussi Angles d'Euler) : plot3d(x, y, z, theta, alpha), param3d(x, y, z, theta, alpha)… ;
+
+plot3d(x, y, z, 0, 0) donne une vue de dessus, semblable aux cartes 2D, projection de la surface sur le planXY selon l’axe Z ;
+plot3d(x, y, z, 90, 0) donne une vue de face, projection de la surface sur le planXZ selon l’axe Y ;
+plot3d(x, y, z, 0, 90) donne une vue de côté, projection de la surface sur le planYZ selon l’axe X ;
+plot3d(x, y, z, 45, 45) est la vue par défaut, de type perspective isométrique.
+On peut également définir les limites des axes avec le mot-clef ebox :
+
+plot3d(x, y, z, ebox=[xmin, xmax, ymin, ymax, zmin, zmax])
+plot3d(x, y, z, theta, alpha, ebox=[xmin, xmax, ymin, ymax, zmin, zmax])
+
+ Représentation de données statistiques [modifier]
+Si x est un vecteur, la fonction histplot(n, x), n étant un entier, va découper l’intervalle de valeurs prises par les coefficients de x en n tranches d’égale largeur, et tracer l’histogramme de répartition des valeurs selon ces tranches. Si n est un vecteur dont les coefficients sont strictement croissants, les valeurs des coefficients de n servent à déterminer les tranches.
+
+Si x est une matrice, hist3d(x) trace un histogramme 3D tel que le parallélépipède situé en (i, j) a pour hauteur x(i, j). Comme pour toutes les fonctions de tracé en trois dimensions, on peut définir l’angle de vue avec ? et a.
+
+
+ Dessin [modifier]
+Il est possible de dessiner directement des figures géométriques sur le graphique.
+
+La fonction xpoly(x,y,'lines',1) permet de tracer un polygone fermé, x étant la liste des abscisses des sommets (sous la forme d'un vecteur ou d'une matrice) et y étant la liste des ordonnées des sommets (c'est une matrice de même dimension que x). La fonction xfpoly(x,y,'lines',1) permet de tracer un polygone rempli.
+
+La fonction xrect(x,y,l,h) trace un rectangle dont le point en haut à gauche est (x, y), de largeur l et de hauteur h. La fonction xfrect(x,y,l,h) trace un rectangle rempli.
+
+La fonction xstring(x,y,'chaîne') écrit la chaîne de caractère chaîne sur le graphique, le point en bas à gauche du texte étant au point (x,y).
+
+La fonction xarc(x,y,l,h,a1,a2) trace un arc d'ellipse compris dans le rectangle dont le point en haut à gauche est (x, y), de largeur l et de hauteur h. Chaque degré d'angle est divisé en 64 secteurs, l'arc part de l'angle trigonométrique a1×64 ° et va jusqu'à l'angle (a1+a2)×64 °. La fonction xfarc(x,y,l,h) trace un arc d'ellipse rempli.
+
+Pour changer les propriétés des traits des dessins, il faut utiliser la commande set('propriété',valeur). Les principales propriétés d'un objet sont :
+
+line_style : type de trait ; c'est un entier, 0 pour un trait plein, 2 pour des pointillés longs, trois pour des pointillés courts, 4 pour un trait d'axe (alternance trait-point)…
+thickness : épaisseur du trait, sous la forme d'un entier positif ;
+mark_size : dans le cas d'un tracé par marqueurs, taille des marqueurs.
+On peut aussi associer une variable à l'élément dessiné ; cela se fait avec la fonction
+variable = get('hdl')
+hdl signifiant handle (littéralement « poignée », intermédiaire d'action). Pour définir la propriété de cet élément, on fait
+
+variable.propriété = valeur
+Ces deux méthodes sont valables quel que soit l'objet (courbe, polygone, arc d'ellipse…).
+
+Par exemple
+
+xarc(0,1,0.5,0.5,0,360*64) // ellipse
+set('line_style',2) // pointillés
+ou bien
+
+xarc(0,1,0.5,0.5,0,360*64) // ellipse
+a=get('hdl')
+a.line_style=2 // pointillés
+
+ Mise en forme, axes et fenêtrage [modifier]
+La fonction xset permet de définir l’apparence :
+
+police des graduations et titres : xset('font', type, taille), où
+taille est un nombre désignant la taille des caractères, en unité arbitraire ;
+type est un nombre désignant le type de police : 1 pour les lettres grecques (police Symbol), 2–5 pour une police avec empattements type Times (2 pour des lettre romanes, 3 en italique, 4 en gras, 5 en gras italique) ; 6–9 pour une police sans empattement type Arial (6 pour des lettres romaines, 7 en italique, 8 en gras, 9 en gras italique) ;
+épaisseur des traits d’axe et du tracé : xset('thickness', e) où e est un nombre désignant l’épaisseur en unité arbitraire ;
+taille des marqueurs (le cas échéant, voir ci-après) avec xset('mark size', taille).
+Comme pour tous les objets graphiques, on peut changer les propriétés des axes en les affectant à une variable par la commande var=get('current_axes'). Les principales propriétés sont :
+
+x_location et y_location : prennent les valeurs 'top', 'middle' ou 'bottom' selon que l'on veut que l'axe soit en haut, passe par l'origine, ou soit en bas ;
+isoview : vaut 'on' si l'on veut que les échelles soient identiques sur les axes, 'off' si l'échelle est libre ;
+sub_ticks : matrice [nx,ny] où nx et ny est le nombr ede sous-graduation (il faut 4 sous-graduations pour que la graduation principale soit divisée en 5) ;
+Exemple
+
+a=get('current_axes')
+a.x_location='middle'
+a.y_location='middle'
+a.isoview='on'
+a.sub_ticks=[4,4]
+On peut placer plusieurs tracés côte à côte avec l’instruction subplot :
+
+subplot(m, n, i) place le tracé qui suit l’instruction dans la i e case (dans l’ordre de lecture européen) d’un tableau m×n ; le tracé peut comporter plusieurs instructions plot, xset, xtitle.
+La fonction xtitle('nom du graphique','axe des x', 'axe des y') met un titre au graphique et aux axe. La fonction titlepage('titre') met un titre au milieu du graphique. La fonction clf efface la fenêtre graphique.
+
+
+ Exemple [modifier]
+
+Exemple de graphique obtenu avec ScilabVoici le graphique que l’on obtient avec les instructions ci-dessous.
+
+clear; clf;
+
+deff('[z] = f(x, y)', 'z = sin(x) * cos(y)')
+
+xset('colormap', jetcolormap(32))
+
+x = %pi * [-1:0.05:1]';
+y = x;
+z = feval(x, y, f);
+
+subplot(2, 2, 1)
+grayplot(x, y, z)
+
+subplot(2, 2, 2)
+contour2d(x, y, z, 5)
+
+subplot(2, 2, 3)
+plot3d1(x, y, z, 0, 90)
+
+subplot(2, 2, 4)
+plot3d1(x, y, z, 70, 70)
+
+ Programmation [modifier]
+Scilab accepte un certain nombre d’instructions :
+
+exécution conditionnelle if condition then, …, else, …, end
+boucle itérative for variable = début : fin, …, end ou for variable = début : pas : fin, …, end
+boucle itérative antéconditionnée : while condition do, …, end ou while condition do, …, else, …, end
+Il est possible de définir des fonctions avec passage de paramètres. La fonction est un sous-programme avec ses variables propres, et qui peut contenir des boucles, des branchements conditionnels... Par exemple, pour définir une fonction f(x) :
+
+-->function [y] = f(x)
+--> …
+--> endfunction
+Le paramètre x est passé à la fonction f ; la valeur retournée par f sera celle qui est attribuée à y dans la fonction.
+
+On peut enregistrer l’environnement, c’est-à-dire l’ensemble des variables, dont notamment les fonctions, avec la commande save('fichier'). Ceci crée un fichier binaire (Scilab n’ajoute pas d’extension). Cet environnement peut être rechargé avec la fonction load('fichier').
+
+On peut également écrire les instructions dans un fichier texte, puis faire du copier/coller depuis l’éditeur de texte vers la ligne de commande de Scilab. Le code source peut contenir des commentaires introduits par deux barres de fraction //.
+
+
+ Environnement [modifier]
+Dans Scilab, l’environnement est l’ensemble des variables (y compris les fonctions) qui ont été définies ; l’environnement contient un certain nombre de variables prédéfinies. L’ensemble des variables est donné par la commande who.
+
+Lorsque l’on utilise une fonction, l’exécution de la fonction se fait dans un nouvel environnement, copie de l’environnement initial. Les variables qui y sont modifiées ne le sont pas dans l’environnement initial (on ne travaille qu’en variables locales), seul le résultat de la fonction est renvoyé.
+
+On peut ouvrir à dessein un environnement, avec la fonction pause ; l’invite devient alors -1->, indiquant que l’on est dans le premier niveau de sous-environnement. On est également dans une telle configuration lorsque l’on interrompt l’exécution d’une fonction (par exemple avec la combinaison de touches CTRL+C). Pour revenir à l’environnement précédent, il faut utiliser la commande return.
+
+Si l’on utilise return sans argument, les variables ne sont pas transmises à l’environnement père. Il est possible de transmettre les variables a1, a2, …, an dans l’environnement père, avec la syntaxe (x1, x2, …, xn)=return(a1, a2, …, an), où x1, x2, …, xn sont les noms des variables dans l’environnement père.
+
+La commande clear permet de « nettoyer » un environnement, c’est-à-dire de supprimer toutes les variables.
+
diff --git a/modules/string/tests/unit_tests/tokens.dia.ref b/modules/string/tests/unit_tests/tokens.dia.ref
new file mode 100755
index 000000000..7e5e5f6a7
--- /dev/null
+++ b/modules/string/tests/unit_tests/tokens.dia.ref
@@ -0,0 +1,65 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//===============================
+// unit tests tokens
+//===============================
+if tokens('This is a character string') <> ['This'; 'is'; 'a'; 'character'; 'string'] then bugmes();quit;end
+if tokens('SCI/demos/scicos','/') <> ['SCI';'demos';'scicos'] then bugmes();quit;end
+if tokens('y=a+b*2',['=','+','*']) <> ['y';'a';'b';'2'] then bugmes();quit;end
+if length(tokens('',['=','+','*'])) <> 0 then bugmes();quit;end
+//===============================
+if tokens(' ',' ') <> [] then bugmes();quit;end
+//===============================
+s = tokens(' '+ascii(9)+' ',ascii(9));
+if s <> [' '; ' '] then bugmes();quit;end
+//===============================
+s = tokens(' '+ascii(9)+' ',' ');
+if s <> ascii(9) then bugmes();quit;end
+//===============================
+s = tokens(' '+ascii(9)+' ',ascii(9));
+if s <> [' '; ' '] then bugmes();quit;end
+//===============================
+s = tokens(' '+ascii(9)+' ',' ');
+if s <> ascii(9) then bugmes();quit;end
+//===============================
+str = "世界您好";
+ch = "界";
+r = tokens(str,ch);
+ref = ["世";"您好"];
+if and(ref <> r) then bugmes();quit;end
+//===============================
+str = "азеазея";
+ch = "з";
+r = tokens(str,ch);
+ref = ["а";"еа";"ея"];
+if and(ref <> r) then bugmes();quit;end
+//===============================
+str = "ハロー・ワールド";
+ch = "ワ";
+r = tokens(str,ch);
+ref = ["ハロー・";"ールド"];
+if and(ref <> r) then bugmes();quit;end
+//===============================
+str = "เฮลโลเวิลด์";
+ch = "ฮ";
+r = tokens(str,ch);
+ref = ["เ";"ลโลเวิลด์ "];
+if and(ref <> r) then bugmes();quit;end
+//===============================
+str = "حريات وحقوق";
+ch = "و";
+r = tokens(str,ch);
+ref = ["حريات";"حق";"ق"];
+if and(ref <> r) then bugmes();quit;end
+//===============================
+str = "תוכנית";
+ch = "ו";
+r = tokens(str,ch);
+ref = ["ת";"כנית"];
+if and(ref <> r) then bugmes();quit;end
+//===============================
diff --git a/modules/string/tests/unit_tests/tokens.tst b/modules/string/tests/unit_tests/tokens.tst
new file mode 100755
index 000000000..2d6da91b8
--- /dev/null
+++ b/modules/string/tests/unit_tests/tokens.tst
@@ -0,0 +1,67 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//===============================
+// unit tests tokens
+//===============================
+if tokens('This is a character string') <> ['This'; 'is'; 'a'; 'character'; 'string'] then pause,end
+if tokens('SCI/demos/scicos','/') <> ['SCI';'demos';'scicos'] then pause,end
+if tokens('y=a+b*2',['=','+','*']) <> ['y';'a';'b';'2'] then pause,end
+if length(tokens('',['=','+','*'])) <> 0 then pause,end
+//===============================
+if tokens(' ',' ') <> [] then pause,end
+//===============================
+s = tokens(' '+ascii(9)+' ',ascii(9));
+if s <> [' '; ' '] then pause,end
+//===============================
+s = tokens(' '+ascii(9)+' ',' ');
+if s <> ascii(9) then pause,end
+//===============================
+s = tokens(' '+ascii(9)+' ',ascii(9));
+if s <> [' '; ' '] then pause,end
+//===============================
+s = tokens(' '+ascii(9)+' ',' ');
+if s <> ascii(9) then pause,end
+//===============================
+str = "世界您好";
+ch = "界";
+r = tokens(str,ch);
+ref = ["世";"您好"];
+if and(ref <> r) then pause,end
+//===============================
+str = "азеазея";
+ch = "з";
+r = tokens(str,ch);
+ref = ["а";"еа";"ея"];
+if and(ref <> r) then pause,end
+//===============================
+str = "ハロー・ワールド";
+ch = "ワ";
+r = tokens(str,ch);
+ref = ["ハロー・";"ールド"];
+if and(ref <> r) then pause,end
+//===============================
+str = "เฮลโลเวิลด์";
+ch = "ฮ";
+r = tokens(str,ch);
+ref = ["เ";"ลโลเวิลด์ "];
+if and(ref <> r) then pause,end
+//===============================
+str = "حريات وحقوق";
+ch = "و";
+r = tokens(str,ch);
+ref = ["حريات";"حق";"ق"];
+if and(ref <> r) then pause,end
+//===============================
+str = "תוכנית";
+ch = "ו";
+r = tokens(str,ch);
+ref = ["ת";"כנית"];
+if and(ref <> r) then pause,end
+//=============================== \ No newline at end of file